使用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

修改已经设置的端口转发

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防火墙或通常包含在杀毒软件中的第三方防火墙)允许到新端口的传入连接。

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

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


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