我正在使用 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
对于 WSL2 端口转发,您需要编写一个基本上
netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport
使用正确参数调用的小脚本。看:
显然由于Windows防火墙而无法正常工作,这为我解决了
netsh advfirewall firewall add rule name="Open Port 4000" dir=in action=allow protocol=TCP localport=4000