Windows下的端口轉發及其當作zabbix proxy跳板的用法示例

從XP(2001)開始,Windows就內置了網絡端口轉發功能,傳入本地計算機端口的任何TCP連接(IPV4/IPV6),都可以被轉發到本地或遠程計算機的另一個端口,而無需本地計算機真的運行一個監聽該端口的服務。

在Linux中,使用iptables可以很輕易地實現這一功能,而在Windows中,則由Routing and Remote Access服務(RRAS)來配置端口轉發,但還有一種更簡單的、適合任意windows版本的方法:netsh。

可以使用命令netsh的portproxy模式配置Windows中的端口轉發,命令語法如下:

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
  • listenaddress:監聽地址
  • listenport:監聽端口
  • connectaddress:轉發地址
  • connectport:轉發端口

一個使用示例:通過非標準端口連接遠程桌面(可以更改RDP服務的端口,此處只是爲了舉例),即將TCP端口3340重定向到本地端口3389(標準RDP端口)。

以管理員身份啓動命令提示符,並運行如下命令:

netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

其中10.1.1.110爲提供遠程桌面服務的計算機IP地址。

使用netstat命令看下3340端口此時是否處於監聽狀態:

netstat -ano | findstr :3340

如果此時看不到一個監聽在3340端口的進程,請檢查如下兩個地方:

1、檢查IP Helper服務是否運行(win+R:service.msc查看)

2、檢查網絡接口是否啓用了IPV6支持(檢查適配器屬性,是否勾選Intermet Protocol Version6(TCP/IPV6)/Internet協議版本6(TCP/IPV6))

這是實現端口轉發的先決條件。

此時可以嘗試遠程桌面連接10.1.1.110:3340,如果一切正常,將和連接10.1.1.110:3389效果一樣。

記得在Windows防火牆中開放3340端口

可以通過圖形界面配置,或者使用命令:
netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110  localport=3340 action=allow

可以創建任意數量的轉發規則,且所有netsh interface portproxy規則都是永久的,不會隨着系統重啓而失效。可以通過如下命令顯示當前計算機的所有轉發規則:

netsh interface portproxy show all

或者使用如下命令獲取端口代理配置:

netsh interface portproxy dump

可以使用如下命令刪除某個端口轉發規則:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110

使用如下命令清除所有規則:

netsh interface portproxy reset

如果想將傳入的tcp連接轉發到另外一臺計算機,可以使用(將連接請求轉發到192.168.100.101:3389):

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101

如果想讓遠程服務看起來像是運行在本地,可以使用(此時訪問localhost:5555將重定向到157.166.226.25:80):

netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp

注意:在Windows Server 2012 R2中端口轉發規則可能在系統重啓後被重置,請檢查網絡接口是否中斷或者服務器IP地址是否變更(建議設置爲靜態地址),另一個解決方法是在windows任務計劃程序中添加一個配置規則的開機啓動腳本。

在Windows Server 2003 / XP中,還需要確保註冊表HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters中的IPEnableRouter參數已設置爲1。

以上內容譯自:http://woshub.com/port-forwarding-in-windows/


另一個用法示例

之前遇到過一個問題,一組獨立網絡中的服務器需要添加到現有的zabbix監控系統中,而該系統中的已沒有多餘的服務器可供安裝zabbix proxy,僅有一臺windows(192.168.0.179)服務器具有訪問現有監控系統中某個zabbix proxy(132.222.222.222)的條件,此時就可以使用這臺windows做跳板來監控其所在網絡中的其他服務器。

netsh interface portproxy add v4tov4 listenport=10051 listenaddress=192.168.0.179 connectport=10051 connectaddress=132.222.222.222

待監控網絡中的zabbix agent應設置爲active模式,且ServerActive字段應設置爲192.178.0.179,這樣即可在不對現有網絡做任何變動的條件下實現對該網絡的監控。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章