miércoles, 5 de marzo de 2008

Un poquito de NAT, puertos, port forwarding...

Ya he hablado en otro sitio de NAT, y hay muchas páginas que explican cómo funciona, en qué orden, definiciones importantes y cómo verificar su funcionamiento. Muy por encima, un router NAT transforma las direcciones de origen (S) y destino (D) de los paquetes. En el siguiente diagrama vemos como la máquina 10.0.0.1 se conecta con un servidor web (IP 138.76.29.7, puerto 80). La red 10 es una red de uso privado, no enrutable. El router traduce la dirección interna por la IP pública que tiene asignada (138.76.29.7). Cuando el servidor web responde lo hace a la IP pública del router, que mira en su tabla NAT, deshace la transformación hecha en el segundo paso y lo reenvía a la máquina que originó la petición.

La situación anterior quedaría configurada en un router Cisco de la siguiente forma:

!--- definimos el pool con la IP pública asignada por el proveedor
ip nat pool 1 138.76.29.7 138.76.29.7 netmask 255.255.255.255 overload
!--- creamos una lista de acceso que permita las direcciones internas
access-list 10 permit 10.0.0.0 0.0.0.255
!--- configuramos el NAT conectando la lista de acceso con el pool
ip nat inside source list 10 pool 1
!--- aplicamos el NAT en la interfaz interna
interface ethernet 0
ip nat inside
!--- y en la interfaz externa
interface serial 0
ip nat outside

Otra forma de configurar el NAT en este ejemplo sin definir un pool sería usando la siguiente variante:

ip nat inside source list 10 interface Ethernet 0 overload

En este ejemplo la entrada en la tabla NAT del router se crea dinámicamente y al cabo de unos minutos de dejar de usarse la entrada se borra. Si la misma máquina necesita más tarde volver a bajar información del mismo servidor se repite la operación, seguramente con diferentes puertos. ¿Pero qué pasa si necesitamos dar paso desde el exterior ("abrir los puertos") a una máquina interna? Necesitamos hacer un NAT estático o "port forwarding", reenviando los paquetes que lleguen al router a la máquina interna correspondiente. En el siguiente ejemplo los paquetes que llegan al router a los puertos 6881-6889 son reenviados a la máquina interna 192.168.0.100, mientras que los correspondientes al rango 6991-6999 son enviados a la máquina 192.168.0.103

¿Cómo se configura el port forwarding? He encontrado la página portforward.com que muestra paso a paso cómo configurar el port forwarding en los routers y aplicaciones más conocidas, por ejemplo el remote desktop (TCP 3389) en un OfficeConnect WL540 de 3COM. Merece la pena darse una vuelta y ver cómo se configura el NAT en diferentes modelos.

Si le gustó este post puede suscribirse a nuestro Feed RSS. (¿Qué es RSS?).

3 comentarios:

Guidus dijo...

Hola Antonio, estuve leyendo varios de los articulos de tu blog, son muy interesantes y bastante didácticos, Felicidades!!!

Saludos desde Potosi-Bolivia

Wan Link Sniper dijo...

¡Gracias, Guidus!

Anónimo dijo...

hola,una consulta,yo tengo un router cisco 857 y deseo habilitra un rango de puertos pero tenmgo q hacer varias lines porque son varios puertos,hay alguna manera mas facil de hacerlo,y tambien quiero habilitar la conexion inalamabrica,espero su ayuda,gracias de antemano