因為工作中一個項目,總部與各個分部只有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的入站串連
更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/skills/
---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服務,並設定存取控制,只允許特定主機串連。
本文出自 “httpyuntianjxxll.spac..” 部落格,請務必保留此出處http://333234.blog.51cto.com/323234/1135361