由于CERNET和CHINANET之間的帶寬瓶頸等問題,很多高校都采用同時接入教育網(CERNET)和電信網(CHINANET)的雙出口方案,以提高校園網對公網的訪問速度和降低網絡使用費用。
西北農林科技大學校園網采用的也是雙出口方案,其中一條鏈路接CERNET,帶寬8M,而另一條接電信網,帶寬100M。通過采用雙出口,校園網訪問公網速度慢的問題的確得到了解決,但反過來公網訪問校園網慢的問題卻更加突出了。正常情況下校園網服務器使用的是教育網的域名和IP地址,所有對校園網服務器的訪問都要走CERNET鏈路,因此,盡管校園網擁有高速的CHINANET鏈路,但公網用戶卻只能通過有著帶寬瓶頸的教育鏈路才能訪問到校園網的資源,這無疑是對CHINANET出口鏈路的嚴重浪費。如果再增加一套域名和服務器是能夠解決這個問題的,但這會增加額外的經費支出,同時校園網的域名也變得不再統一。
本文以西北農林科技大學校園網為應用背景,探討一種在不增加域名和服務器的情況下解決以上問題的方法。
基于策略的域名解析
DNS(Domain Name System)的功能是實現主機域名和主機IP地址之間的相互轉換。當用戶在應用程序中輸入主機域名時,DNS服務器可以將此名稱解析為與之對應的IP地址。這種DNS上的域名解析一般是靜態的,即域名與IP地址是一一對應的。
隨著網絡的發展以及新的應用的不斷出現,靜態DNS已經不能滿足我們的需要了,因此,產生了域名的動態解析技術。讓我們先來看看DNS服務器中兩種貌似策略域名解析的域名解析方式。
首先是多個域名對應一個IP地址:這種情況一般用于實現虛擬主機。只用一個IP地址就可以實現多個擁有不同域名的站點,這對那種IP地址資源短缺但又想擁有多個站點的情形非常有用。
其次是一個域名對應多個IP地址:在域名服務的配置里有一種實現服務器負載均衡的方法,DNS配置文件中一般會有類似下面的內容:
www.youdomain.edu.cn IN A 210.27.80.4
www.youdomain.edu.cn IN A 210.27.80.5
……
www.youdomain.edu.cn IN A 210.27.80.N
這種方法適用多臺內容相同的服務器分流。在這種查詢方式中,DNS服務器是以輪循的方式回應請求的,即對第一個請求回應的是地址210.27.80.4,下一個請求回應地址就是210.27.80.5,依此類推。
盡管上面兩種方式可以將一個域名解析成幾個不同的IP地址,或將多個不同的域名解析成一個IP地址,但它們仍然不能算作策略域名解析。這是因為,策略域名解析與上面的兩種方式相比要智能得多,它是基于策略的,DNS服務器可以根據客戶端所在網絡的不同,返回不同的解析結果;或者是DNS服務器根據客戶端所在網絡的不同,應用不同的安全策略,比如對內網用戶提供遞歸解析服務的同時忽略外網用戶的遞歸解析請求。
策略域名解析的實現
相關配置:以WWW服務器為例,域名為www.nwsuaf.edu.cn,配有兩塊網卡,一塊網卡配置教育網IP地址(210.27.80.4),另外一塊配置電信網IP地址(61.150.47.6)。
實現目標:來自教育網對www.nwsuaf.edu.cn的域名解析請求,DNS服務器返回210.27.80.4,而來自其他網絡的域名解析請求,就返回61.150.47.6。這樣,非教育網的用戶就可以直接通過電信的高速鏈路對校園網WWW服務器進行訪問。
1.DNS服務器的配置
Unix/Linux下的DNS服務軟件始終是以Berkeley的BIND(Berkeley Internet Name Domain)程序為主流。BIND 8或者以前的版本無法實現策略域名解析,但從BIND 9開始出現了View語句,可以很好地解決這個問題。
下面為/etc/named.conf文件的主要內容:
acl edu-nets { 210.27.0.0/16;202.117.0.0/16;… };//所有教育網的網段列表
options{ directory “/var/named” #數據文件存放路徑
pid-file “/var/named/named.pid”;
};
view “CerNet”{ #定義名為CerNet的view
match-clients {edu-nets;};
recursion yes;#遞歸解析
zone “.” {type hint;file “named.ca”;};
zone “0.0.127.IN-ADDR.ARPA” {type master; file “127.0.0”;};
zone “nwsuaf.edu.cn” {type master;file “nwsuaf.edu.cn.cernet”}; #教育網的解析文件
zone “80.27.210.in-addr.arpa” {type master;file “210.27.80”;};#反向解析文件
};
view “ChinaNet “{ #定義名為ChinaNet的view
match-clients {any;};#除了教育網以外的所有網絡
recursion no;#關閉遞歸解析
zone “.” {type hint; file “named.ca”};
zone “0.0.127.IN-ADDR.ARPA” {type master;file “127.0.0”;};
zone “nwsuaf.edu.cn” {type master;file “nwsuaf.edu.cn.public”;};#公網的解析文件
zone “47.150.61.in-addr.arpa” { type master; file “61.150.47”;};#反向解析文件
};
然后設置/etc/named下的nwsuaf.edu.cn.cernet和nwsuaf.edu.cn.public:
在nwsuaf.edu.cn.cernet文件中加上一條記錄:
www.youdomain.edu.cn IN A 210.27.80.4
在nwsuaf.edu.cn.public文件中加上一條記錄:
www.youdomain.edu.cn IN A 61.150.47.6
經過這樣的配置之后,策略域名就可以正常工作了。其中教育網的網段列表可以從教育科研網(http://www.edu.cn/)獲取。
2.WWW服務器的配置
最后,為了配合DNS服務器中所做的設置,還需要對WWW服務器的雙網卡進行設置:
(1)配置兩塊網卡
第一塊(eth0):IP地址210.27.80.4,掩碼255.255.255.0,網關210.27.80.1。
第二塊(eth1):IP地址61.150.47.6,掩碼255.255.255.224,網關61.150.47.30。
(2)增加路由
route add -net 210.27.112.0 netmask 255.255.248.0 dev eth0 //到教育網的路由
route add -net 202.117.176.0 netmask 255.255.240.0 dev eth0 //到教育網的路由
……
route add default gw 61.150.47.30 dev eth1 //到電信網的默認路由
最好將上述命令寫入/etc/rc.d/rc.local腳本,這樣系統啟動時就會加載這些路由信息。通過以上配置,WWW服務器就可以正常工作了,公網用戶就可以通過校園網的電信高速鏈路訪問WWW服務器了。
如果條件允許,也可以配置兩臺服務器,每個網段放置一臺,效果會更好。但是如果該服務器的訪問量很小的話就比較浪費資源,所以在訪問量不是很大的情況下,用一臺服務器加雙網卡不失為一個好的方案。
總結
本文在RedHat Linux操作系統下,用BIND 9.3.1實現了域名的動態解析,解決了公網訪問校園網速度慢這個一直困擾我們的問題。盡管本文只是動態域名解析技術在雙出口校園網中的一個簡單應用,卻已經讓我們充分領略到BIND 9.0新版本的功能之強大。在規模更大,結構更復雜的網絡中,應該能夠發揮更大的作用。