Encaminhando tudo, desde IP DMZ externo para IP NAT usando iptables

Encaminhando tudo, desde IP DMZ externo para IP NAT usando iptables

Eu sei que há muitas perguntas sobre isso, mas ainda estou lutando para fazê-lo funcionar.

Eu tenho um firewall que possui 3 IPs externos. (IPs foram alterados aleatoriamente por segurança)

eth0      Link encap:Ethernet  HWaddr 50:46:5d:64:ed:e4  
          inet addr:51.215.232.147  Bcast:51.215.232.159  Mask:255.255.255.240
          inet6 addr: fe80::5246:5dff:fe64:ede4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70219084 errors:0 dropped:17443 overruns:0 frame:0
          TX packets:63956103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51508818511 (51.5 GB)  TX bytes:27933240304 (27.9 GB)

eth0:1    Link encap:Ethernet  HWaddr 50:46:5d:64:ed:e4  
          inet addr:51.215.232.148  Bcast:51.215.232.159  Mask:255.255.255.240
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 50:46:5d:64:ed:e4  
          inet addr:51.215.232.150  Bcast:51.215.232.159  Mask:255.255.255.240
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

E eu tenho estas regras simples:

# Generated by iptables-save v1.4.10 on Sat Mar  3 14:48:42 2012
*filter
:INPUT ACCEPT [13766:4986720]
:FORWARD ACCEPT [992:122980]
:OUTPUT ACCEPT [11894:5582822]
-A FORWARD -s 172.16.0.0/16 -o eth0 -j ACCEPT 
-A FORWARD -d 172.16.0.0/16 -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Sat Mar  3 14:48:42 2012
# Generated by iptables-save v1.4.10 on Sat Mar  3 14:48:42 2012
*nat
:PREROUTING ACCEPT [77:8206]
:INPUT ACCEPT [48:6367]
:OUTPUT ACCEPT [55:3300]
:POSTROUTING ACCEPT [55:3300]
-A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.10.0.0/16 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE 
COMMIT
# Completed on Sat Mar  3 14:48:42 2012

Então, quero encaminhar tudo de 51.215.232.150 para o IP interno 172.16.5.218.

Então pensei que isso funcionaria:

iptables  -t nat -I PREROUTING -p tcp -d 51.215.232.150 -j DNAT --to 172.16.5.218

Mas infelizmente não.

Desde já, obrigado. Eduardo

Responder1

Normalmente eu diria que você precisa de uma regra FORWARD correspondente para realmente permitir o tráfego através da tabela FILTER:

iptables  -A FORWARD -p tcp -d 172.16.5.218 -j ACCEPT

Mas sua política na tabela FORWARD já está ACCEPT e não há regras REJECT ou DROP, então ela deve passar por OK.

Tente adicionar uma regra TRACE para ver para onde o pacote está indo:

iptables -t raw -I PREROUTING -p tcp -d 51.215.232.150 -j TRACE

Além disso, como você está testando? Você consegue ver o tráfego realmente chegando à caixa?

tcpdump -lnn -i eth0 host 51.215.232.150

informação relacionada