windows操作系統自帶的TCP端口轉發命令

   因爲工作中一個項目,總部與各個分部只有citrix服務器才能通訊,總部客戶端想通過分部citrix訪問分部內網資源。基本思路,通過程序修改獲取的ICA文件中的IP地址和端口,將修改後的ICA文件返回給客戶端,實現客戶端通過連接本地citrix,自動跳轉到另外一個網絡的citrix。之前用的是haproxy,但是haproxy與程序交互不是很好,如果各個分部只有一臺citrix服務器,事先靜態寫好還可以,但是一般分部會有多臺citrix服務器,不能確定每次使用的是哪臺citrix服務器,這樣想通過程序動態添加映射條目就比較難以實現。


-----haproxy主要用於負載,如果只是負載一個,那就成爲端口映射了,但是畢竟是linux下面的程序。


-----windows下也有一個小工具:portforward.exe,圖形界面容易操作,個人平常使用可以,但是也沒有辦法實現與程序交互。


   經過在網上搜索,發現windows系統,包括xp  2003,2008等,都自帶portproxy功能。目前只支持tcp協議的端口轉發,前提需要作爲portproxy的主機需要安裝IPV6,安裝可以不啓用IPV6。


A.配置方法

假定需要通過192.168.1.8的14941端口連接192.168.1.118的1494端口,則需要在192.168.1.8主機的命令行輸入如下語句

netsh  interface ipv6 install

netsh interface portproxy add v4tov4  listenaddress=192.168.1.8 listenport=14941 connectaddress=192.168.1.118  connectport=1494


---如果已經安裝IPV6,第一條可以不需要

---如果操作系統開啓了主機防火牆,需要放行TCP 14941的入站連接

---2008防火牆較以前版本有較大改動,可以參考如下鏈接:


http://pcedu.pconline.com.cn/soft/virus/safe/0710/1130476.html 


如果想取消上面配置的端口轉發,可以用如下語句:


netsh interface  portproxy delete v4tov4 listenaddress=192.168.1.8  listenport=33891


如果想查看已經配置了哪些端口轉發,可以用如下語句:


netsh interface  portproxy show  v4tov4


B.優點

可以隨時根據需要添加或刪除端口轉發條目,並且重啓操作系統仍能自動保存之前的配置並自動啓用,不像HAproxy修改完配置文件還需重啓HAproxy。


網上有的說xp配置端口轉發不起作用,估計是沒有安裝IPV6的緣故,用xp測試,安裝了IPV6後可以實現端口轉發,並且不需要開啓路由和遠程訪問服務。


另外考慮到端口轉發的冗餘,可以多臺主機都配置端口轉發,且不用指定本地監聽地址,這樣可以通過操作系統提供浮動地址來實現冗餘:

netsh  interface portproxy add v4tov4 listenport=14941 connectaddress=192.168.1.118  connectport=1494


程序實現動態添加的時候,可以telnet到每臺都添加條目,也可以只與虛地址聯繫,每次都檢查是否有對應的映射條目(根據ica文件中需要連接的citrix服務器的IP地址來檢查),如果沒有則命令行添加,添加時要確保本地端口不能被佔用,並且還需要考慮防火牆,用netsh添加入站端口訪問規則。


----需要citrix主機開啓telnet服務,並設置訪問控制,只允許特定主機連接。

SSH時:

netsh interface portproxy add v4tov4  listenaddress=172.20.10.214 listenport=22 connectaddress=192.168.214.34 connectport=22


轉自:

http://blog.csdn.net/any2mobile/article/details/11732617

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