Mapeamento de portas Iptables de dois PCs para um

2

Temos 3 PCs, dois deles 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 do PC1 e do PC2 para o PC3.

Mas há o problema: o encaminhamento de porta do iptables funciona bem no PC1 ou no PC2, mas apenas no caso do PC3 ter PC1 ou PC2 como gateway.

Regras de 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 pergunta é: podemos ter mapeamento de porta do PC1 e do PC2 independentemente das configurações do gateway no PC3?

Obrigado antecipadamente.

    
por Anton 01.07.2012 / 10:43

2 respostas

2

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 ser NATted. E você precisa mudar o endereço de destino para que o pacote vá para o 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
    
por 01.07.2012 / 13:43
1

Dê ao PC3 outro endereço IP e use as regras DNAT no PC1 e no PC2 para os diferentes endereços IP do PC3.

No PC3, use "regra ip" para rotear pelo endereço IP de origem, conforme mostrado por: link

    
por 07.07.2012 / 20:08