windows用netsh实现端口映射
windows用netsh实现端口映射
by:铁乐与猫
update: 2019-07-15
环境
-
映射方(进行端口转发)
-
系统: windows10(默认已安装netsh)
-
ip:10.0.10.21 (192.168.33.1)
-
端口:tcp 8081
-
-
被映射方(被转发)
- 系统: centos7(vagrant虚拟机)
- ip:192.168.33.111 (与宿主机网络连通)
- 端口:tcp 8081 (web服务)
需求
对centos7的8081端口进行转发,以便与10.0.10.21同一网络的其它机器能够访问到虚拟机上的web服务。
使用netsh在windows宿主机上做转发好处是不需要影响到虚拟机的网络配置。虚拟机不需要设置成连接10网段的方式。比较灵活,在很多场合都能用上。当然如果宿主机是linux的系统就直接做iptables转发规则了。
这里要注意的是,netsh做完转发后,windows的防火墙规则也相应要添加开放。
netsh 命令
Windows的netsh是一个命令行脚本实用工具。
使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置。
可以手动运行Netsh命令,或创建批处理文件或脚本实现过程的自动化。
netsh提供了脚本功能,让您在批处理模式下针对指定的计算机,运行一组命令。利用netsh ,可以将配置脚本保存为文本文件,便于存档或用于配置其他的计算机。
-
例,上面的需求可以添加一个IPV4到IPV4的端口映射去解决
netsh interface portproxy add v4tov4 listenaddress=10.0.10.21 listenport=8081 connectaddress=192.168.33.111 connectport=8081
其中:
-
netsh interface portproxy
表示端口映射列表 -
add v4tov4
表示添加的是IPV4到IPV4的端口 -
listenaddress
表示侦听的ip地址,填的是映射方 -
listenport
侦听的端口,可以与被映射的端口设置成不一样 -
connectaddress
被映射方(连接方)的ip地址 -
connectport
被映射方的端口
-
-
如果开启后想删除的话:
netsh interface portproxy delete v4tov4 listenaddress=10.0.10.21 listenport=8081
add 换成delete,很简单。
-
查看已存在的转发列表:
netsh interface portproxy show all # 例: C:\Windows\system32>netsh interface portproxy show all 侦听 ipv4: 连接到 ipv4: 地址 端口 地址 端口 --------------- ---------- --------------- ---------- 10.0.10.21 8081 192.168.33.111 8081
如果需要一直做转发,重启机器后仍要生效的话,就做个脚本开机启动即可。
防火墙开启
如果宿主的window有开防火墙的话,要相应的添加开放端口规则。
打开【网络和internet设置】- 【Windows防火墙】- 【高级设置】- 【入站规则】- 【新建规则】
根据提示设置好相关端口即可。
【end】