netsh interface portproxy的微軟幫助文檔位址:
https://technet.microsoft.com/zh-cn/library/cc776297(WS.10).aspx#BKMK_1
下面是一個簡單的例子:
//顯示所有 portproxy 參數,包括 v4tov4、v4tov6、v6tov4 和 v6tov6 的端口/位址對。
C:\>netsh interface portproxy show all
//因為沒有配置過它,是以沒有東西可以顯示。
//添加配置: 本機監聽10022端口,當有socket連接配接到10022端口時,本機就連接配接到192.168.2.53的22端口,本機的10022端口可以接受的連接配接位址為"*",使用的協定為tcp,目前僅支援傳輸控制協定 (TCP)。
C:\>netsh interface portproxy add v4tov4 listenport=10022 connectaddress=192.168.2.53 connectport=22 listenaddress=* protocol=tcp
//添加完畢。
//顯示所有。
C:\>netsh interface portproxy show all
偵聽 ipv4: 連接配接到 ipv4:
位址 端口 位址 端口
--------------- ---------- --------------- ----------
* 10022 192.168.2.53 22
//删除配置: 本機的監聽端口為10022,10022端口接受的連接配接位址為"*",使用的協定為tcp,目前僅支援TCP協定。
C:\>netsh interface portproxy delete v4tov4 listenport=10022 listenaddress=* protocol=tcp
//删除完畢。
//顯示所有。
C:\>netsh interface portproxy show all
//因為所有的配置均已删除,是以沒有東西可以顯示。
//檢視幫助資訊。
C:\>netsh interface portproxy /?
//略。
//檢視幫助資訊。
C:\>netsh interface /?
//略。
//檢視幫助資訊。
C:\>netsh /?
//略。
-----haproxy主要用于負載,如果隻是負載一個,那就成為端口映射了,但是畢竟是linux下面的程式。
-----windows下也有一個小工具:portforward.exe,圖形界面容易操作,個人平常使用可以,但是也沒有辦法實作與程式互動。
經過在網上搜尋,發現windows系統,包括xp 2003,2008等,netsh工具都自帶portproxy功能。目前隻支援tcp協定的端口轉發,前提需要作為portproxy的主機需要安裝IPV6,安裝可以不啟用IPV6。
A.配置方法
假定需要通過192.168.1.8的14941端口連接配接192.168.1.118的1494端口,則需要在192.168.1.8主機的指令行輸入如下語句
---如果已經安裝IPV6,該條語可以不需要
netsh interface ipv6 install
---可不用指定本地監聽位址,這樣可以通過作業系統提供浮動位址來實作,如果作業系統開啟了主機防火牆,需要放行TCP 14941的入站連接配接
netsh interface portproxy add v4tov4 listenaddress=192.168.1.8 listenport=14941
connectaddress=192.168.1.118 connectport=1494
netsh interface portproxy add v4tov4 listenport=14941
connectaddress=192.168.1.118 connectport=1494
---取消上面配置的端口轉發,可以用如下語句:
netsh interface portproxy delete v4tov4 listenaddress=192.168.1.8
listenport=33891
---如果想檢視已經配置了哪些端口轉發,可以用如下語句:
netsh interface portproxy show v4tov4
B.優點
可以随時根據需要添加或删除端口轉發條目,并且重新開機作業系統仍能自動儲存之前的配置并自動啟用,不像HAproxy修改完配置檔案還需重新開機HAproxy。
網上有的說xp配置端口轉發不起作用,估計是沒有安裝IPV6的緣故,用xp測試,安裝了IPV6後可以實作端口轉發,并且不需要開啟路由和遠端通路服務。另外考慮到端口轉發的備援,可以多台主機都配置端口轉發。