使用Windows自带命令netsh实现端口转发(映射/重定向)

2023-02-22 11:06 技术文章 5147 阅读 分享


一直以来没太关注过Windows系统的端口转发功能,毕竟使用需要用的的地方太少,最近给一个朋友调试一个挖虚拟币的软件,发现Windows的这个功能还挺有趣。从XP开始Windows系统就内嵌了网络端口转发的功能,使用Netsh命令即能实现Windows系统任何到本地端口的TCP连接(IPv4或者IPv6)被转发到任意一个本地/远端端口。

示例

将80端口转发到另一台服务器的80端口:

netsh interface portproxy add v4tov4  listenport=80 listenaddress=172.16.88.2  connectport=80 connectaddress=172.16.88.13

将8080端口转发到另一台服务器的IPv6地址的80端口:

netsh interface portproxy add v4tov6  listenport=8080 listenaddress=172.16.88.2  connectport=80  connectaddress=2001:de4::101

测试:netstat -ano | findstr :80 来验证80端口是否正在监听中。

参数说明:

  • listenaddress — 本机IP地址(支持IPv4/IPv6,不能是127.0.0.1或localhost)。
  • listenport — 待转发的本地端口。
  • connectaddress — 转发目标的本地或远程主机的IP地址(支持域名/IPv6)。
  • connectport — 转发目标的TCP端口。

其它命令

  • 查看系统中的所有转发规则:
    netsh interface portproxy show all
  • 查看系统中的所有IPv4转发规则:
    netsh interface portproxy show v4tov4
  • 查看端口转发的设置:
    netsh interface portproxy dump
  • 删掉一个特定的端口转发规则(上面添加的80端口的转发规则):
    netsh interface portproxy delete v4tov4 listenaddress=172.16.88.2 listenport=80
  • 清空当前所有的配置规则:
    netsh interface portproxy reset

为何不生效

  1. ip helper服务没有启动。
  2. 本地防火墙限制。
  3. 将本机端口转发不要使用127.0.0.1。
  4. 不支持UDP端口。
  5. 默认重启后转发规则也会生效,不过听说Win2008有时候会失效,请自行测试。

如果需要转发UDP端口或不喜欢命令行,可以使用其它的端口转发工具进行转发。

第三方的端口转发工具

  1. NetworkActiv AUTAP

  2. UPnP PortMapper

    这个是Java软件,因为我没有安装Java,就不截图了。


更多文章 下一页