Windows中的端口转发


262

我的电脑中有两个网络板:

主要的一个具有本地ip-> 192.168.1.111,第二个具有本地ip-> 192.168.0.200

主要的一个具有Internet连接,第二个连接到IP 192.168.0.33的设备,它在端口80中具有http服务器。

我在主连接(端口4422)中有一个apache-server,我可以从任何地方访问,现在我想要的是当我从4422中检测到连接时,我想将此连接重定向到192.168.2.33:80

如何在Windows中执行此操作?


Answers:


507

我已经解决了,可以完成执行:

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

删除转发:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

官方文档


21
只要确保已安装IPv6。根据此MS KB文章,netsh需要一些IPv6库来配置端口代理功能。
Renan Mozone

10
另外,您可以使用netsh interface portproxy resetnetsh interface portproxy delete
patrikbeno

7
我尝试使用此技术,虽然它起作用,但速度非常慢。代替。我发现了一个名为PassPort的实用程序(sourceforge.net/projects/pjs-passport),该实用程序执行绑定到特定NIC的相同类型的端口转发,但没有的性能问题netsh。它可以在Win2008SvrR2上安装并正常运行。
James L.

14
上面的命令在Windows7和Windows Server 2003上都不适合我。我也必须指定protocol = tcp参数。完整命令:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
alwi

3
请注意,这仅适用于TCP,因此如果要转发UDP流量,请不要走运。
user276648 '16

14

nginx对于在包括Windows在内的许多平台上转发HTTP很有用。通过更高级的配置,可以轻松进行设置和扩展。基本配置可能如下所示:

events {}

http {
     server {

        listen 192.168.1.111:4422;

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

14
对于HTTP转发,这是一个很好的解决方案,但仅对于HTTP转发(具有所有警告),例如websockets需要其他配置。对于HTTPS转发或其他任意协议(例如RDP),它几乎没有用。
UliKöhler'16

2
就是说,这对于HTTP转发来说是一个非常好的解决方案,所以我很高兴它在这里。
Casey's

这是为什么?您可以串流转发任何您喜欢的内容,包括https
user1156544

@uli您需要了解哪些设置...分享将很有用
user3787216 '18

1
@UliKöhlerNginx是用于解耦TCP连接的工具。您可以将其用于HTTP,HTTPS,AMQP,WebSockets等。所有工具内部都使用它来重定向和管理常规TCP连接。因此,这是正确的解决方案。另请参见netfxharmonics.com/2016/03/nginx
David Betz,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.