Escolar Documentos
Profissional Documentos
Cultura Documentos
4 NAT HOWTO
Rusty Russell, mailing list netfilterlists.samba.org
Traduo para Portugus do Brasil: Guilherme Ude Braz (guilhermelinuxpla
e.
om.br)
Date: 2001/05/26 20:26:48
Revision: 1.14
Este do
umento des
reve
omo fazer masquerading, proxy transparente, redire
ionamento de portas, e outras
formas de Tro
a de Endreo de Rede (Network Address Translations)
om os kernels Linux 2.4.
Contents
1 Introduo
4.2 E o ipmasqadm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
Masquerading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1
Redire ionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.3.7
1. Introduo
10
10
11 Agrade imentos
11
1 Introduo
Bemvindo, gentil leitor.
Vo
est prestes a entrar no fas
inante (e algumas vezes horrendo) mundo do NAT: Network Address
Translation (Tro
a de Endereo de Rede), e esse HOWTO ser seu guia para kernels Linux 2.4 e futuros.
No Linux 2.4, uma estrutura para lidar
om pa
otes foi introduzida, seu nome 'netlter'. Uma
amada
externa prov NAT,
ompletamente reimplementada em relao a kernels anteriores.
(C) 2000 Paul `Rusty' Russell. Li
en
iado sob a GNU GPL.
Mltiplos Servidores
s vezes, vo
quer mudar o destino dos pa
otes que
hegam na sua rede. Frequentemente isto o
orre
porque (
omo dito a
ima) vo
tem apenas um endereo IP, mas quer que as pessoas al
an
em servidores
atrs do que tem o endereo IP real. Rees
revendo o destino dos pa
otes que
hegam, possvel
implementar isso.
Uma variao
omum disto load-sharing, na qual a
arga de pa
otes dividida entre mquinas. este
tipo de NAT era
hamado de port-forwarding em verses anteriores do Linux.
Proxy Transparente
s vezes vo
pretende que
ada pa
ote que atravesse sua mquina Linux destinado a um programa
espe
o. Isto utilizado para fazer proxies transparentes: um proxy um programa que
a entre sua
rede e o mundo extertno,
ontrolando a
omuni
ao entre os mesmos. O termo transparente refere-se
ao fato de que sua rede no saber que est lidando
om um proxy, a no ser,
laro, que seu proxy
no fun
ione :).
O Squid pode ser
ongurado de forma a trabalhar desta maneira, e isto
hamado de redire
tion ou
transparent proxying em verses Linux anteriores.
(SNAT) e
NAT de
Sour
e NAT o
orre quando o endreo de origem do primeiro pa
ote alterado: por exemplo, quando se
muda de onde vem uma
onexo. Sour
e NAT sempre o
orre no momento de post-routing, logo antes que o
pa
ote deixe o rewall. Masquerading uma forma espe
ializada de SNAT.
Destination NAT o
orre quando o endereo de destino do primeiro pa
ote alterado: por exemplo, quando se
altera o destino nal de uma
onexo. Destination NAT sempre o
orre no momento de pre-routing, quando
o primeiro pa
ote est prestes a entrar no rewall. Port forwarding, load sharing, e proxy transparente so
forma de DNAT.
Congurar masquerading timeouts
om ip
hains -M -S, ou ipfwadm -M -s no adianta. Uma vez que
os timeouts so maiores na nova infraestrutura NAT, isso no faz muita diferena.
Os
ampos init_seq, delta e previous_delta no verbose masquerade listing so sempre zero.
Zerar e es
utar os
ontadores ao mesmo tempo `-Z -L' no fun
iona mais: os
ontadores no sero
zerados.
Note que vo
no est ltrando nenhum pa
ote aqui: para isso, veja o Pa
ket Filtering HOWTO (Como
fazer ltragem de pa
otes): `Misturando NAT e Filtragem de Pa
otes'.
4.2 E o ipmasqadm?
O ipmasqadm era utilizado por um menor nmero de usurios, ento no me preo
upei muito
om a
ompatibilidade de verses anteriores. Vo
pode utilizar `iptables -t nat' para fazer port forwarding. No Linux
2.2 vo
faria:
# Linux 2.2
# Transformar pa
otes 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 t
p -L 1.2.3.4 8080 -R 192.168.1.1 80
Agora, vo faria:
# Linux 2.4
# Adi
ionar uma regra em pre-routing (-A PREROUTING) para a tabela NAT (-t nat) na qual
# pa
otes TCP (-p t
p) indo para 1.2.3.4 (-d 1.2.3.4) na porta 8080 (--dport 8080)
# tm seu destino tro
ado (-j DNAT) para 192.168.1.1, porta 80
# (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p t
p -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
Se vo
quer que esta regra altere tambm as
onexes lo
ais (a NAT box tentando
one
tar-se via telnet
om o endereo 1.2.3.4 porta 8080, ela
hegar no endereo 192.168.1.1 porta 80), vo
pode inserir a mesma
regra na
hain OUTPUT (que serve para pa
otes de sadagerados lo
almente):
# Linux 2.4
iptables -A OUTPUT -t nat -p t
p -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80
Em
ada um dos pontos a
ima, quando um pa
ote passa, veri
ado a
onexo
om a qual ele est asso
iado.
Se uma nova
onexo, veri
ada a
hain
orrespondente na tabela NAT para ver o que fazer
om a mesma.
A resposta dada ser idnti
a para todos os outros pa
otes rela
ionados
om tal
onexo.
A opo mais importante a seleo da tabela
om `-t'. Para todas as operaes NAT, ser ne
essria a
opo `-t nat' para a tabela NAT. A segunda mais importante a opo '-A', que adi
iona uma nova regra
no m da
hain (`-A POSTROUTING'), ou `-I' para adi
on-la no in
io (eg. `-I PREROUTING').
Vo
pode espe
i
ar a origem (`-s' or `sour
e') e o destino (`-d' or `destination') dos pa
otes que
sofrero NAT. Tais opes podem ser seguidas de um simples endereo IP ( 192.168.1.1), um nome
(www.gnumonks.org), ou um endereo de rede (192.168.1.0/24 ou 192.168.1.0/255.255.255.0).
Tambm podem ser espe
i
adas as interfa
es de entrada (`-i' ou `in-interfa
e') ou de sada (`-o' ou `outinterfa
e'). Qual das interfa
es que poder ser espe
i
ada depender da
hain que re
eber a regra: em
PREROUTING vo
pode sele
ionar apenas a interfa
e de entrada, e em POSTROUTING (e OUTPUT)
apenas a interfa
e de sada sele
ionada. Se vo
zer a opo errada, o iptables restornar um erro.
6.1.1 Masquerading
H um
aso espe
ial de Sour
e NAT
hamado masquerading, que s deve ser utilizado para endereos IP
dinmi
os,
omo as
onexes dialup (para endereos IP estti
os, utilize SNAT des
rito a
ima).
No masquerading, no ne
essrio expli
itar o endereo de origem: ser utilizado o endereo de origem
da interfa
e de sada do pa
ote. Mas o mais importante que se o link
air, o endereo de origem que
estava sendo utilizado des
artado, dando lugar ao novo endereo de origem da interfa
e quando o link for
restabele
ido.
## Mas
arando tudo que sai pela interfa
e ppp0.
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Lembre-se que o squid pre isa ser ongurado para saber que est sendo um proxy transparente!
Uma porta NUNCA ser mapeada impli itamente para uma lasse diferente.
A mesma lgi
a se apli
a aos endereos utilizados pela prpria mquina que realiza NAT: essa a forma que
o masquerading fun
iona (
ompartilhando o endereo da interfa
e de sada entre os pa
otes mas
arados e os
gerados lo
almente).
Vo
tambm pode mapear os mesmos pa
otes para alvos distintos, e estes serao
ompartilhados. Por
exemplo, se vo
no quer mapear NADA para o endereo 1.2.3.5, vo
faria:
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \
-j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254
10
3. Se vo
est fazendo SNAT para um endereo
ompletamente diferente, vo
ter de ter
erteza que as
mquinas atingidas pelos pa
otes SNAT'ed rotearo tal endereo de volta para a mquina responsvel
por NAT. Isso j est implementado se a NAT box o gateway padro da LAN,
aso
ontrrio vo
ter de es
lare
er uma rota (
aso vo
esteja utilizando algum proto
olo de roteamento) ou adi
ionar
rotas manualmente em
ada mquina envolvida.
Uma maneira rodar um servidor DNS interno que sabe os endereos IP reais (internos) do seu web site
pbli
o, e repassa todas as outras requisies para um servidor DNS externo. Isso signi
a que o log no seu
web server mostrar os endereos IP internos
orretamente.
A outra forma dizer mquina responsvel por NAT que mapeie o endereo IP de origem para o seu
prprio nessas
onexes. Nesse exemplo, faramos o seguinte (assumindo que o endereo interno da NAT
box seja 192.168.1.250):
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
-p t
p --dport 80 -j SNAT --to 192.168.1.250
Devido ao fato de que a
hain PREROUTING analizada antes, os pa
otes j estaro destinados para o
web server interno: podemos dizer quais
onexes tm origem interna pelo endereo IP de origem.
11
11 Agrade
imentos
Primeiramente, gostaria de agrade
er Wat
hGuard, e ao David Bonn, aqueles que a
reditaram na idia do
netlter e me apoiaram enquanto eu o desenvolvia.
E a todos aqueles que me levantaram enquanto eu aprendia sobre a feiura do NAT, espe
ialmente queles
que leram meu dirio.
Rusty
E eu, (Guilherme Ude, tradutor para o Portugus do Brasil) gostaria de agrade
er a todo o time da
LinuxPla
e, ao pessoal do di
ionrio Merriam-Webster (http://www.m-w.
om) que muito me ajudou nesta
traduo e a todas as pessoas que sempre a
reditaram em mim. Muito obrigado!
Tradutor para o Portugus do Brasil: Guilherme Ude Braz (guilhermelinuxpla
e.
om.br).