使用 netsh 进行端口代理

使用 netsh 进行端口代理

我在 Windows 机器上工作,并使用 netsh portproxy 将流量从端口 4000 转发到在端口 4002 上运行的应用程序。当我尝试从本地主机或 LAN 访问我的应用程序时,它工作正常,如下所示

127.0.0.1:4000
192.168.1.21:4000

但是,当我在 LAN 外部进行连接时,端口转发似乎不起作用,应用程序看不到目标请求my.public.ip.address:4000。这种行为的原因是什么?请注意,当我删除端口代理并在端口 4000 上运行我的应用程序时,目标请求可以my.public.ip.address:4000毫无问题地到达我的应用程序。这是我当前的 netsh portproxy 配置:

netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         4000        127.0.0.1       4002

答案1

显然它无法工作是因为 Windows 防火墙,这个帮我解决了这个问题netsh advfirewall firewall add rule name="Open Port 4000" dir=in action=allow protocol=TCP localport=4000

答案2

对于 WSL2 端口转发,您需要编写一个基本上netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport使用正确参数调用的小脚本。

看:

相关内容