Estrutura do IPTables 2: a tabela nat

Quais os poderes da tabela nat existente no iptables? E as listas PREROUTING, POSTROUTING, para que servem?

[ Hits: 248.948 ]

Por: Elgio Schlemer em 20/07/2007 | Blog: https://profelgio.duckdns.org/~elgio


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).

Página anterior     Próxima página

Páginas do artigo
   1. Introdução: ganchos do netfilter
   2. Lista nat PREROUTING
   3. Lista nat POSTROUTING
   4. Lista nat OUTPUT
   5. Exemplo: proxy transparente
   6. Conclusão
   7. Leituras recomendadas
Outros artigos deste autor

255.255.255.0: A matemática das máscaras de rede

Armazenamento de senhas no Linux

Estrutura do Iptables

Cuidado com números em Ponto Flutuante

Mecanismo de firewall e seus conceitos

Leitura recomendada

Entendendo TCP/IP (Parte 5) - Portas TCP/UDP

Firewall iptables em cinco minutos e compartilhamento de conexão

Dominando o Iptables (parte 2)

GUI para Iptables via web, linha de comando e outros

Fail2ban - Bloqueio de Peer-to-Peer (Ares, uTorrent) e Proxies (UltraSurf e Tor)

  
Comentários
[1] Comentário enviado por edirlf em 20/07/2007 - 02:58h

Cara, que massa seu artigo. Muito bom mesmo, Parabéns.
Já tá nos favoritos.

[2] Comentário enviado por adrianoturbo em 20/07/2007 - 08:41h

Show de bola a descrição de tabelas do Iptables bem explicada.

Parabéns amigo.

[3] Comentário enviado por balani em 20/07/2007 - 11:46h

muito bom, são informações muito importantes a serem relevadas antes de confeccionar um script. Parabens.

[4] Comentário enviado por marcelows em 24/07/2007 - 00:50h

Artigo muito bem escrito... Valeu Prof...

Uma dúvida existe uma forma de testar uma regra antes de realmente efetiva-la? Algo do tipo se estiver roteando um pacote a um outro servidor e este nao responder eu pulo para uma outra regra...

Obs.: Desculpe-me se a pergunta for meio tola.... Fui aluno seu na minha graduacao em ciencias da computador.

Desde ja agradeco... E parabens pelo artigo...

[5] Comentário enviado por peace em 24/07/2007 - 16:44h

Li seus dois artigos sobre iptables e realmente devo lhe dar os parabéns.
Muito bem escrito e vai nos pontos que realmente importam para começar a entender sobre iptables e construir firewalls (que não é uma tarefa das mais fáceis).
Explicar o conceito é muito mais importante do que apenas listar os comandos, e você fez isto aqui muito bem.
Estou entendendo e me familiarizando muito mais com iptables e suas tabelas, que até pouco tempo faziam alguma confusão na minha cabeça.

Mais uma vez, parabéns pelo excelente artigo.

Um abraço,

Tiago

[6] Comentário enviado por Bique em 25/07/2007 - 06:37h

Parabens pelo artigo, afinal por vezes implementamos e não conhecemos algumas funcionalidades básicas.

Um abraço

[7] Comentário enviado por capitainkurn em 29/07/2007 - 13:08h

Ótimo artigo, muito didático... Eu mesmo que não sou novo toda hora erro meus scripts por trocar o PRE por POST e vice-versa. Tendo que sempre consultar o pai-dos-burros (Guia foca cap. 10 módulo avançado), não sou bom em memorizar coisas repetitivas.

[8] Comentário enviado por removido em 30/07/2007 - 18:22h

Parabéns pelo artigo ! :-)

[9] Comentário enviado por kabalido em 04/12/2007 - 19:00h

Sensacional cara. Parabéns!!! Com certeza um dos melhores artigos que já li aqui no VOL.
Esse artigo me tirou muitas dúvidas sobre iptables.
Parabéns mais uma vez.

[10] Comentário enviado por irado em 01/09/2008 - 16:24h

wowwww... só na primeira olhada que dei na figura de estrutura eu compreendi COMO se processa a filtragem de pacotes, que pega quem... caramba, parabéns pra vc é pouco, que tal uma cerva geladinha? eu pago, não se preocupe, afinal tô convidando é pq me fez um grande bem os seus dois artigos (nem vou falar naquêle de mascara de rede - tão simples que ATÉ EU consegui entender - risos).

parabéns grandão, garoto :) quando crescer vou querer saber tanto quanto vc.

[11] Comentário enviado por rogerio_gentil em 10/03/2009 - 11:16h

Parabéns Elgio. Este artigo está sensacional. Gostei muito do primeiro artigo (1ª parte) sobre a tabela filter. Porém, este sobre a tabela nat é o que eu estava buscando para compreênde-la. Gostaria de enfatizar à você e a todos os contribuidores de artigos a importância de descrever as refências. Nada vem da cabeça! Tudo tem um ponto de partida ... e o meu começou aqui!
Abraços.

[12] Comentário enviado por fernandofranco em 05/11/2009 - 16:25h

Amigo como faço pra proteger essa regra contra ataques. Estou recebendo um mote de virus quando faço esse direcionamento.

Por favor, preciso de ajuda.......

##########################
## TABELA NAT ##
##########################
### DIRECIONAMENTO SQL 1433 ##
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1433 -j DNAT --to 192.168.0.101
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 1433 -j DNAT --to 192.168.0.101

[13] Comentário enviado por schenkmh em 15/10/2010 - 10:23h

Olá Elgio

Em primeiro lugar parabéns pelos artigos. Li alguns e estão me ajudando muito a ter uma compreensão melhor sobre firewall e iptables. Gostaria de me aprofundar mais sobre as tabelas filter, nat e mangle. Principalmente sobre a tabela mangle que me parece um assunto mais avançado no que diz respeito aos recursos do iptables.
Não encontrei nenhum material que explique a fundo esta tabela, teria alguma dica? Como posso entender melhor suas funções?

Agradeço a atenção, abraço

Marco



[14] Comentário enviado por wagneralves em 08/05/2012 - 12:58h

Parabéns pelo artigo!

[15] Comentário enviado por ntnbrito em 13/05/2013 - 10:36h

Muito bom! Parabéns cara.


ntnbrito
http://www.cursodelinux.org

[16] Comentário enviado por gargamel em 21/05/2013 - 10:35h

http:/ /www.gilix.com.br/rafael_cambui/tag/configuracao-de-um-firewall-com-iptables/

[17] Comentário enviado por elgio em 05/11/2013 - 21:46h

Estranhamente a tabela nat passou a atuar no gancho INPUT a partir do kernel 2.6.36.
Ainda não consegui entender qual a necessidade disto. Se alguém souber, fico grato.

[18] Comentário enviado por elgio em 05/11/2013 - 21:47h


[16] Comentário enviado por gargamel em 21/05/2013 - 10:35h:

http:/ /www.gilix.com.br/rafael_cambui/tag/configuracao-de-um-firewall-com-iptables/


O item "Proteção contra Syn Flood" deve ser sumariamente REMOVIDO deste artigo. É um "atentado" ( # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT)

Referência: http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD

[19] Comentário enviado por donr em 06/05/2015 - 12:06h


Excelente artigo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts