You are on page 1of 5

NAT con iptables

iptables realiza dos funciones principalmente, filtrado de paquetes y traduccin de direcciones


de red (network address translation (NAT)); habitualmente los manuales de iptables tratan
estas dos funciones de forma simultnea lo que resulta confuso para las personas que se
introducen en el tema. En esta entrada explicaremos desde cero los rudimentos de NAT bajo
GNU/Linux con iptables y dejaremos para un artculo posterior el filtrado de paquetes y la
construccin de un cortafuegos.

Actualizacin:La construccin de un cortafuegos de filtrado de paquetes con iptables


se puede encontrar en: Cortafuegos con iptables de este mismo blog.

Iptables

iptables es el componente ms conocido del proyecto netfilter y es una herramienta


que funciona en el espacio de usuario y que permite definir reglas para el filtrado y la
modificacin de paquetes TCP/IP que pasen por cualquiera de las interfaces de red de
un equipo.

NAT

NAT son las siglas del ingls network address translation o traduccin de
direcciones de red y es un mecanismo que se usa ampliamente hoy en da,
fundamentalmente porque permite compartir una direccin IP pblica por muchos
equipos y esto es imprescindible en muchas situaciones por la escasez de direcciones
IPv4.

Existen diferentes tipos de NAT, dependiendo de si se cambia la direccin IP


origen o la direccin IP destino del paquete que abre la conexin, incluso existe una
extensin de NAT que permite modificar el puerto origen o destino. Estos tipos de
variantes de NAT reciben diferentes nombres dependiendo de la implementacin,
aunque ms que el nombre lo importante es saber las posibilidades de NAT y aqu
presentamos los nombres ms utilizados cuando se implementa NAT con iptables.

Source NAT

Este tipo de NAT es en el que se cambia la direccin IP de origen, es la


situacin ms utilizada cuando estamos utilizando una direccin IP privada (RFC
1918) en una red local y establecemos una conexin con un equipo de Internet. Un
equipo de la red (normalmente la puerta de enlace) se encarga de cambiar la direccin
IP privada origen por la direccin IP pblica, para que el equipo de Internet pueda
contestar. Los pasos que se seguiran seran algo como:
Un equipo de una red local con una direccin IP privada (supongamos
192.168.3.14) quiere solicitar una pgina web (puerto 80/tcp) del equipo de
Internet http://www.wordpress.com

Realiza una consulta DNS y obtiene que el equipo que aloja dicha pgina tiene la
direccin IP 76.74.254.126

Consulta su tabla de encaminamiento y como no est en la misma red que el


servidor web de wordpress, enva el paquete con la solicitud de la pgina al
equipo que es su destino por defecto (puerta de enlace o gateway), que
supongamos tiene la direccin 192.168.3.254.

El gateway, que en este caso debe actuar como dispositivo de NAT, recibe el
paquete y comprueba la direccin IP destino, como no es la suya, lo enva a su
propio destino por defecto (gateway) que ya ser una direccin IP pblica.

Antes de que el paquete salga por la interfaz de red externa, se le cambia la


direccin IP origen (192.168.3.14) por la direccin IP pblica (supongamos que
fuese 80.58.1.14) y se guarda la peticin en lo que se denomina tablas de NAT
(anotando tambin el puerto origen, supongamos que fuese el 5015/tcp).

El paquete viaja por Internet saltando de router a router hasta que llega a su
destino

El equipo 76.74.254.126 recibe una peticin desde la direccin 80.58.1.14 y la


contesta, por lo que el paquete de vuelta llevar ahora direccin IP origen
76.74.254.126, direccin IP destino 80.58.1.14, puerto origen 80/tcp y puerto
destino 5015/tcp.

La contestacin del servidor web de wordpress.com llega a la interfaz externa del


dispositivo de NAT, que consulta las tablas de NAT y comprueba (gracias al
puerto origen) que corresponde con una peticin realizada desde el equipo
192.168.3.14, por lo que modifica la direccin IP destino por sta y se lo enva
directamente.

IP masquerading

Este tipo de NAT normalmente es sinnimo de SNAT, pero iptables distingue dos
casos:

SNAT: Cuando la direccin IP pblica que sustituye a la IP origen es esttica


(SNAT tambin significa Static NAT).

MASQUERADE: Cuando la direccin IP pblica que sustituye a la IP origen es


dinmica, caso bastante habitual en conexiones a Internet domsticas.
Destination NAT o port forwarding

Este tipo de NAT se utiliza cuando tenemos algn servidor en una mquina detrs
del dispositivo de NAT. En este caso ser un equipo externo el que inicie la conexin,
ya que solicitar un determinado servicio y el dispositivo de NAT, en este caso,
debe modificar la direccin IP destino. Veamos paso a paso cul sera la situacin.

Un equipo cualquiera de Internet, con direccin IP pblica 150.212.23.6 desea


conectarse por ssh (22/tcp) al equipo estudio.mired.com

Realiza una consulta DNS y obtiene como respuesta que estudio.mired.com tiene
la direccin IP 85.136.14.7

Establece la conexin (supongamos puerto origen 23014/tcp) con el equipo


85.136.14.7, que resulta ser un dispositivo de NAT que no tiene ningn servicio
ssh escuchando en el puerto 22/tcp, pero que tiene una regla de DNAT para que
todo lo que llegue a ese puerto se lo enve a un equipo de su red local
(supongamos que fuese el 10.0.0.2), por lo que cambia la direccin IP destino
(85.136.14.7) por la 10.0.0.2 y lo registra en sus tablas de NAT.

Al equipo 10.0.0.2 llega un solicitud al puerto 22/tcp y la respuesta tiene las


siguientes caractersticas: IP origen 10.0.0.2, puerto origen 22/tcp, IP destino
150.212.23.6 y puerto destino 23014/tcp.

El dispositivo de NAT cambia ahora la direccin IP origen por su direccin IP


pblica (85.136.14.7) y el paquete llega de vuelta a su destino.

PAT (Port Address translation)

Modifica especficamente el puerto (origen o destino) en lugar de la direccin


IP. Por ejemplo si queremos reenviar todas las peticiones web que lleguen al puerto
80/tcp al mismo equipo pero al puerto 8080/tcp

Tablas y cadenas

Hay tres tablas definidas en iptables que son filter, nat y mangle, que se
encargan de diferentes tipos de procesos, aqu slo trataremos de la tabla nat, por lo
que cada vez que escribamos una instruccin comenzaremos con iptables -t nat.

La tabla nat est formada por tres cadenas:

PREROUTING: Permite modificar paquetes entrantes antes de que se tome una


decisin de enrutamiento.

OUTPUT: Permite modificar paquetes generados por el propio equipo despus de


enrutarlos
POSTROUTING: Permite modificar paquetes justo antes de que salgan del
equipo.

Para cadena se especifican reglas, para las que es fundamental el orden, ya que
cuando un paquete encuentra una regla que lo define, aplica esa regla y no lee las
siguientes

Parmetros generales

Listar reglas
Utilizamos el parmetro -L (normalmente se acompaa de -n para que los resultados
se muestren de forma numrica y evitar consultas DNS)

# iptables -t nat -L n

Chain PREROUTING (policy ACCEPT)


target prot opt source destination

Chain POSTROUTING (policy ACCEPT)


target prot opt source destination

Chain OUTPUT (policy ACCEPT)


target prot opt source destination

Que nos muestra las tres cadenas de la tabla nat y que en este momento no hay
ninguna regla aplicada.

Verbose

Pgina de la fuente: https://albertomolina.wordpress.com/2009/01/09/nat-con-iptables/

Continuar desde Verbose

You might also like