Mapeamento de porta Iptables de dois PCs para um

Mapeamento de porta Iptables de dois PCs para um

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

informação relacionada