Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
4 NAT COMO
Este do
umento des
ribe
ómo ha
er el enmas
arado (masqueradinq), proxy transparente, reenvío de puertos
(port forwarding), y otras formas de Network Address Translation (Tradu
ión de Dire
iones de Red)
on los
nú
leos 2.4 de Linux.
Índi
e
1. Introdu
ión 2
10.Agrade imientos 10
1. Introdu
ión
Bienvenido, gentil le
tor.
Está a punto de sumergirse en el fas
inante (y a ve
es horrendo) mundo del NAT (Network Address Trans-
lation), y este COMO va a ser su guía más o menos pre
isa para el nú
leo 2.4 de Linux y posteriores.
En Linux 2.4, se ha introdu
ido una infrastu
tura para trastear
on los paquetes, llamada netlter. Hay
una
apa por en
ima que propor
iona NAT,
ompletamente rees
rita
on respe
to a anteriores nú
leos.
respuestas a los paquetes
on esa IP de origen. Si desea utilizar varias máquinas diferentes (
omo una
red
asera) para
one
tar a Internet a través de un enla
e, ne
esita NAT.
Este es, de lejos, el uso más
omún de NAT hoy en día,
ono
ido normalmente
omo enmas
aramiendo
(masquerading) en el mundo de Linux. Yo lo llamo SNAT, porque se
ambia la dire
ión de origen
(sour
e) del primer paquete.
Varios servidores
Puede que quiera
ambiar el destino de los paquetes que entran en su red. Con fre
uen
ia esto se
debe (
omo antes), a que sólo tiene una dire
ión IP, pero desea que la gente sea
apaz de llegar a las
máquinas detrás de la que tiene la IP real. Si rees
ribe el destino de los paquetes entrantes, podrá
onseguirlo.
Una variante
omún de esto es el balan
eo de
arga, en la
ual se toma un
ierto número de máquinas,
repartiendo los paquetes entre ellas. Este tipo de NAT se llamó reenvío de puerto (port-forwarding) en
anteriores versiones de Linux.
Proxy transparente
Hay ve
es que deseará simular que
ada paquete que pase por su máquina Linux esté destinado a
un programa en la propia máquina. Esto se utiliza para ha
er proxyes transparentes: un proxy es un
programa que se pone entre su red y el mundo real, ltrando las
omuni
a
iones entre ambos. La parte
transparente se debe a que su red nun
a tendrá por qué enterarse de que está
omuni
ándose
on un
proxy, a menos,
laro, que el proxy no fun
iones.
Se puede
ongurar Squid para que trabaje de esta manera, y a esto se le llamó redire
ión o proxy
transparente en anteriores versiones de Linux.
Estable
er los tiempos límite (timeout)
on ip
hains -M -S o ipfwadm -M -s no ha
e nada. Como los
límites de tiempo
on la nueva infrastru
tura NAT son más grandes, no debería haber problema.
Los
ampos init_seq, delta y previous_delta en la lista ampliada de enmas
aramiento (verbose mas-
querade listing) siempre son 0.
Listar los
ontadores y ponerlos a
ero al mismo tiempo -Z -L ya no fun
iona: los
ontadores no se
pondrán a
ero.
Ahora puede aso
iar un programa (bind) a los puertos 61000-65095 in
luso si está ha
iendo enmas-
aramiento. El
ódigo de enmas
arado asumía que no había nada en este rango, de manera que los
programas no lo podían usar.
El par
he (no do
umentado) de getso
kname, que podían utilizar los programas de proxy transpar-
ente para averiguar el destino real de la
onexión no fun
iona.
El par
he (no do
umentado) bind-to-foreign-address (aso
iado-a-una-dire
ión-externa) tampo
o está
implementado; se usaba para
ompletar la ilusión del proxy transparente.
# Agrega (-A) una regla a la tabla NAT (-t nat), después del
# en
aminamiento (POSTROUTING) para todos los paquetes que salgan por
# ppp0 (-o ppp0) enmas
arando la
onexión (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Fíjese que no está ha
iendo ltrado de paquetes: para eso, lea el COMO de Filtrado de Paquetes: Mez
lando
NAT
on Filtrado de Paquetes.
#Linux 2.2
#Reenvía los paquetes TCP dirigidos al puerto 8080 de 1.2.3.4 al 80 de
#192.168.1.1
ipmasqadm portfw -a -P t
p -L 1.2.3.4 8080 -R 192.168.1.1 80
6. Controlar qué
osas pasar por NAT 5
# Linux 2.4
# Agrega una regla previa al en
aminamiento (-A PREROUTING) a la tabla NAT
# (-t nat) de manera que los paquetes TCP (-p t
p) que vayan a 1.2.3.4
# (-d 1.2.3.4), puerto 8080 (--dport 8080) tengan una
orresponden
ia de
# destino (-j DNAT)
on 192.168.1.1, puerto 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
Si desea que esta regla altere también las
onexiones lo
ales (aquellas que se originen en la propia máquina
que ha
e NAT), puede insertar la misma regla en la
adena OUTPUT (que es para los paquetes lo
ales de
salida):
# 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
_____ _____
/ \ / \
PREROUTING -->[De
isión de ℄----------------->POSTROUTING----->
\D-NAT/ [En
aminamiento℄ \S-NAT/
| ^
| __|__
| / \
| | OUTPUT|
| \D-NAT/
| ^
| |
----------> Pro
eso Lo
al ----------
En
ada uno de los puntos anteriores,
uando un paquete pasa miramos la
onexión a la que está aso
iado.
Si es una
onexión nueva,
omprobamos la
adena
orrespondiente en la tabla de NAT para ver qué ha
er
on ella. La respuesta que obtenemos se apli
ará a
ualquier paquete posterior de esa
onexión.
nú
leo tiene la implementa
ión de iptables
omo módulo, ne
esitará
argar el módulo ip_tables.o antes:
insmod ip_tables.
La op
ión más importante aquí es la op
ión de sele
ión de tabla, -t. Para todas las opera
iones de NAT,
querrá usar -t nat para la tabla NAT. La segunda más importante es -A para añadir una nueva regla
al nal de una
adena (-A POSTROUTING), o -I para insertarla al prin
ipio (-I PREROUTING).
Puede espe
i
ar el origen (-s o sour
e) y el destino (-d o destination) de los paquetes sobre
los que quiere ha
er NAT. Estas op
iones pueden ir seguidas por una IP sen
illa (192.168.1.1), un nombre
(www.gnumonks.org), o una dire
ión de red (192.168.1.0/24 o 192.168.1.0/255.255.255.0).
Puede espe
i
ar qué interfaz de entrada (-i o in-interfa
e) o de salida (-o o out-interfa
e) mirar,
pero lo que puede espe
i
ar depende de en qué
adena esté poniendo la regla: en PREROUTING sólo puede
elegir la interfaz de entrada, y en POSTROUTING (y OUTPUT) sólo la de salida. Si usa la equivo
ada,
iptables le avisará
on un mensaje de error.
1. Se estable
e una
onexión web entre la máquina 192.1.1.1, puerto 1024 y www.nets
ape.
om, puerto
80.
2. Esta
onexión es enmas
arada por otra máquina para que utili
e su dire
ión
omo origen (1.2.3.4).
3. La máquina enmas
aradora intenta ha
er la
onexión web
on www.nets
ape.
om puerto 80, desde
1.2.3.4 (la dire
ión de su interfaz interna), puerto 1024.
4. El
ódigo de NAT alterará la dire
ión de origen de una segunda
onexión al puerto 1025, de manera
que no pueda haber solapado.
Cuando se produ e este ambio implí ito de origen, los puertos se dividen en tres lases:
La misma lógi
a se apli
a a las dire
iones que usa la propia
aja que ha
e NAT: ésta es la manera en que
fun
iona el enmas
aramiento (
ompartiendo las dire
iones de la interfaz entre los paquetes enmas
arados y
los paquetes reales que vienen de la propia máquina).
Aún más, podemos dire
ionar los mismos paquetes a varios objetivos diferentes, y serán
ompartidos. Por
ejemplo, si no queremos dire
ionar nada usando 1.2.3.5, podríamos ha
er: