En Windows puedes utilizar netsh para realizar una redirección de un puerto a otro con su opción portproxy y puedes utilizarlo para redirigir tráfico de un servidor a otro o una conexión a otra. Aunque recuerda que lo recomendable es utilizar un Configurar un proxy inverso con IIS para aplicaciones Web.
En un sistema Linux, puedes utilizar iptables para realizar esta acción. Por ejemplo, en el siguiente artículo explica Cómo redireccionar el puerto 587 al 25 y para aplicaciones Web también es recomendado realizar un proxy inverso con un servidor Web (Proxy inverso con Apache).
En este artículo explicará cómo realizar una redirección de un puerto hacia otro en un escenario de ejemplo en un servidor Windows y adicionalmente, algunos comandos adicionales de utilidad para esta función.
Información
Actualmente la función proxy de puerto de la interfaz de netsh solo soporta protocolo TCP.
Escenario de ejemplo
En el escenario de ejemplo, se utilizará un IIS configurado en el servidor y escuchando por el puerto por defecto 80 TCP (HTTP):
C:\Users\administrator>netstat -a -b | findstr 0.0.0.0:80
TCP 0.0.0.0:80 windows:0 LISTENING
C:\Users\administrator>curl -I localhost
HTTP/1.1 404 Not Found
Content-Length: 315
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 09 Nov 2022 21:50:50 GMT
Connection: close
Creación de portproxy
Para crear un portproxy y que todo el tráfico que entre por un puerto, en este caso el 81 TCP del servidor y que lo redireccione hacia el puerto 80 TCP donde esta el IIS, sería con el siguiente comando:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=81 connectaddress=0.0.0.0 connectport=80
Una vez ejecutado el comando, el servidor tendrá una conexión abierta por el puerto 81 TCP:
C:\Users\administrator>netstat -a -b | findstr :81 TCP 0.0.0.0:81 windows:0 LISTENING
Cómo resultado o petición, la conexión por el puerto redirigirá todo el tráfico al puerto 80 TCP:
C:\Users\administrator>curl -I localhost:81
HTTP/1.1 404 Not Found
Content-Length: 315
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 09 Nov 2022 22:08:45 GMT
Connection: close
Comandos adicionales
Para listar todos los proxy de puertos, puedes ejecutar lo siguiente:
netsh interface portproxy show all
Para listar únicamente los proxy de IPv4:
netsh interface portproxy show v4tov4
Y para eliminar un portproxy, introduce la información del listen con la opción delete:
netsh interface portproxy delete v4tov4 listenport=puerto listenaddress=dirección
En el siguiente ejemplo, se eliminaría la conexión por el puerto 81 TCP creada anteriormente:
netsh interface portproxy delete v4tov4 listenport=81 listenaddress=0.0.0.0
Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites, consúltanos!