NAT - TRADUCCION DE DIRECCIONES DE RED

20.03.2018

La traducción de direcciones de red o NAT (del inglés Network Address Translation) es un mecanismo utilizado por routers IP para intercambiar paquetes entre dos redesque asignan mutuamente direcciones incompatibles. Consiste en convertir, en tiempo real, las direcciones utilizadas en los paquetes transportados. También es necesario editar los paquetes para permitir la operación de protocolos que incluyen información de direcciones dentro de la conversación del protocolo. 


NAT con IpTables

iptables realiza dos funciones principalmente, filtrado de paquetes y traducción de direcciones de red (network address translation (NAT)); habitualmente los manuales de iptables tratan estas dos funciones de forma simultánea 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 artículo posterior el filtrado de paquetes y la construcción de un cortafuegos.

Actualización:La construcción 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 más 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 modificación de paquetes TCP/IP que pasen por cualquiera de las interfaces de red de un equipo.

Source NAT

Este tipo de NAT es en el que se cambia la dirección IP de origen, es la situación más utilizada cuando estamos utilizando una dirección IP privada (RFC 1918) en una red local y establecemos una conexión con un equipo de Internet. Un equipo de la red (normalmente la puerta de enlace) se encarga de cambiar la dirección IP privada origen por la dirección IP pública, para que el equipo de Internet pueda contestar.

IP masquerading

Este tipo de NAT normalmente es sinónimo de SNAT, pero iptables distingue dos casos:

  • SNAT: Cuando la dirección IP pública que sustituye a la IP origen es estática (SNAT también significa Static NAT).
  • MASQUERADE: Cuando la dirección IP pública que sustituye a la IP origen es dinámica, caso bastante habitual en conexiones a Internet domésticas.

Destination NAT o port forwarding

Este tipo de NAT se utiliza cuando tenemos algún servidor en una máquina detrás del dispositivo de NAT. En este caso será un equipo externo el que inicie la conexión, ya que solicitará un determinado servicio y el dispositivo de NAT, en este caso, debe modificar la dirección IP destino

PAT (Port Address translation)

Modifica específicamente el puerto (origen o destino) en lugar de la dirección IP. Por ejemplo si queremos reenviar todas las peticiones web que lleguen al puerto 80/tcp al mismo equipo pero al puerto 8080/tcp

Instalación de iptables

Instalamos el paquete iptables:aptitude install iptables

Tablas y cadenas

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

La tabla nat está formada por tres cadenas:

  • PREROUTING: Permite modificar paquetes entrantes antes de que se tome una decisión de enrutamiento.
  • OUTPUT: Permite modificar paquetes generados por el propio equipo después 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.

Parámetros generales

Listar reglas

Utilizamos el parámetro -L (normalmente se acompaña de -n para que los resultados se muestren de forma numérica y evitar consultas DNS)

# iptables -t nat -L -n


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

Verbose

Para una salida más completa de iptables utilizamos el parámetro -v:# iptables -t nat -L PREROUTING -n -v

Borrar todas las reglas de una cadena

Para borrar todas las reglas de una cadena se escribe:

#iptables -t nat -F OUTPUT

Se puede no especificar ninguna cadena, con lo que se borran todas las reglas de todas las cadenas de una tabla:

#iptables -t nat -F

Antes de empezar a utilizar iptables, una norma elemental es escribir:

#iptables -t nat -F
#iptables -t nat -Z

Borra todas las clases y pone el contador a cero.




© 2017 Human Lab. Todos los derechos reservados.
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar