reenvío de puertos en windows


262

Tengo dos placas de red en mi pc:

La principal tiene la ip local -> 192.168.1.111 La secundaria tiene la ip local -> 192.168.0.200

El principal tiene conexión a Internet y el segundo está conectado a un dispositivo con IP 192.168.0.33, tiene un servidor http en el puerto 80.

Tengo un servidor apache en la conexión principal (puerto 4422), y puedo acceder desde cualquier lugar, lo que quiero ahora es cuando detecto una conexión desde 4422 y quiero redirigir esta conexión a 192.168.2.33:80

¿Cómo puedo hacer esto con Windows?


Respuestas:


507

Lo he resuelto, se puede hacer ejecutando:

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

Para eliminar el reenvío:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

Documentos oficiales


21
Solo asegúrese de tener instalado IPv6. De acuerdo con este artículo de MS KB , netsh necesita algunas bibliotecas de IPv6 para configurar la función de proxy de puerto.
— Renan Mozone

10
Además, puede hacer la limpieza usando netsh interface portproxy reseto netsh interface portproxy delete
— patrikbeno

77
Intenté usar esta técnica y, aunque funcionó, fue extremadamente lenta. En lugar. Encontré una utilidad llamada PassPort ( sourceforge.net/projects/pjs-passport ) que realiza el mismo tipo de reenvío de puertos vinculado a una NIC específica, pero no tiene los problemas de rendimiento netsh. Se instala y funciona bien en Win2008SvrR2.
— James L.

14
El comando anterior no me funcionó en Windows7 ni en Windows Server 2003. También tuve que especificar el parámetro protocol = tcp . Comando completo:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
— alwi

3
TEN EN CUENTA que esto solo funciona en TCP , así que no hay suerte si desea reenviar tráfico UDP.
— user276648

14

nginx es útil para reenviar HTTP en muchas plataformas, incluido Windows. Es fácil de configurar y ampliar con una configuración más avanzada. Una configuración básica podría verse así:

events {}

http {
     server {

        listen 192.168.1.111:4422;

        location / {
            proxy_pass http://192.168.2.33:80/;
        }
     }
}

14
Esta es una buena solución para el reenvío HTTP, pero solo para el reenvío HTTP (con todas sus advertencias, por ejemplo, los websockets necesitan configuración adicional). Para el reenvío HTTPS u otros protocolos arbitrarios (por ejemplo, RDP) es inútil en su mayoría.
— Uli Köhler

2
Dicho esto, es una solución increíblemente buena para el reenvío HTTP, así que me alegro de que esté aquí.
— Casey

¿Porqué es eso? Puede transmitir lo que quiera, incluyendo https
— user1156544

@uli, ¿qué configuraciones estás haciendo sobre ... Será útil compartir
— user3787216

1
@ UliKöhler Nginx es una herramienta para desacoplar conexiones TCP. Puede usarlo para HTTP, HTTPS, AMQP, WebSockets, lo que sea. Es utilizado internamente por herramientas de todo el mundo para redirigir y administrar la conectividad TCP general. Entonces, esta es la solución correcta. Ver también netfxharmonics.com/2016/03/nginx
— David Betz

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.