(Originalmente perguntado no StackOverflow. Obrigado Ken White por me redirecionar aqui.)
Ubuntu 16.04 amd64 com 3 NICs
NIC1: IP externo $WAN_IP
NIC2: LAN interna $LAN_IP
NIC3: Infraestrutura LAN $INF_IP
(a LAN de infra-estrutura é onde todos os servidores residem, propositadamente longe de computadores pessoais e desktops)
Desejo encaminhar pedidos de encaminhamento da NIC1 e NIC2 para um servidor específico na NIC3. Eu sou capaz de fazer isso e tudo funciona corretamente. Meu problema é que não consigo definir com confiança o campo --to-source
no iptables.
Isso é o que eu tenho até agora:
iptables -A PREROUTING -t nat -p udp -d $WAN_IP --dport 1194 -j DNAT --to-destination 192.168.26.105 # VPN Server on the $INF_IP subnet
iptables -A PREROUTING -t nat -p udp -d $LAN_IP --dport 1194 -j DNAT --to-destination 192.168.26.105
iptables -A PREROUTING -t nat -p udp -d $INF_IP --dport 1194 -j DNAT --to-destination 192.168.26.105
# The above code routes port 1194:udp (openvpn) to the VPN Server 26.105 properly
# The -j SNAT below is where I encounter problems
iptables -A POSTROUTING -t nat -p udp -m udp -s 192.168.26.105 --dport 1194 -j SNAT --to-source ????
O acima ???? no POSTROUTING -j SNAT
é onde me deparo com o problema. Eu tenho 3 IPs potenciais que eu posso definir isso, e não há maneira confiável de configurá-lo. Se eu configurá-lo para $WAN_IP
, qualquer coisa em $LAN_IP
e $INF_IP
receberá os pacotes de origem incorretos.
Como posso usar o iptables (ou alternativa) para definir corretamente o endereço SOURCE
, independentemente de qual interface o pedido venha?
Obrigado em avançado.