Não consigo acessar meu IP público da rede local

1

Eu uso uma máquina Linux com duas conexões de internet diferentes como o gateway padrão da rede local. Cada conexão à Internet possui seu próprio endereço IP público. Eu usei o roteamento de origem com o comando "ip rule" para balancear o tráfego de saída entre essas duas conexões de internet.

eth0 é a rede local. eth1 e ppp0 estão conectados à internet. a própria máquina linux usa eth1 para se conectar à internet.

Tudo funciona bem, exceto que não consigo acessar o IP público ppp0 da rede local:

ping PPP0-PUBLIC-IP #works fine from the linux machine
ping PPP0-PUBLIC-IP #works fine from outside network
ping PPP0-PUBLIC-IP #**fails** from other machines on local network

Além disso:

$ip rule ls

0:  from all lookup local 
32763:  from x.x.x.x lookup Home 
32765:  from 192.168.0.208/28 lookup Home 
32766:  from all lookup main 
32767:  from all lookup default

$ip route show table local

...
local x.x.x.x dev ppp0  proto kernel  scope host  src x.x.x.x 
...

Onde x.x.x.x é o endereço IP público ppp0. O que eu estou fazendo errado aqui? Por que não consigo pingar o endereço IP pulic da rede local, mas posso fazer o ping da rede externa?

Atualizar :     Eu uso dois comandos iptables para configurar o NAT. Não tenho certeza se é o caminho certo, mas funciona para mim:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Atualização 2 :     Quando eu faço o ping do endereço IP público ppp0 de uma máquina na rede local, a saída tcpdump no gateway indica que os pacotes chegam corretamente da rede local, mas parece que o kernel não os está entregando para a camada de aplicação.

    
por Mohammad 15.03.2012 / 17:52

1 resposta

1

Você precisa usar NAT hairpin nesse cenário. Observe que o PCI-DSS não permite esse tipo de regra de NAT.

    
por 15.03.2012 / 19:00