Redirección de puertos Departamento de Sistemas Telemáticos y Computación (GSyC) http://gsyc.urjc.es Octubre de 2012 GSyC - 2012 Redirección de puertos 1
c 2012 GSyC Algunos derechos reservados. Este trabajo se distribuye bajo la licencia Creative Commons Attribution Share-Alike 3.0 GSyC - 2012 Redirección de puertos 2
NAT: Network Address Translation Según el diseño original de IPv4, todos los equipos están conectados directamente a la red Pero la escasez de direcciones IPv4 y la reticencia a desplegar IPv6 ha hecho omnipresente el uso de NAT, que complica la estructura de toda la red GSyC - 2012 Redirección de puertos 3
Puertos NAT: Network Address Translation Puertos En el nivel de red, la dirección IP identifica el interfaz de una máquina. Dentro de una máquina, es necesario distinguir un proceso de otro. Por eso el nivel de transporte introduce el concepto de puerto En cada dirección se distinguen 65535 puertos TCP y 65535 puertos UDP Cada servicio tiene asociado un puerto por omisión. Puede consultarse en el fichero /etc/services (Unix) %systemroot%\system32\drivers\etc (Windows) Es habitual, aunque no obligatorio, que se reserve tanto el puerto TCP como el UDP para el mismo servicio En los puertos hasta el 1023, inclusive, solo pueden atarse procesos cuyo dueño sea root En los puertos del 1024 al 65535 se puede atar cualquier proceso. GSyC - 2012 Redirección de puertos 4
/etc/services NAT: Network Address Translation Puertos ssh 22/tcp ssh 22/udp smtp 25/tcp mail www 80/tcp http www 80/udp pop3 110/tcp pop-3 pop3 110/udp pop-3 sunrpc 111/tcp portmapper sunrpc 111/udp portmapper ntp 123/tcp ntp 123/udp irc 194/tcp irc 194/udp ldap 389/tcp ldap 389/udp https 443/tcp https 443/udp rsync 873/tcp rsync 873/udp GSyC - 2012 Redirección de puertos 5
Direcciones públicas y privadas Direcciones públicas y privadas NAT permite que una red con rango de direcciones IP privadas pueda acceder a máquinas con direcciones IP públicas compartiendo una única dirección pública, la del router que hace NAT En el router que hace NAT, se asocia una dirección pública y un puerto (del router) con una dirección privada y un puerto (de una máquina de la red privada) GSyC - 2012 Redirección de puertos 6
Direcciones públicas y privadas En la arquitectura cliente/servidor, normalmente es el cliente quien inicia la conexión Cliente detrás del NAT: por ser el cliente quien empieza, el router puede ver qué dirección privada:puerto está usando, y automáticamente asociarlo con la dirección pública:puerto Servidor detrás del NAT: Cuando el cliente envía una petición, el servidor aún no ha hablado, por tanto no se puede establecer automáticamente la relación dirección privada:puerto Hay que hacerlo a mano, lo que se denomina Port forwarding, o en español, informalmente, abrir puertos GSyC - 2012 Redirección de puertos 7
Configuración del Port Forwarding Configuración del Port Forwarding El Port forwarding se hace de forma muy similar en todos los routers. Las instrucciones concretas para prácticamente cualquier router podemos encontrarlas en www.portforward.com En nuestro caso lo haremos en el router integrado en VirtualBox El NAT de virtualbox se configura con el mandato VBoxManage (Se ejecuta en el Host, que es donde esá el router) Como es largo y mezcla mayúsculas y minúsculas, podemos definir alias vbm= VBoxManage GSyC - 2012 Redirección de puertos 8
Configuración del Port Forwarding Ejemplo: Definimos la regla apache para que las conexiones a la IP del host, puerto 10080 TCP, vayan al interfaz 0 del la dirección IP del guest mv01, puerto 80 vbm setextradata "mv01" "VBoxInternal/Devices/e1000/0/LUN#0/Config/regla_apache/Protocol" TCP vbm setextradata "mv01" "VBoxInternal/Devices/e1000/0/LUN#0/Config/regla_apache/GuestPort" 80 vbm setextradata "mv01" "VBoxInternal/Devices/e1000/0/LUN#0/Config/regla_apache/HostPort" 10080 (e1000 se corresponde con la tarjeta de red Intel Network Adapter, podría ser pcnet) Para verificar que la regla está bien instalada vbm getextradata mv01 enumerate Para borrar una regla, la creamos sin argumento vbm setextradata "mv01" "VBoxInternal/Devices/e1000/0/LUN#0/Config/regla_apache/Protocol" Tras cargar las reglas, es necesario detener y reiniciar VirtualBox Para ver en el router las conexiones abiertas netstat -tupan GSyC - 2012 Redirección de puertos 9
Llamadas a un servidor tras un NAT Llamadas a un servidor tras un NAT Como usamos un puerto no estándar para el servicio, hay que indicarlo expĺıcitamente en el cliente. La sintaxis cambia con cada aplicación scp -P 10080 usuario@maquina:/trayecto/fichero. http://maquina:10080 ssh user@localhost -p 10080 GSyC - 2012 Redirección de puertos 10
Llamadas a un servidor tras un NAT Observaciones: Es un error muy frecuente intentar emplear en el cliente la dirección y/o el puerto que tiene el servidor en la red privada. La dirección y el puerto que ve el cliente es la dirección pública, la dirección de la máquina que hace NAT En Debian/Ubuntu, la configuración por omisión no incluye servidor de SSH. Si lo necesitamos, debemos instalarlo expĺıcitamente GSyC - 2012 Redirección de puertos 11