Escolar Documentos
Profissional Documentos
Cultura Documentos
4 NAT HOWTO
Rusty Russell, mailing list netfilter@lists.samba.org
Tradu��o para Portugu�s do Brasil: Guilherme Ude Braz
(guilherme@linuxplace.com.br)
Revision: 1.14 Date: 2001/05/26 20:26:48
�ndice geral
1. Introdu��o
2. Onde encontrar o site oficial e a mailing list?
2.1 O que � Network Address Translation (Troca de Endere�o de Rede)?
2.2 Porque utilizar NAT?
7. Protocolos especiais
8. Algumas preven��es sobre NAT
9. Source NAT e roteamento
10. Destination NAT para a mesma rede
11. Agradecimentos
______________________________________________________________________
1. Introdu��o
M�ltiplos Servidores
�s vezes, voc� quer mudar o destino dos pacotes que chegam na
sua rede. Frequentemente isto ocorre porque (como dito acima)
voc� tem apenas um endere�o IP, mas quer que as pessoas alcancem
servidores atr�s do que tem o endere�o IP real. Reescrevendo o
destino dos pacotes que chegam, � poss�vel implementar isso.
Proxy Transparente
�s vezes voc� pretende que cada pacote que atravesse sua m�quina
Linux � destinado a um programa espec�fico. Isto � utilizado
para fazer proxies transparentes: um proxy � um programa que
fica entre sua rede e o mundo extertno, controlando a
comunica��o entre os mesmos. O termo transparente refere-se ao
fato de que sua rede n�o saber� que est� lidando com um proxy, a
n�o ser, � claro, que seu proxy n�o funcione :).
Pe�o desculpas �queles que ainda esperam para fazer a transi��o das
vers�es 2.0 (ipfwadm) e 2.2 (ipchains). H� not�cias boas e ruins.
# Na tabela NAT (-t nat), adicionar uma regra (-A) ap�s o routing
# (POSTROUTING) para todos os pacotes saindo por ppp0 (-o ppp0) dizendo para
# MASCARAR a conex�o (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Habilitar IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Note que voc� n�o est� filtrando nenhum pacote aqui: para isso, veja o
Packet Filtering HOWTO (Como fazer filtragem de pacotes): `Misturando
NAT e Filtragem de Pacotes'.
4.2. E o ipmasqadm?
# Linux 2.2
# Transformar pacotes TCP indo para a porta 8080 de 1.2.3.4 para a porta 80
de 192.168.1.1's
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80
Se voc� quer que esta regra altere tamb�m as conex�es locais (a NAT
box tentando conectar-se via telnet com o endere�o 1.2.3.4 porta 8080,
ela chegar� no endere�o 192.168.1.1 porta 80), voc� pode inserir a
mesma regra na chain OUTPUT (que serve para pacotes de sa�dagerados
localmente):
# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
Voc� precisa criar regras NAT as quais dir�o ao kernel quais conex�es
ser�o alteradas, e como alter�-las. Para fazer isso, utiliza-se o
vers�til iptables e dizemos a ele para alterar a tabela NAT ao
especificar a op��o `-t nat'.
_____ _____
/ \ / \
PREROUTING -->[Decis�o ]----------------->POSTROUTING----->
\D-NAT/ [de Roteamento] \S-NAT/
| ^
| __|__
| / \
| | OUTPUT|
| \D-NAT/
| ^
| |
----> Processamento Local ----
Essas op��es permitem especificar que apenas pacotes com certa porta
de origem e destino se encaixar�o na regra. Isso � �til para
redirecionamento de requisi��es web (porta TCP 80 ou 8080).
Todas essas op��es devem seguir a `-p' (a qual carrega uma biblioteca
compartilhada para aquele protocolo). Podem ser usados os n�meros das
portas ou um nome do arquivo /etc/services.
Todas as outras formas de se selecionar um pacote est�o descritas em
detalhes na p�gina de manual do iptables (man iptables).
Voc� quer fazer Source NAT; mudar o endere�o de origem das conex�es
para algo diferente. Isso � feito na chain POSTROUTING, logo antes de
que o pacote saia da m�quina. Isso � um detalhe muito importante, pois
significa que qualquer tarefa da sua m�quina Linux (routing, packet
filtering) ver� o pacote inalterado. Isso tamb�m significa que a op��o
`-o'(interface de sa�da) pode ser utilizada.
6.1.1. Masquerading
6.2.1. Redirecionamento
Lembre-se que o squid precisa ser configurado para saber que est�
sendo um proxy transparente!
Voc� pode utilizar `-j ACCEPT' para aceitar uma conex�o sem que haja
nenhuma esp�cie de NAT.
Uma porta NUNCA ser� mapeada implicitamente para uma classe diferente.
Voc� pode ter regras NAT que mapeiam pacotes para o mesmo range; o
c�digo NAT suficientemente inteligente para evitar conflitos. N�o h�
nenhum problema em mapear os endere�os de origem 192.168.1.1 e
192.168.1.2 para 1.2.3.4.
7. Protocolos especiais
Alguns protocolos n�o se d�o muito bem com NAT. Para cada um destes
protocolos, duas extens�es tiveram de ser escritas; uma para o
acompanhamento do protocolo, e a outra para o atual NAT.
Se voc� est� fazendo NAT em uma conex�o, todos os pacotes passando nas
duas dire��es (entrando e saindo da rede) DEVEM passar pela m�quina
respons�vel pelo NAT, ou nada funcionar� confiavelmente.
Particularmente, o c�digo de acompanhamento de conex�es remonta
fragmentos, o que significa que al�m do acompanhamento de conex�es,
toda a rede pode ter problemas, uma vez que os fragmentos ser�o
detidos.
Se voc� est� fazendo SNAT, voc� vai querer ter certeza de que toda
m�quina destino dos pacotes SNAT'ed vai responder para a m�quina que
est� fazendo NAT. Por exemplo, se voc� est� mapeando alguns pacotes
que est�o saindo com o endere�o de origem 1.2.3.4, o roteador externo
precisa saber que as respostas devem ser enviadas para 1.2.3.4. Isso
pode ser feito das seguintes formas:
11. Agradecimentos
Rusty