對於雙線雙IP的服務器來說,要解決兩個問題:
一、你的網站用戶究竟走那個IP來訪問你的服務器
二、你的網站內容究竟走那個IP返回給用戶
對於第1個問題,可以使用智能DNS解析來解決,即DNS服務器判斷用戶所在IP地址,如果用戶是電信接入,就把服務器的電信IP解析給他;如果用戶是網通接入,就把服務器的網通IP解析給他。
智能DNS可以自己基於開源的DNS軟件來定制,不過國內有一個很好的免費智能DNS服務器提供商:DNSPod,推薦使用DNSPod的服務。他就可以實現上述的智能DNS解析。
BIND軟件包也可以實現,具體配置見此鏈接的百度文庫:http://wenku.baidu.com/view/81b383eb998fcc22bcd10d97.html
對於第2個問題,則需要在服務器上面配置路由規則,來決定究竟如何處理數據的返回路徑問題。
1、填寫靜態路由表
因為服務器有兩個IP,分別在不同的網段,你使用電信IP的網關做路由,那麼網通的IP地址用戶壓根就訪問不到,反之亦然。目前流行的解決辦法,就是使 用電信網關做默認的路由,然後自己手工填寫所有網通IP地址段的路由規則。這個辦法可以Google搜索到一大把,不展開了。
這種辦法的缺點是添加規則太多太麻煩,而且難免掛一漏萬,如果你漏了一些網段,那這些網段的用戶就訪問不了你的網站了。況且網段地址的分布總是在不斷變化的,你還必須定期更新路由表。
2、根據用戶訪問進來的路徑設定動態路由
就是說如果用戶是通過電信IP地址訪問過來的話,那麼使用電信網關做路由,返回內容走電信網關;如果用戶通過網通IP地址訪問過來的話,那麼使用網通網 關做路由,返回內容走網通的網關,這樣就不必那麼麻煩的維護路由表了。以JavaEye網站服務器為例,具體配置方法如下:
服務器電信IP:114.80.66.199,電信網關:114.80.66.1
服務器網通IP:60.29.231.190,網通網關:60.29.231.1
1) 默認網關使用電信網關作為路由
在Linux上面配置默認網關,如果是RedHat,應該是在/etc/sysconfig/network文件裡面添加行:GATEWAY=114.80.66.1,如果是SuSE,應該是在/etc/sysconfig/network/routes裡面添加一 行:default 114.80.66.1 - - 或者可以直接使用YaST2來配置。
2)添加路由表
修改/etc/iproute2/rt_tables,添加內容:
252 tel 電信路由表
251 cnc 網通路由表
然後手工添加路由規則,在Console裡面執行如下命令:
復制代碼代碼如下: #添加原路返回路由</p>
<p>ip route flush table tel</p>
<p>ip rule add from 114.80.66.199 table tel</p>
<p>ip route add default via 114.80.66.1 dev eth0 src 114.80.66.199 table tel</p>
<p>ip route flush table cnc</p>
<p>ip rule add from 60.29.231.190 table cnc</p>
<p>ip route add default via 60.29.231.1 dev eth1 src 60.29.231.190 table cnc
即讓從電信IP過來的請求按照電信路由返回,從網通IP過來的請求從網通路由返回。這樣就搞定了,是不是很簡單?
3) 把路由規則寫入啟動腳本
如果服務器重啟,或者網絡服務重啟,上述的路由規則就失效了,所以你需要把上面這段命令寫入系統啟動腳本和網絡啟動腳本
如果是RedHat,系統啟動腳本是/etc/rc.d/rc.local
如果是SuSE,可以自己寫一個啟動腳本,鏈接到S99上,比方說/etc/init.d/rc.local
如果是RedHat,網絡啟動腳本是/etc/rc.d/init.d/network
如果是SuSE,網絡啟動腳本是/etc/init.d/network
配置檢查:
復制代碼代碼如下: ip route list table 251</p>
<p>ip rule list</p>
<p>ip route show