SNAT/DNAT

1. SNAT/DNAT

Vicente Camilo
modem

(usa Slackware)

Enviado em 04/09/2008 - 23:14h

Boa noite galera!

Estou estudando firewall em linux usando o iptables. Estava progredindo até me deparar com uma situação que me intriga.

Ao estudar, entendi que o roteador-linux substitui o endereço de origem de um pacote vindo de uma maquina da rede local que entra pela "eth0", para o seu próprio endereço de ip válido, em uma outra interface "eth1", atravéz da chain POSTROUTING, fazendo com que pareça que o pacote tenha se originado do próprio roteador e nao da maquina da rede local.

Também, que quando um pacote vem da internet para a rede local, ele volta com o endereço de destino o ip da "eth1" válido, do roteador-linux, e que o mesmo o substitui pelo endereço de destino, o ip da maquina da rede local, atravéz da chain PREROUTING, fazendo parecer que o pacote tenha se originado da "eth0" no roteador, chegando ao seu destino.

mas olhem essa situação:

1º- iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2

2º- iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.200.217.40-200.200.217.50

3º- iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50

Na primeira regra eu vejo lógica pois o pacote entrante, vindo da net a caminho da rede local, terá seu ip válido de destino substituido pelo ip da rede local. E o pacote está sendo tratado na chain adequada, com o alvo correto.

Mas, na segunda olhem o que aconteceu. Na mesma chain, está sendo substituido o endereço de ip local para o ip válido na net. Isso pra mim não tem lógica pois na chain PREROUTING, são tratados pacotes que chegam da net a caminho da rede local, e não pacotes que vem da rede local saindo para a net.

E de uma olhada na terceira regra que essa sim parece lógica pra mim, pois o pacote que sairá da rede local para a net, será tratado na chain adequada a essa funçao.

Também vejo a situação da segunda regra sendo aplicada para o redirecionamento para proxy transparente.
olhem a regra a baixo.

iptables -A PREROUTING -t nat -s 10.0.33.0/24 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128

Eu só quero entender porque colocam na chain PREROUTING os pacotes para serem tratados que saem da rede local para a net, sendo que essa chain é para o tratamento de pacotes que vem da net para a rede local.

Por favor, preciso muito entender isso para poder elaborar regras lógicas e eficientes, e assim poder continuar meus estudos e me aperfeiçoar. Quando tiver uma boa experiência, farei um tuto legal de iptables.

Pedi para pessoas que trabalham com iptables mas nao souberam me responder...! :/


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts