Cómo configurar el reenvío de puertos en Windows

Configurar el reenvío de puertos en Windows puede parecer sencillo, pero resulta un poco extraño la cantidad de pequeñas peculiaridades que presenta. Quizás intentas exponer un servicio a internet o simplemente necesitas redirigir el tráfico local entre puertos, y las herramientas integradas de Windows son una buena opción. El comando netsh interface portproxy suele ser la opción preferida, ya que funciona en prácticamente todas las versiones de Windows, desde XP hasta la última versión de Windows 11. Es muy útil, sobre todo si no estás listo para adentrarte en configuraciones de servidor completas o aplicaciones de terceros.

Uno de los mayores problemas es asegurarse de que se cumplan todos los requisitos previos, como comprobar que el servicio IP Helper esté en funcionamiento y que la compatibilidad con IPv6 esté habilitada. Sin estos, el portproxy podría simplemente ignorarte. Además, recuerda que estas reglas se mantienen después de reiniciar, así que puedes configurarlas y olvidarte…o al menos saber que tu configuración sobrevive a los reinicios.

¿Cómo habilitar el reenvío de puertos en Windows con Netsh Portproxy?

Cómo crear la regla básica de reenvío de puertos

  • Abra un símbolo del sistema de administrador. Necesita privilegios elevados o el comando no se ejecutará.
  • Comprueba que el puerto que quieres usar no esté siendo usado por otra aplicación. Ejecuta: netstat -na | find "3340". Si no aparece, no hay problema. También puedes verificarlo con PowerShell Test-NetConnection -ComputerName localhost -Port 3340.
  • Asegúrese de que el servicio IP Helper esté en ejecución: busque » Servicios» en el menú Inicio, busque «IP Helper» e inícielo si es necesario. O bien, en PowerShell, ejecute Get-Service iphlpsvc:
  • Determine su dirección IP actual si está realizando una redirección local: abra PowerShell y ejecute: ipconfig. Use esa IP en el siguiente comando.
  • Ahora, crea la regla de reenvío de puertos con:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

Reemplace 10.1.1.110 con su IP actual. Este comando redirige el tráfico entrante del puerto 3340 al puerto 3389 en la misma IP local. Es bastante sencillo, pero recuerde que el puerto de escucha no debe entrar en conflicto con otros servicios.

Cómo verificar que la regla esté activa

  • Ejecutar: netstat -ano | findstr :3340— Si ve que el puerto está escuchando, ¡genial! De lo contrario, asegúrese de que iphlpsvc esté ejecutándose y de que la compatibilidad con IPv6 esté habilitada en su adaptador de red (verifique en la configuración del adaptador).

Qué esperar después de la configuración

Esta regla permanecerá activa incluso después del reinicio, almacenada en el registro. Pero si desaparece, quizás tu servidor tenga scripts de limpieza extraños ejecutándose o no las hayas configurado correctamente. En una configuración, reiniciar borró algunas reglas en Server 2012 R2, así que creé un script por lotes para ejecutar este comando al iniciar con el Programador de tareas. No es precisamente elegante, pero funciona.

Configuración de reglas de firewall para el modo de reenvío de puertos en Windows

Hacer que el puerto de escucha sea accesible

  • Para permitir conexiones entrantes en el puerto 3340, necesitará una regla de firewall. Puede hacerlo mediante la línea de comandos:
netsh advfirewall firewall add rule name="forwarded_RDPport_3340" protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow

O, si prefieres PowerShell:

New-NetFirewallRule -DisplayName "forwarder_RDP_3340" -Direction Inbound -Protocol TCP -LocalPort 3340 -Action Allow

Solo asegúrate de abrir el puerto; de lo contrario, los clientes remotos no podrán acceder a tu servicio reenviado. Recuerda, si decides eliminar esta regla más adelante, ejecutar:

netsh advfirewall firewall del rule name="forwarded_RDPport_3340"

o

Remove-NetFirewallRule -Name "forwarder_RDP_3340"

Administración y solución de problemas de reglas de proxy de puerto

Cómo enumerar las reglas actuales

  • Ejecutar netsh interface portproxy show all: verás todas las reglas configuradas. Si quieres un volcado sin procesar, prueba netsh interface portproxy dump:
  • A veces, las reglas desaparecen tras reiniciar, sobre todo en algunos servidores. Para evitarlo, conviene añadir los comandos netsh a un script de inicio o a una tarea programada.

Cómo cambiar o eliminar reglas

  • Para actualizar una regla existente, utilice: netsh interface portproxy set v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3390 connectaddress=10.1.1.110
  • Para eliminar una regla, ejecute: netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
  • Para borrar todas las reglas a la vez, simplemente haz lo siguiente: netsh interface portproxy reset. Ten en cuenta que esto lo borra todo.

Notas adicionales: reenvío a IP remotas u otras redes

Si desea redirigir el tráfico a una máquina diferente, simplemente cambie connectaddress a la IP remota:

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101

Esto hace que tu máquina actúe como un relé. Pero ten en cuenta que el proxy de puerto no admite UDP y no puede diferenciar las IP de origen, por lo que todo el tráfico entrante parece provenir de tu host. Para un reenvío más avanzado o que tenga en cuenta el origen, tendrás que consultar dispositivos de firewall o reglas NAT de Hyper-V.

Para configuraciones de Hyper-V, también puede configurar reglas de NAT y reenvío de puertos con comandos de PowerShell, pero eso es otra historia. Implica crear su switch, configurar direcciones IP estáticas y luego usar Add-NetNatStaticMapping.

Sea cual sea el enfoque que elija, recuerde: configurar el reenvío de puertos no es muy complicado, pero requiere prestar atención a pequeños detalles, como conflictos de puertos, estados de servicio y reglas de firewall. Si esto no soluciona el problema, revisar las interfaces de red y asegurarse de que todos los servicios necesarios estén funcionando suele solucionar el problema.

Con suerte, esto le ahorrará algunas horas de prueba y error, y hará que su reenvío de puertos funcione sin muchos problemas.

Resumen

  • Verifique que el puerto no esté en uso antes de crear nuevas reglas.
  • Asegúrese de que el servicio IP Helper se esté ejecutando.
  • Úselo netsh interface portproxy addpara configurar el reenvío.
  • Abra los puertos necesarios en el Firewall de Windows.
  • Enumere reglas netsh interface portproxy show ally administrelas según sea necesario.

Resumen

Configurar el reenvío de puertos con las herramientas integradas de Windows no es perfecto, pero es bastante práctico y funciona en todas las ediciones. Simplemente revisa los servicios, puertos y reglas del firewall, y deberías poder redirigir el tráfico a donde debe ir. Si aún así no funciona, revisa tus direcciones IP y quizás reinicia para ver si las reglas se mantienen. A veces, un poco de paciencia y algunos ajustes en la línea de comandos son muy útiles para solucionar estos problemas de red. Y si esto consigue que una configuración funcione correctamente, es un éxito, ¿verdad?