由于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新版本的功能之强大。在规模更大,结构更复杂的网络中,应该能够发挥更大的作用。