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