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

Parte 4: Lista nat OUTPUT

Observe que alterações de destino, como porta ou IP, só podem ser realizados no gancho PREROUTING. Infelizmente, porém, existe um problema aí, pois observe que pacotes gerados por processos locais não passam por este gancho.

Para evitar que pacotes gerados localmente fossem condenados a não ter meios de alterar parâmetros de destino, o nat também atua no gancho OUTPUT.

As regras do nat OUTPUT tem o mesmo propósito e a mesma sintaxe das do gancho PREROUTING, com a única diferença de operar pacotes originados por processos locais.

Eu particularmente uso isto para redirecionar alguns tráfegos SSH. Por exemplo, um dos servidores que administro, para diminuir as tentativas de força bruta, está operando o SSH na porta 2215 e não na porta 22 padrão. Para evitar o incômodo de ter que por -p 2215 cada vez que executo o meu cliente:

$ ssh meuServidor -p 2215

Eu optei por inserir a seguinte regra de iptables:

iptables -t nat -A OUTPUT -p tcp -d IPDOMEUSERVIDOR --dport 22 -j DNAT --to :2215

Assim não preciso ficar me lembrando de por -p no ssh, no scp, no cvs, enfim...

Faça um teste no seu Linux (como root):

iptables -t nat -I OUTPUT -p tcp --dport 90 -j DNAT --to :80

Depois desta regra você pode acessar o VOL também desta forma:

http://www.vivaolinux.com.br:90/

O iptables se encarrega de trocar a porta 90 para a 80 e destrocá-la quando o pacote retornar, sem que precise de uma regra específica para isto (este comportamento de desfazer a troca sozinho não é só da lista OUTPUT, mas em todas. Em algumas ocasiões, porém, quando se estiver realizando nat 1:1 deve-se colocar regras de ida e de retorno).

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

Iptables protege contra SYN FLOOD?

Mecanismo de firewall e seus conceitos

Criptografia chave simétrica de bloco e de fluxo

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

Sinais em Linux

Usando o PF - Packet Filter

Shorewall, uma excelente opção para firewall Linux

IPtables - Trabalhando com Módulos

Incremente o iptables com patch-o-matic

Iptables + Layer7

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