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?

usuario1256477
fuente
Más información se puede encontrar aquí. technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx
Shankar Damodaran

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

usuario1256477
fuente
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/;
        }
     }
}
Jonas Lundgren
fuente
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