我需要模拟应用程序与 ip:port 的连接/断开连接。
我无法更改防火墙规则,因为它们仅由 IT 管理。我必须小心不要关闭网络接口,因为它是一台远程机器 (Citrix VDI)。
我想使用 netsh portproxy。我的理论是它会将远程 ip:port 重定向到 127.0.0.1:port.. 并且如果我将本地端口更改为随机端口,应用程序将失去连接。
所以我尝试了:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=11111 connectaddress=somehostname.com connectport=11111
其中 11111 是实际端口 - 应用程序保持连接。当我删除它并运行时:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=22222 connectaddress=somehostname.com connectport=11111
我以为应用程序会断开连接,但什么都没发生。我想我可能误解了重定向到什么,所以我尝试了
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=11111 connectaddress=somehostname.com connectport=22222
再次-没有变化..
使用 netsh portproxy 执行此操作的正确方法是什么?
不,它的作用恰恰相反。
Portproxy 实际上并不拦截任何连接 - 相反,它的工作方式非常类似于 HTTP“反向代理”或 SSH“本地隧道”,它开始侦听地址:端口上的
listen
连接(使用标准 TCP 侦听器)并代表代理客户端连接到地址connect
:端口。因此参数名称。因此,只有当程序明确连接到地址:端口(本例中为 127.0.0.1:端口)时,代理才会起作用
listen
。如果它们连接到其他任何位置,则会绕过代理。无法使用 netsh portproxy 来执行此操作。