Buscar

Windows: Reenvío de puertos

En sistemas Windows, nos podemos encontrar con que queramos configurar el reenvío de puertos (port forwarding): es decir, que un puerto reenvíe a otro.

Muchos pensaran que es necesario configurar el servicio: RemoteAccess (Enrutamiento y acceso remoto) de Windows Server:


Lo cierto es que no es necesario el servicio de RemoteAccess de Windows Server: a partir de Windows Server 2003 y Windows XP disponemos del comando: netsh interface portproxy

Con netsh interface portproxy podemos realizar reenvíos de puertos TCP (Transmission Control Protocol). Cuidado, por que no podremos realizar reenvíos de puertos UDP (User Datagram Protocol).

Veamos algunos ejemplos de su funcionamiento:

Ver parámetros disponibles:

netsh interface portproxy help

Ver reenvíos actuales:

netsh interface portproxy show all

Eliminar reenvíos:

netsh interface portproxy reset

Crear reenvíos:

netsh interface portproxy add v4tov4 listenport=25 listenaddress=0.0.0.0 connectport=25 connectaddress=192.168.1.130

En este ejemplo, realizamos un reenvío de la IP: 

Sobre todos los interfaces locales (0.0.0.0), puerto 25, reenviamos a la IP: 192.168.1.130, puerto 25 (SMTP).

Para eliminar un reenvío:

netsh interface portproxy delete v4tov4 listenport=25 listenaddress=0.0.0.0

Veamos un laboratorio completo de su funcionamiento:

Antes de empezar, deberíamos o bien desactivar el firewall o bien configurar el acceso al puerto como regla en el firewall.

Por ejemplo, imaginemos que realizamos un reenvío de puerto al puerto 21 local.

La dirección IP del equipo local es: 10.48.0.130

La regla en el firewall de Windows, sería la siguiente:

netsh advfirewall firewall add rule name="FTP-port21" protocol=TCP dir=in localip=10.48.0.130 localport=21 action=allow

Ahora sí, vamos a realizar el laboratorio de reenvío de puertos desde una ventana de CMD:

Windows: Reenvío de puertos

Resultado:

Todas las peticiones al interfaz de localhost (127.0.0.1) al puerto 21 serán redirigidas a la dirección IP: 10.48.0.35, puerto 21.

Explicación paso a paso:

Paso1:

Ejecutamos:

netstat -an|find /i ":21"

Explicación:

Con el comando netstat -an, listamos todas las conexiones activas en formato numérico, la salida de su ejecución es pasada con una pipe al comando find que hará un filtrado de la salida del texto en búsqueda de la cadena ":21". En la salida de su ejecución, podemos ver como no hay ninguna conexión activa sobre ningún interfaz de red sobre el puerto 21. El puerto 21, corresponde al puerto del servicio FTP.

Paso2:

Ejecutamos:

netsh interface portproxy show all

Explicación:

Tras ejecutar netsh interface portproxy show all, vemos todos los reenvíos de puertos (port forwardings) configurados. Como no hemos configurado ningún reenvío de puerto, no obtenemos ningún resultado.

Paso3:

Ejecutamos:

netsh interface portproxy reset

Explicación:

netsh interface portproxy reset para eliminar los reenvíos de puertos previamente configurados. Este paso no seria necesario ya que en el paso anterior hemos visto como no aparecen reenvíos configurados.

Paso4:

Ejecutamos:

netsh interface portproxy add v4tov4 listenport=21 listenaddress=0.0.0.0 connectport=21 connectaddress=10.48.0.35

Explicación:

Configuramos el reenvío de puertos (port forwarding) de la siguiente forma:

Ejecución desde el equipo local:

* Equipo remoto = IP: 10.48.0.35 - Puerto: 21
* Equipo local (todos los interfaces) = IP: 0.0.0.0 - Puerto: 21

Paso5:

Ejecutamos:

netsh interface portproxy show all

Explicación:

Volvemos a ejecutar netsh interface portproxy show all y vemos todos los reenvíos de puertos (port forwardings) configurados. En esta ocasión vemos la regla configurada en el paso anterior:

Dirección       Puerto      Dirección       Puerto
--------------- ----------  --------------- ----------
0.0.0.0         21          10.48.0.35      21

Paso6:

Ejecutamos:

netstat -an|find /i ":21"

Explicación:

Volvemos a ejecutar como en el paso1, el listado de conexiones activas del equipo en busca de la cadena ":21".

En el primer paso, no hemos obtenido resultados.

Ahora obtenemos el siguiente resultado:

TCP    0.0.0.0:21             0.0.0.0:0

De esta forma vemos como el puerto 21 está enlazado a todos los interfaces de red (0.0.0.0).

Paso7:

Ejecutamos:

start telnet 127.0.0.1 21

Explicación:

Con el comando start telnet, iniciamos el comando telnet en otra ventana.

Al comando telnet, le pasamos como parámetro, la dirección IP de localhost (127.0.0.1) y el puerto 21.

Vemos como aparece una ventana nueva con el banner del servidor de FTP.

Si no disponemos del comando telnet, podemos instalarlo de forma rápida:


No hay comentarios:

Publicar un comentario en la entrada