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】