Pular para o conteúdo

Estrutura do IPTables 2: a tabela nat

Quais os poderes da tabela nat existente no iptables? E as listas PREROUTING, POSTROUTING, para que servem?
Elgio Schlemer elgio
Hits: 253.005 Categoria: Linux Subcategoria: Firewall
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Introdução: ganchos do netfilter

Este artigo é uma continuação do Estrutura do iptables.

Um pacote passa por várias etapas dentro do kernel do Linux, dependendo se ele for roteado pela máquina, destinado a ela ou se este pacote foi, na verdade, gerado pelo ip da máquina. O netfilter introduziu "ganchos", pontos ao longo do ciclo de vida de um pacote, onde o mesmo pode ser avaliado por regras de firewall. A figura 1 destaca estes pontos.


Figura 1


Os conjuntos de regras são necessariamente agrupados em tabelas. Uma tabela praticamente define o seu poder, o que pode ou o que não pode realizar com o pacote e uma tabela possui vários conjuntos de regras. Ao todo são três tabelas principais existentes no iptables:
  • filter;
  • nat;
  • mangle.

A tabela filter, responsável por filtragens de pacotes, foi descrita no artigo 1, sendo que este procura descrever a tabela nat.

As regras da tabela nat tem o poder de alterar características de origem ou de destino de um pacote. Como característica de origem entende-se ip de origem ou porta de origem e como características de destino tem-se o ip destino e porta destino.

A tabela nat possui três conjuntos de regras, de acordo com os ganchos da figura 1: PREROUTING, POSTROUTING e OUTPUT.

Atualizado em Novembro de 2013: a partir do kernel 2.6.36 foi inserido a lista INPUT na tabela nat. Ainda não descobri o real sentido disto, pois aparentemente não teria utilidade. Um email enviado para o git do kernel explica uma determinada situação envolvendo redes com ips semelhantes, mas ainda cabe se aprofundar no assunto. Na Internet chove pessoas perguntando porque e outros afirmando que não existe. Mas existe sim. Só a partir do kernel 2.3.36 (????)
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   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

Parâmetros interessantes do scanf e do printf em C

Estrutura do Iptables

Túneis cifrados com SSH

Criptografia assimétrica com o RSA

Iptables protege contra SYN FLOOD?

Shorewall - Firewall passo a passo no Linux

Gerenciando regras de Iptables com Firewall Builder (parte 2)

Como criar um firewall de baixo custo para sua empresa

Addon URL Filter - Filtrando URLs no seu firewall

Dominando o iptables (parte 1)

#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!
#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.
#19 Comentário enviado por donr em 06/05/2015 - 12:06h

Excelente artigo

Contribuir com comentário

Entre na sua conta para comentar.