Você está na página 1de 16

1/6/2013

NAT e Tabelas do Iptables


Prof. Alexandre Beletti

NAT
Network Address Translation
Segundo Ueda (IME-USP), uma mquina com
endereo IP reservado no pode participar da
Internet, no existiro rotas de retorno.
O Mascaramento resolve isso, desde que
exista ao menos uma interface da rede
privada com um endereo oficial, quer dizer
rotevel

1/6/2013

NAT
O mascaramento consiste em utilizar uma
mquina com IP rotevel como Gateway para
a Internet (ou outra rede...)
Essa mquina ir substituir o endereo do
remetente no cabealho IP de cada pacote por
ela repassado pelo seu endereo rotevel
Dessa forma os pacotes enviados pelo
Gateway podero facilmente ser roteados de
volta

NAT
No retorno dos pacotes o Gateway destroca os
endereos dos pacotes pelos endereos da
rede interna
Como o Gateway sabe se o pacote que
recebeu da Internet para ele ou para uma
mquina da rede interna?
O Gateway aloca uma porta exclusiva para
cada conexo TCP gerada por um cliente da
rede interna.

1/6/2013

NAT
Uma tabela mantida associando essa porta
nica com o IP e a porta de origem da conexo
Os pacotes gerados pelo cliente ao passarem
pelo gateway tero tanto o IP de origem
quanto a porta de origem trocados

NAT Tipos de Traduo


Segundo Bernal (POLI-USP), existem 2 tipos de
traduo:
Traduo 1:1 -> Para cada endereo local
traduzido para um IP distinto vlido ESTTICA
Traduo N:1 (mascaramento) -> Vrios
endereos so traduzidos para um nico IP DINMICA

1/6/2013

NAT Traduo 1:1

NAT Traduo N:1

1/6/2013

Modelo TCP/IP
O nvel de APLICAO, com os protocolos FTP,
HTTP, etc;
O nvel de TRANSPORTE, com seus pacotes UDP
e TCP, dentre outros;
O nvel de REDE, responsvel pelo roteamento,
onde se tem o IP na sua verso 4 como mais
significativo;
O nvel FSICO no faz parte do modelo de
camadas TCP/IP, pois restrito ao fabricante da
placa.

Classificao do pacote
Quadro = Camada de Enlace (modelo TCP/IP)
Datagrama = Camada de Rede (TCP/IP)
Pacote = Camada Transporte (TCP/IP)
O IPTABLES atua nas camadas de Rede (IP de
origem/destino) e Tranporte (porta de
origem/destino)

1/6/2013

NAT e Iptables
Segundo Elgio (ULBRA), temos que entender
como um pacote IP tratado pelo kernel do
Linux
A prxima figura ilustra o ciclo de vida de um
pacote IP dentro do Kernel do Linux

Pacote IP Kernel 2.4 - Linux

1/6/2013

Ganchos do Netfilter
Segundo Elgio (ULBRA), o netfilter introduziu
ganchos, ou pontos, ao longo do ciclo de vida
de um datagrama IP
Observe a prxima figura e veja os ganchos e
o que pode ocorrer em cada ponto (nos
prximos slides aps a figura)

Ganchos do Netfilter

1/6/2013

1 - Um datagrama destinado ao
processo local
Pode ser capturado para avaliao ao entrar
na Interface, pelo gancho 1, chamado pelo
kernel de PREROUTING.
Pode ser capturado para avaliao pelo
gancho 4, chamado pelo kernel de INPUT.

2 - Um datagrama gerado por um


processo local
Pode ser capturado para avaliao pelo
gancho 5, chamado pelo kernel de OUTPUT.
Pode ser capturado para avaliao pelo
gancho 3, chamado de POSTROUTING.

1/6/2013

3 - Um datagrama que esteja apenas passando por


esta mquina, no gerada e no destinada ao ip ela

Pode ser capturado para avaliao ao entrar


na Interface, pelo gancho 1, chamado pelo
kernel de PREROUTING.
Pode ser capturado para avaliao pelo
gancho 2, chamado pelo kernel de FORWARD.
Pode ser capturado para avaliao pelo
gancho 3, chamado de POSTROUTING.

A Tabela Filter
A tabela filter deve conter apenas regras que
determinam se um pacote deve ser aceito ou
no. Nesta tabela no possvel colocar regras
para alterar algum parmetro, como ip ou
porta.

1/6/2013

A Tabela NAT
A tabela nat serve para realizar operaes de
traduo sobre IP e/ou porta, tanto de origem
como de destino, muito embora tambm
permita recus-lo (no ser abordada neste
artigo).

A Tabela Mangle
Por fim a tabela mangle serve para realizar
alteraes mais profundas e bizarras nos
pacotes, como alterar o TTL, TOS, etc (no
ser abordada neste artigo).

10

1/6/2013

Fluxos das Tabelas do IPTABLES

Regras do NAT
PREROUTING
POSTROUTING
OUTPUT

11

1/6/2013

NAT - PREROUTING
Nesta lista iro as regras que sero aplicadas
no gancho PREROUTING, ou seja, para pacotes
que acabaram de entrar por uma das
interfaces de rede, no importando qual ser
o destino dos mesmos, se para um processo
local ou para ser roteado (forward).

DNAT - PREROUTING
Se um pacote precisa ter algum parmetro de
DESTINO modificado, deve ser feito ANTES da
etapa de roteamento.
Assim sendo, fcil entender porque na lista
PREROUTING permitido alterar apenas os
campos de destino, seja nmero IP ou porta. A
ao que realiza isto chamada de DNAT.

12

1/6/2013

PREROUTING Exemplos:
iptables -t nat -A PREROUTING -p tcp --dport
8080 -j DNAT --to :80
iptables -t nat -A PREROUTING -i eth0 -p tcp s 10.1.5.4 -d 172.16.0.2 --dport 8080 -j DNAT -to 172.16.0.1:80

NAT - POSTROUTING
Nesta lista iro as regras com poder de alterar
um pacote aps o roteamento. a ltima
etapa antes do pacote deixar a interface de
rede em direo ao "mundo".
No POSTROUTING no tem sentido algum
alterar parmetros de destino, pois ao alterlos o pacote poderia assumir um novo destino,
o que IMPOSSVEL, pois a deciso de
roteamento j ocorreu (observe a posio do
gancho POSTROUTING na figura 1).

13

1/6/2013

NAT - POSTROUTING
Assim sendo, nesta lista s possvel alterar
caractersticas de origem de um pacote, seja
ip ou seja porta. Tambm no tem sentido o
uso de -i interface (entrando pela interface),
pois o pacote necessariamente est saindo!
Somente o "-o interface" pode ser
empregado.
A ao (-j) que permite alterar parmetros de
origem SNAT, sendo que no POSTROUTING
tambm aceito a ao DROP e LOG:

NAT - POSTROUTING
iptables -t nat -A POSTROUTING -p tcp -s
10.1.0.4 -j SNAT --to 10.1.0.1
Neste exemplo est se trocando o ip de
origem para 10.1.0.1 em todos os pacotes tcp
que estiverem saindo por qualquer interface e
que tinham o ip de origem como 10.1.0.4.
Muito utilizado em tradues de endereos
frios INTRANET para quentes - INTERNET

14

1/6/2013

NAT - OUTPUT
Para evitar que pacotes gerados localmente
fossem condenados a no ter meios de alterar
parmetros de destino, o nat tambm atua no
gancho OUTPUT.
As regras do nat OUTPUT tem o mesmo
propsito e a mesma sintaxe das do gancho
PREROUTING, com a nica diferena de operar
pacotes originados por processos locais.

NAT - OUTPUT
Faa 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
tambm desta forma:
http://www.vivaolinux.com.br:90/

15

1/6/2013

Referncias
http://www.ime.usp.br/~ueda/ldoc/notastcp.
html
http://www.lsi.usp.br/~volnys/courses/tecred
es/pdf/12NAT-pb.pdf
http://www.vivaolinux.com.br/artigo/Estrutur
a-do-Iptables?pagina=1
http://www.vivaolinux.com.br/artigo/Estrutur
a-do-IPTables-2-a-tabela-nat/?pagina=1

16

Você também pode gostar