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...! :/