公司的伺服器構架比較複雜,建立了一個主從熱備的centos7伺服器,分別有內網,外網,和VIP。 環境: ha-01 內網:192.168.1.221 外網:XX.XX.XX.221 ha-02 內網:192.168.1.222 外網:XX.XX.XX.222 VIP:192.168.1.232 公 ...
公司的伺服器構架比較複雜,建立了一個主從熱備的centos7伺服器,分別有內網,外網,和VIP。
環境:
ha-01 內網:192.168.1.221 外網:XX.XX.XX.221
ha-02 內網:192.168.1.222 外網:XX.XX.XX.222
VIP:192.168.1.232
公司搭建了自己的網站,但因為兩台主機外網IP皆無法開通80埠,就另外申請了一個寬頻,開通80埠用作訪問網站用。外網IP為XX.XX.XX.232。但根據需求,公司還保留有原先寬頻,作為其他業務需求。
但是,用XX.XX.XX.232的路由做映射時發現了問題。雙網卡(雙IP,內外網)的情況下,路由無法正常映射到主機上,無論是主機物理IP還是VIP。通過網路上查詢,有關於雙IP(內外網)如何做映射的文章,卻沒如何映射到VIP的文章。網路上通常是將單台雙網卡(內外網)的主機上設置靜態路由,以達到映射成功的目的。但是,vip卻無法做靜態路設置,這導致主從結構的伺服器根本無法實現映射。
解決思路:
1. 通過實驗發現,內網裡,如果有一臺單內網主機做數據的內網轉發,數據是能成功轉發至雙網卡主機上
2. 將路由映射至這台單內網主機,再由這台主機轉發至VIP
實驗開始:
準備一臺單內網主機,這裡我用一臺192.168.1.152的win7主機。
win系統自帶一個強大的轉發工具,叫netsh,netsh即便在系統重啟後,配置也會保留,所以重啟伺服器不會影響已經生效的轉發配置,並且設置是及時生效。
轉發前需要提前開啟IP HELP服務,並安裝IPV6協議
192.168.1.152運行cmd,輸入:
netsh interface portproxy add v4tov4 listenport=80 connectaddress=192.168.1.232 connectport=80
註:上述語句意思是監聽來自80埠的數據,並轉發至192.168.1.232的80埠
經測試網站正常打開
備註:
查看所有規則
netsh interface portproxy show all
監聽8080埠,轉發數據至192.168.1.101的8080埠
netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.1.101 connectport=8080
刪除規則
netsh interface portproxy delete v4tov4 listenport=8080
指定來自ip轉發
netsh interface portproxy add v4tov4 listenaddress=192.168.193.1 listenport=701 connectaddress=192.168.192.128 connectport=701
刪除
netsh interface portproxy delete v4tov4 listenaddress=192.168.193.1 listenport=701