目录

netsh实现TCP端口转发

netsh实现TCP端口转发

服务器:192.168.31.9 端口:56000

客户端:192.168.31.2 端口:5600

客户端(本地端口5600)通过TCP连接服务器的56000端口

PC:192.168.31.5,PC实现客户端和服务器之间56000端口转发

1. 添加端口转发规则

添加

netsh interface portproxy add v4tov4 listenport=56000 listenaddress=0.0.0.0 connectport=56000 connectaddress=192.168.31.9

查看

netsh interface portproxy show all
侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         56000       192.168.31.9    56000

查看TCP建立情况

netstat -ano | findstr ":56000"
  TCP    0.0.0.0:56000          0.0.0.0:0              LISTENING       4332
  TCP    192.168.9.5:56000     192.168.31.2:5600      ESTABLISHED     4332
  TCP    192.168.9.5:60562     192.168.31.9:56000     ESTABLISHED     4332

查看进程

tasklist | findstr "4332"

删除端口转发:

netsh interface portproxy delete v4tov4 listenport=56000 listenaddress=0.0.0.0

上述关闭后,netstat -ano | findstr “:56000” 查看还有ESTABLISHED,则使用下面命令

taskkill /PID 16680 /F

2. 允许防火墙入站连接

为什么要加防火墙入站规则

当使用 ‌netsh 端口转发‌时,如果防火墙未放行对应端口,外部发起的 TCP 连接请求(SYN 包)会被防火墙拦截,导致 ‌TCP ACK 不会回复‌,表现为连接超时或拒绝。

netsh advfirewall firewall add rule name="TCP 56000 Forward" dir=in action=allow protocol=TCP localport=56000

https://i-blog.csdnimg.cn/direct/4c305a4f518b4d879e1ca42aa4633dc5.png

无需额外出站规则‌:端口转发仅需保证入站流量可达,转发到目标地址的过程默认允许出站(除非目标端口被其他规则限制)‌

查看防火墙规则

netsh advfirewall firewall show rule name="TCP 56000 Forward"

删除

netsh advfirewall firewall delete rule name="TCP 56000 Forward"

验证删除结果

netsh advfirewall firewall show rule name="TCP 56000 Forward"