張經(jīng)理 / 18665606093
Email / service@2000new.com
掃一掃添加顧問
最近遇到了頭大問題,一個網(wǎng)站為提高訪問速度,分別拉了電信、網(wǎng)通兩條線路,想實(shí)現(xiàn)電信從電信訪問、網(wǎng)通用戶從網(wǎng)通訪問。
最初的方案是分別建立兩個相同的站,一個www1.xxx.com(電信)一個www2.xxx.com(網(wǎng)通),然后分別解析www1.xxx.com的A記錄為電信的ip,www2.xxx.com為網(wǎng)通IP。
這樣做看上去沒錯,可是麻煩事又來了,該站后臺使用mysql數(shù)據(jù)庫,數(shù)據(jù)庫必須是同一個,否則還得另外設(shè)置兩個服務(wù)器的mysql保持同步。
mysql倒是小事,原來的網(wǎng)頁內(nèi)的鏈接都是www.xxx.com/xxx....的,要都重新改成分別的www1和www2,還得保持同步,這麻煩就大了。
記過仔細(xì)分析,最終采用了我們的方案,使用DNS的view功能,只使用一個www.xxx.com的域名,就很簡單地解決了這個問題。
Bind9有個特殊功能view(視圖),使用該功能能夠?qū)Σ煌脑L問對象返回不同的IP。比如電信用戶試圖解析www.xxx.com,就返回電信的IP,而網(wǎng)通用戶則返回網(wǎng)通的IP。這樣根本不需要多個域名,只需要一個www.xxx.com就可以了。原有網(wǎng)站中的頁面都不需要更改。
下面是個named.conf示例:
以下是引用片段:
以下是引用片段:
#---/etc/named.conf---#
options {
directory "/var/named";
};
view "cnc" {
match-clients { 60.0.0.0/13;60.8.0.0/15;60.10.0.0/16;60.12.0.0/16;60.13.0.0/18;60.13.128.0/17;
60.16.0.0/12;60.208.0.0/13;60.216.0.0/15;60.220.0.0/14;61.48.0.0/13;61.133.0.0/17;61.135.0.0/16;
61.136.64.0/18;61.137.128.0/17;61.138.0.0/17;61.138.128.0/18;61.139.128.0/18;61.148.0.0/15;
61.156.0.0/16;61.158.128.0/17;61.159.0.0/18;61.161.0.0/18;61.161.128.0/17;61.167.0.0/16;
61.168.0.0/16;61.176.0.0/16;61.179.0.0/16;61.180.128.0/17;61.181.0.0/16;61.182.0.0/16;
61.189.0.0/17;202.96.0.0/18;202.96.64.0/19;};
recursion yes;
zone "xxx.com" {
type master;
file "/var/named/xxx.com.cnc.hosts";
};
};
view "other" {
match-clients { any; };
recursion no;
zone "xxx.com" {
type master;
file "/var/named/xxx.com.hosts";
};
};
這樣就實(shí)現(xiàn)了對不同用戶返回了不同的IP。
(這只是個示例,match-clients中的網(wǎng)通IP表段不全。)
其他的就很簡單了。
最終用戶采用了Quick Enterpeise Linux 4.0,僅在一臺服務(wù)器上就實(shí)現(xiàn)了雙線路接入、策略路由、雙IP網(wǎng)站訪問、防火墻等全部功能。
從這里可以看到,xxx.com的域名解析同時包含在視圖cnc和other區(qū)域中。視圖cnc負(fù)責(zé)網(wǎng)通用戶的解析。當(dāng)match-clients中注明的網(wǎng)通網(wǎng)段用戶發(fā)送的DNS解析請求,則從/var/named/xxx.com.cnc.hosts文件中返回www.xxx.com的網(wǎng)通IP。否則則由視圖other處理,從"/var/named/xxx.com.hosts“文件中返回電信的IP。