Para explicar realmente el reenvío de puertos, primero tienes que entender un poco más sobre lo que hace tu router. Su proveedor de servicios de Internet asigna una dirección IP a su conexión de Internet. Todos los ordenadores en Internet necesitan una dirección IP única, pero tienes varios ordenadores en tu casa y sólo una dirección. Entonces, ¿cómo funciona esto?
Si sabes lo que es y sólo quieres saber cómo hacerlo : http://portforward.com/ tiene un “how-to” con capturas de pantalla para literalmente cientos de routers diferentes. La documentación está ahí escondida detrás de una página de anuncios para su herramienta de configuración automática de puertos. (Sólo haga clic alrededor de un poco y lo encontrará.)
NAT - ¿Qué es? ¿Por qué lo usamos?
Tu enrutador doméstico tiene una función llamada Traducción de Dirección de Red, o NAT, incorporada. Dentro de tu red, las computadoras tienen direcciones como 192.168.1.100. Todas las direcciones en el rango de 192.168.* (o en el rango de 10.\N) son direcciones _ privadas “_ o _ reservadas ”_. Estas direcciones son oficialmente asignadas por la IANA para ser usadas dentro de las redes privadas. Su enrutador asigna automáticamente tal dirección a cada computadora conectada vía DHCP . Estas direcciones son la forma en que los equipos de su red se comunican con el enrutador y entre sí.
Su enrutador tiene una interfaz de red separada que lo conecta a Internet. Esta interfaz tiene una dirección muy diferente que es asignada por tu ISP. Esta es la única dirección que mencioné antes, y tu enrutador la usa para comunicarse con otras computadoras en Internet. Las computadoras dentro de su red tienen direcciones IP privadas no enrutadas, lo que significa que si envían paquetes directamente a Internet, los paquetes se descartarán automáticamente (los paquetes con direcciones privadas no pueden atravesar la Internet por razones de estabilidad). Pero su enrutador tiene una dirección routable. La traducción de direcciones de red, como su nombre indica, traduce entre estos dos tipos de direcciones, lo que permite que los múltiples ordenadores dentro de su red aparezcan en Internet como un solo ordenador con una dirección.
Los detalles
Aunque esto pueda parecer complicado, en realidad es bastante sencillo cómo lo hace su router. Cada vez que un equipo dentro de la red quiere conectarse a un equipo en Internet, envía la solicitud de conexión al enrutador (sabe que debe enviarla al enrutador porque su parámetro Pasarela por defecto está configurado con la dirección del enrutador). El enrutador entonces toma esa solicitud de conexión (una “solicitud SYN” en TCP/IP) y cambia la dirección de origen (la “dirección de respuesta” o de retorno) y la cambia de la IP privada de la computadora a la IP pública del enrutador, de modo que la respuesta sea enviada al enrutador. Luego toma nota en una base de datos (llamada la tabla NAT) de que la conexión fue iniciada, para que la recuerde más tarde.
Cuando la respuesta regresa de la computadora remota (un “SYN-ACK”), el enrutador mira en su tabla NAT y ve que una conexión a ese host en ese puerto fue iniciada previamente por una computadora privada de su red, cambia la dirección de destino a la dirección privada de la computadora, y la reenvía dentro de su red. De esta manera, los paquetes pueden seguir transitando de ida y vuelta entre las redes, y el enrutador cambia las direcciones de manera transparente para que funcione. Cuando la conexión se termina, el enrutador sólo lo elimina de la tabla NAT.
O piénsalo de esta manera
Esto podría ser un poco más fácil de visualizar con una metáfora - digamos que eres un agente de carga en los EE.UU. trabajando con clientes chinos. Necesitan enviar paquetes a muchos clientes en los EE.UU., pero es más fácil por razones de aduana/papeleo enviar paquetes sólo a un lugar. Entonces, un paquete le llega de uno de sus clientes en China (la red privada, en este ejemplo) con un destino real en algún lugar de los EE.UU. (Internet). Usted cambia la etiqueta de la dirección de la caja a la dirección (pública) de los EE.UU., y cambia la dirección de retorno a su propia dirección pública (ya que no se puede devolver directamente a China sin molestar al cliente) y lo entrega al servicio postal. Si el cliente devuelve el producto, te llega a ti. Lo buscas en tus registros y ves de qué compañía en China vino, y cambias el destino a esa compañía (su dirección privada) y la dirección de retorno a tu dirección privada, para que puedan enviar un reemplazo a través de ti.
Esto funciona muy bien, pero hay un pequeño problema. ¿Qué pasa si un cliente necesita enviar algo a la compañía, digamos un giro postal como pago de algo? O, digamos que un ordenador en Internet inicia una conexión con el router (una petición SYN), digamos a un servidor web que está en la red. La carta/paquete sólo tiene la dirección pública del enrutador en él, así que el enrutador en realidad no sabe a dónde enviarlo! podría estar destinado a cualquiera de los ordenadores en el privado de la red, o para ninguno de ellos. Puede que hayas experimentado este problema cuando llamas al teléfono de casa de alguien - cuando te llaman no hay problema, pero cuando les llamas no hay forma de que sepan para quién es la llamada, así que la persona equivocada podría responder.
Aunque es bastante fácil para los humanos resolver esto, es mucho más complicado para los ordenadores, porque no todos los ordenadores de la red conocen a todos los demás.
Y finalmente llegamos a Port Forwarding
Port Forwarding es la forma de solucionar este problema: es una forma de decirle al router a qué ordenador de la red deben dirigirse las conexiones entrantes. Tenemos tres maneras diferentes de hacerlo:
- Faux-DMZ : muchos routers tienen una característica llamada DMZ. Esto significa Zona Desmilitarizada, que es una especie de configuración de seguridad de la red. La DMZ en los enrutadores caseros se conoce como faux-DMZ porque carece de las características de una DMZ real. Lo que hace es el tipo más simple de manejo de conexiones entrantes: todas las solicitudes de conexión entrantes serán enviadas a una especificada dentro de su red. Es muy simple: escribes una dirección IP en la configuración de tu enrutador, y todas las conexiones entrantes van allí. Sin embargo, esto no siempre funciona, ya que puedes tener varios equipos que necesitan aceptar las conexiones entrantes. Para eso, tenemos…
- Reenvío de puertos : Todas las solicitudes de conexión de red incluyen un “puerto”. El puerto es sólo un número, y es parte de cómo una computadora sabe qué es el paquete. IANA ha especificado que el puerto 80 se utiliza para HTTP. Esto significa que un paquete entrante que diga el puerto 80 debe ser una solicitud destinada a un servidor web. El reenvío de puertos en el enrutador permite introducir un número de puerto (o posiblemente un rango o combinación de números, dependiendo del enrutador) y una dirección IP. Todas las conexiones entrantes con un número de puerto que coincida serán reenviadas al ordenador interno con esa dirección.
- Reenvío de puerto UPnP : El reenvío UPnP funciona exactamente de la misma manera que el reenvío de puertos, pero en lugar de configurarlo, el software de un ordenador dentro de la red configura automáticamente el enrutador para que reenvíe el tráfico de un puerto determinado a él.
Un ejemplo
Veamos un ejemplo de uso. Muchos videojuegos multijugador (por ejemplo, Counter Strike) permiten ejecutar un servidor de juegos en el ordenador al que otras personas pueden conectarse para jugar con usted. El equipo no conoce a todas las personas que desean jugar, por lo que no puede conectarse a ellas; en su lugar, deben enviar nuevas solicitudes de conexión al equipo desde Internet.
Si no tiene nada configurado en el router, recibirá estas solicitudes de conexión pero no sabrá qué equipo de la red tiene el servidor de juegos, por lo que simplemente las ignorará (o, más específicamente, enviará un paquete indicando que no puede conectarse). Afortunadamente, sabe el número de puerto que estará en las solicitudes de conexión para el servidor del juego. Así que, en el router, se establece un puerto de reenvío con el número de puerto que el servidor de juegos espera (por ejemplo, 27015) y la dirección IP del ordenador con el servidor de juegos (por ejemplo, 192.168.1.105).
El router sabrá reenviar las peticiones de conexión entrantes a 192.168.1.105 dentro de la red, y los ordenadores de fuera podrán conectarse dentro.
Otro ejemplo sería una red local con dos máquinas, donde la segunda con la IP 192.168.1.10 aloja un sitio web usando Apache. Por lo tanto, el enrutador debería reenviar las peticiones entrantes del puerto 80 a esta máquina. Usando el reenvío de puertos, ambas máquinas pueden funcionar en la misma red al mismo tiempo.
Los videojuegos son quizás el lugar más común en el que los usuarios habituales encontrarán el reenvío de puertos, aunque la mayoría de los juegos modernos usan UPnP para que no tenga que hacerlo manualmente (en cambio, es totalmente automático). Sin embargo, tendrás que hacerlo siempre que quieras poder conectarte directamente a algo en tu red (en lugar de hacerlo a través de algún intermediario en Internet). Esto podría incluir la ejecución de su propio servidor web o conectarse a través del Protocolo de Escritorio Remoto a una de sus computadoras.
Una nota sobre la seguridad
Una de las cosas buenas de NAT es que proporciona algo de seguridad incorporada sin esfuerzo. Mucha gente vaga por Internet buscando máquinas que sean vulnerables… y lo hacen intentando abrir conexiones con varios puertos. Estas son conexiones entrantes, así que, como se discutió anteriormente, el enrutador las eliminará. Esto significa que en una configuración NAT, sólo el propio router es vulnerable a los ataques que involucran conexiones entrantes. Esto es algo bueno, porque el router es mucho más simple (y por lo tanto menos probable que sea vulnerable) que una computadora que ejecuta un sistema operativo completo con mucho software. Debe tener en cuenta, entonces, que al DMZar un ordenador dentro de su red (configurándolo como el destino DMZ) pierde esa capa de seguridad para ese ordenador: élestá ahora completamente abierto a las conexiones entrantes de Internet, así que tienes que asegurarlo como si estuviera directamente conectado. Por supuesto, cada vez que reenvías un puerto, el ordenador del extremo receptor se vuelve vulnerable en ese puerto específico. Así que asegúrate de ejecutar un software actualizado y bien configurado.