使用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作为连接地址。
端口转发还可用于将端口从网卡的外部地址,转发到在同一计算机上运行的虚拟机端口。
刘金鑫·
UDP 端口该怎么映射
Pony
@刘金鑫· : netsh只支持TCP,如果需要转发UDP可以使用UDP转发工具。例如sokit