使用netsh interface portproxy进行端口转发


使用netsh interface portproxy进行端口转发

很多情况下,我们往往需要通过对某个端口进行转发(端口映射)实现某些特殊功能,比如对外开放vagrant中的服务。在Linux中,使用iptables可以非常轻松地配置端口重定向。在Windows中可以使用内置网络配置命令行工具NetSH实现端口转发的功能。

简介

NetSH (Network Shell) 是windows系统本身提供的功能强大的网络配置命令行工具。

使用方法

添加端口转发

netsh interface portproxy add v4tov4 listenaddress=<ip> listenport=<port> connectaddress=<ip> connectport=<port>
netsh interface portproxy add v4tov6 listenaddress=<ip> listenport=<port> connectaddress=<ip> connectport=<port>
netsh interface portproxy add v6tov4 listenaddress=<ip> listenport=<port> connectaddress=<ip> connectport=<port>
netsh interface portproxy add v6tov6 listenaddress=<ip> listenport=<port> connectaddress=<ip> connectport=<port>
  • istenaddress 等待连接的本地IP地址。
  • listenport 本地侦听TCP端口。
  • connectaddress 将传入连接重定向到本地或远程IP地址(或DNS名称)。
  • connectport 一个TCP端口,来自listenport的连接会被转发到该端口。

查看已经设置的端口转发

netsh interface portproxy show all
netsh interface portproxy show v4tov4
netsh interface portproxy show v4tov6
netsh interface portproxy show v6tov4
netsh interface portproxy show v6tov6

查看端口是否已经监听

netstat -an | find "LISTEN"

修改已经设置的端口转发

netsh interface portproxy set v4tov4 listenport=<port>
netsh interface portproxy set v6tov4 listenport=<port>
netsh interface portproxy set v4tov6 listenport=<port>
netsh interface portproxy set v6tov6 listenport=<port>

删除已经设置的端口转发

netsh interface portproxy delete v4tov4 listenport=<port>
netsh interface portproxy delete v6tov4 listenport=<port>
netsh interface portproxy delete v4tov6 listenport=<port>
netsh interface portproxy delete v6tov6 listenport=<port>

删除指定的端口转发规则

netsh interface portproxy delete v4tov4 listenport=<port> listenaddress=<ip>

清除所有当前的端口转发规则

netsh interface portproxy reset

重要:以上端口转发仅适用于TCP端口,对于UDP端口将不起作用,并且不能使用127.0.0.1作为连接地址。

端口转发还可用于将端口从网卡的外部地址,转发到在同一计算机上运行的虚拟机端口。

重要:请确保防火墙(Windows防火墙或通常包含在杀毒软件中的第三方防火墙)允许到新端口的传入连接。请确保在服务里面开启IP Helper服务

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 使用netsh interface portproxy进行端口转发


愿你勿忘初心,并从始至终