Estrutura do IPTables 2: a tabela nat
Quais os poderes da tabela nat existente no iptables? E as listas PREROUTING, POSTROUTING, para que servem?
Parte 5: Exemplo: proxy transparente
A tabela nat permite fazer praticamente o que se quer com um pacote, trocando ip e ou porta. Em roteadores que fazem NAT para seu IP público, é na tabela nat que se coloca as regras para realizar isto, seja estático ou seja dinâmico (também chamado de mascaramento de ip). Contudo, ela também é útil para diversas outras coisas, como proxy transparente.
A porta de um proxy http é, tipicamente, 3128. Em uma rede que possui proxy e que os clientes precisam utilizá-lo, cada navegador precisaria estar configurado para usar o proxy do IP X na porta 3128. Contudo a técnica de proxy transparente permite que não se faça esta configuração. Cada navegador "pensa" que acessa a Internet na porta 80, porém, quando o pacote passa pelo roteador, uma regra de iptables troca o ip destino pelo ip do proxy e a porta destino por 3128:
iptables -t nat -A PREROUTING -p tcp -s 10.1.0.0/24 --dport 80 -j DNAT --to 10.1.0.1:3128
Sempre que o origem for 10.1.0.0/24 (clientes que devem passar pelo proxy) e a porta de destino por 80, não importando o ip de destino, o pacote será enviado para 10.1.0.1 (ip do proxy) na porta 3128. Aí ele cai no proxy querendo ou não. Se o serviço de proxy está executando na própria máquina onde se encontra o firewall, o seguinte comando tem o mesmo efeito:
iptables -t nat -A PREROUTING -p tcp -s 10.1.0.0/24 --dport 80 -j REDIRECT --to-port 3128
Implementar um proxy transparente ainda exige configurações específicas do Squid, além de necessitar de um DNS (proxy normal, não transparente, nem precisa de DNS, pois o navegador sabe que tem proxy e nem o domínio ele se aventura a tentar resolver).
A porta de um proxy http é, tipicamente, 3128. Em uma rede que possui proxy e que os clientes precisam utilizá-lo, cada navegador precisaria estar configurado para usar o proxy do IP X na porta 3128. Contudo a técnica de proxy transparente permite que não se faça esta configuração. Cada navegador "pensa" que acessa a Internet na porta 80, porém, quando o pacote passa pelo roteador, uma regra de iptables troca o ip destino pelo ip do proxy e a porta destino por 3128:
iptables -t nat -A PREROUTING -p tcp -s 10.1.0.0/24 --dport 80 -j DNAT --to 10.1.0.1:3128
Sempre que o origem for 10.1.0.0/24 (clientes que devem passar pelo proxy) e a porta de destino por 80, não importando o ip de destino, o pacote será enviado para 10.1.0.1 (ip do proxy) na porta 3128. Aí ele cai no proxy querendo ou não. Se o serviço de proxy está executando na própria máquina onde se encontra o firewall, o seguinte comando tem o mesmo efeito:
iptables -t nat -A PREROUTING -p tcp -s 10.1.0.0/24 --dport 80 -j REDIRECT --to-port 3128
Implementar um proxy transparente ainda exige configurações específicas do Squid, além de necessitar de um DNS (proxy normal, não transparente, nem precisa de DNS, pois o navegador sabe que tem proxy e nem o domínio ele se aventura a tentar resolver).
Já tá nos favoritos.