
Temos 3 PCs, dois deles estão conectados à internet (ambos possuem 2 NIC)
PC1:
eth0 - 1.0.0.1 (external IP)
eth1 - 172.16.0.1 (internal IP)
PC2:
eth0 - 1.0.0.2 (external IP)
eth1 - 172.16.0.2 (internal IP)
PC3:
eth0 - 172.16.0.3 (internal IP)
Agora queremos encaminhar a porta 80 de PC1 e PC2 para PC3.
Mas aí está o problema: o encaminhamento de porta do iptables funciona bem no PC1 ou PC2, mas apenas no caso de PC3 ter PC1 ou PC2 como gateway.
Regras do IPtables (para PC1):
iptables -t nat -A PREROUTING -p tcp -d 1.0.0.1 --dport 80 -j DNAT --to-destination 172.16.0.3:80
iptables -A FORWARD -p tcp -d 172.16.0.3 --dport 80 -j ACCEPT
Então, a questão é: podemos ter mapeamento de portas tanto do PC1 quanto do PC2, independentemente das configurações do gateway no PC3?
Agradeço antecipadamente.
Responder1
Você apenas reescreveu o destino.
Você precisa alterar o endereço de origem para PC1 ou PC2, para que os pacotes de resposta também possam receber NAT. E você precisa alterar o endereço de destino para que o pacote vá para PC3. Reescrever a origem e o destino é chamado de "NAT duplo".
Você precisa fazer o DNAT na cadeia PREROUTING e o SNAT na cadeia POSTROUTING. Assim (para PC1):
iptables -t nat -A PREROUTING -p tcp -m tcp -d 1.0.0.1 --dport 80 -j DNAT \
--to-destination 172.16.0.3:80
iptables -t nat -A POSTROUTING -p tcp -m tcp -d 172.16.0.3 --dport 80 \
-j SNAT --to-source 172.16.0.1
Responder2
Dê outro endereço IP ao PC3 e use regras DNAT em PC1 e PC2 para os diferentes endereços IP de PC3.
No PC3 use "ip regra" para rotear por endereço IP de origem, conforme mostrado por:http://lartc.org/howto/lartc.rpdb.multiple-links.html