Depto. Automática y computación
Universidad Pública de Navarra
Daniel Morató
daniel.morato@unavarra.es

Laboratorio de Programación de Redes

3º Ingeniero Técnico en Informática de Gestión

Práctica 9 - Network Address Translation (NAT)

1. Introducción

NAT permite que una red IP parezca hacia el exterior que emplea un especio de direcciones diferente del que en realidad usa. La utilidad más típica es hacer que una red que emplea direccionamiento privado se pueda conectar a Internet convirtiendo las direcciones IP en los paquetes que envía a direcciones públicas.

En esta práctica vamos a ver los conceptos básicos sobre cómo configurar NAT en los routers Cisco.

2. Material

3. Avisos generales

Para evitar problemas con configuraciones de los routers en sesiones anteriores de prácticas lo primero que deben hacer cuando enciendan el router es borrar el fichero de configuración que carga en el arranque, es decir:

Router# erase startup-config

Una vez hecho esto reinicien el router (comando reload). Al terminar de arrancar y no encontrar el fichero de configuración el sistema ejecuta un script (setup) para realizar una primera configuración del router. Salgan del script indicando que no quieren configurar nada. Con eso ya tendrán una configuración en curso limpia (running-config). Guárdenla como el nuevo fichero de configuración de arranque:

Router# copy running-config startup-config

A continuación configuren de nuevo la password de enable (telemat) y el acceso por telnet (password lpr2003).

Y recuerden: Nunca le digan que sí a que borre la flash dado que en ella se encuentra el sistema operativo. Si por error proceden a borrar la flash no reinicien ni apaguen el router y avisen al profesor de prácticas.

Tengan cuidado si conectan/desconectan cables a los PCs o a los routers (monitores, teclados, cables de red, de alimentación...) para evitar que se estropeen los conectores. No atornillen fuertemente las conexiones.

4. NAT

Un router en el que se haya configurado NAT tendrá normalmente al menos un interfaz en el interior de la red y otro en el exterior. Normalmente se configura NAT en el router de salida de una red. Cuando un paquete está saliendo del dominio, NAT convierte la dirección IP origen en una dirección pública. Cuando un paquete entra en el dominio, NAT convierte la dirección pública destino en el mismo en la dirección local apropiada.

Un router configurado con NAT no anuncia rutas de las redes internas hacia el exterior. Sin embargo, sí puede utilizar la información de enrutado que recibe del exterior.

El Cisco IOS define como el interior o inside a las redes cuyas direcciones deben ser convertidas. El espacio de direcciones del interior se llama el espacio local y el del exterior es el global. Las redes a las que se conecta el interior se llaman el exterior o outside.

Veamos las siguientes definiciones:

5. Conversión estática

Creen la simple topología física de la figura 1.

Figura 1.- Dos redes

Una de las redes (Red B) representará el interior y la otra (Red A) el exterior. En el interior emplearemos el espacio de direcciones 192.168.0.0/24. Para el exterior emplearemos el espacio de direcciones 10.0/16.

Asignen dirección a los interfaces del router y a los hosts, así como router por defecto a estos últimos.

Si prueban a hacer ping desde el PC2 al PC1 debería funcionar. En el caso de que realmente la red interior emplease direccionamiento privado y la red exterior fuera Internet entonces el router no debería reenviar estos paquetes. El router incluiría algún tipo de reglas de filtrado que evitase este reenvío. En esta asignatura no vamos a ver cómo realizar estos filtrados. Dejen ese ping funcionando y pongan un tcpdump en PC1 para ver los paquetes de ICMP que recibe.

Vamos a hacer que el router cambie la direccción del PC2 en los paquetes que reenvíe. Para ello estableceremos una regla de conversión estática en modo global de configuración con el comando:

Router(config)# ip nat inside source static direccion-local direccion-global

En dicho comando direccion-local debe ser la dirección IP del PC en la red interior y direccion-global la dirección por la que queremos que haga el cambio el router. Escoja una dirección de la red A y tengan en cuenta que ningún otro host en la red exterior puede tener asignada esa dirección.

A continuación debemos especificar qué interfaz está conectado al interior y cuál al exterior. Entren en modo configuración del interfaz que esté conectado al interior y ejecuten el comando:

Router(config-if)# ip nat inside

Entren en modo configuración del interfaz que esté conectado al exterior y ejecuten el comando:

Router(config-if)# ip nat outside

Verán que desde que ejecutaron este último comando los paquetes ICMP que recibe PC1 ya no vienen de la IP real de PC2 sino que vienen de la IP global que hemos asignado. Esa IP la hemos escogido de la red externa, es decir, es una IP de la red a la que pertenece PC1. Vean que la cache ARP del router tiene una nueva entrada permanente que corresponde a esa IP global, es decir, hace proxy ARP de ella en la red externa.

Checkpoint
Muestren al profesor de prácticas que les funciona.

6. Conversión dinámica

Ahora vamos a crear un conjunto (pool) de direcciones globales que el router empleará para convertir las direcciones internas a ellas.

Primero definimos el pool de direcciones públicas disponible:

Router(config)# ip nat pool nombre ip-comienzo ip-final netmask mascara

Donde nombre no es más que un nombre que le damos a este pool para poder hacer referencia a él más tarde. Estamos definiendo un rango de direcciones IP, las que vayan desde ip-comienzo a ip-final. Y finalmente indicamos la máscara de la red a la que pertenecen estas direcciones.

A continuación creamos una lista de acceso con las direcciones de las máquinas a las que convertiremos la dirección IP. No vamos a ver listas de acceso, así que el comando a ejecutar en nuestro caso es:

Router(config)# access-list 1 permit 192.168.0.0 0.0.0.255

Donde estamos creando la lista de acceso 1 que indica permitir (lo que sea) a las IPs de la red 192.168.0.0 cuyos últimos 8 bits (los que están a 1 en 0.0.0.255) pueden tener cualquier valor.

Lo siguiente es indicarle que esa lista de acceso contiene las IPs que queremos convertir:

Router(config)# ip nat inside source list 1 pool nombre

Donde nombre es el nombre que hemos dado al pool.

Lo único que queda es indicar igual que hicimos antes qué interfaz es el interior y cuál el exterior.

Configuren NAT como se acaba de explicar con un pool de solo 3 direcciones. Hagan un ping desde PC2 a PC1. Pueden ver las conversiones que está haciendo el router con el comando show ip nat translations. Cambien la dirección IP del PC2 a otra de la Red B y hagan ping de nuevo (seguramente tendrán que volver a configurar el router por defecto en el PC). Verán una nueva entrada en la tabla de conversiones. Cambien PC2 a otra IP diferente de las anteriores y hagan ping de nuevo. Si cambian a una cuarta IP diferente y hacen ping verán que no funciona, el router ha agotado el pool de direcciones.

Las entradas dinámicas en el pool de direcciones caducan tras cierto periodo de inactividad. El problema es que dicho periodo está configurado por defecto a 24h, pero se puede modificar.

Detengan los pings. Borren la tabla de conversiones del router con el comando:

Router# clear ip nat translations *

A continuación cambien el timeout de las conversiones dinámicas con el comando:

Router(config)# ip nat translation timeout segundos

Donde segundos es el número máximo de segundos de inactividad antes de borrar una entrada de conversión. Configuren un número pequeño de segundos.

Repitan el proceso de ir cambiando la dirección IP del PC2 y haciendo ping para agotar de nuevo el pool de direcciones. Cuando falle la conversión por agotamiento dejen el ping un rato hasta que expire el timeout de alguna de las conversiones que ya no se están empleando, momento en el cual empezará a funcionar. Vean cómo cambia la tabla de conversiones.

También pueden ver estadísticas con el comando show ip nat statistics.

7. Sobrecarga de la dirección exterior del router

En este apartado vamos a configurar que el router convierta todas las direcciones internas en su dirección externa. Para ello primero modifiquen la topología de la figura 1 añadiendo un PC3 a la Red B (ver figura 2).

Figura 2.- Dos redes y 3 PCs

De lo que han aprendido para la configuración con un pool necesitarán crear una lista de acceso como la que crearon en ese ejercicio. Lo que no necesitaremos es el pool, dado que la IP del router es todo el pool disponible.

Activamos NAT con el siguiente comando:

Router(config)# ip nat inside source list 1 interface elinterfazexterno overload

Donde elinterfazexterno debe ser el nombre del interfaz del router conectado al exterior.

Una vez hecho esto (y especificado el interfaz interior y el exterior) prueben a conectarse por ssh al PC1 desde el PC2 y desde el PC3 simultáneamente. Vean las entradas que aparecen en la tabla de conversiones y vean los paquetes en las dos redes con tcpdump.

8. Conexión a la red del laboratorio empleando NAT

A continuación preparen la siguiente disposición física:

Figura 3.- Router a la red del laboratorio

Empleen el espacio de direcciones 10.0.32+grupo*16.0/24 en la red interna. Activen que R1 haga NAT empleando como dirección externa solo la de su interfaz. La IP para PC2 será 10.0.0.grupo+16.

Realicen conexiones a máquinas del laboratorio desde PC1 y PC3. Vean los paquetes con tcpdump en la red interior y la red exterior. ¿Hace falta modificar la tabla de rutas del router de acceso?

Checkpoint
Expliquen al profesor de prácticas cómo funciona esta conversión.

7.- Conclusiones

En esta práctica hemos visto unos ejemplos básicos de la configuración de NAT en los routers Cisco, tanto con conversiones estáticas como dinámicas o sobrecargando el uso de direcciones.

Si disponen en casa de algún tipo de wireless router, router adsl o similar con una pequeña red interna investiguen si están empleando NAT.


Depto. Automática y computación
Universidad Pública de Navarra
Daniel Morató
daniel.morato@unavarra.es