DNS(Domain Name Servive,域名服务)是Internet/Intranet中最基础也是非常重要的一项服务,提供了网络访问中域名到IP地址的自动转换。我们知道,Inetrnet上的主机成千上万,并且还在随时不断增加,不可能由一个或几个DNS服务器能够实现这样的解析过程,传统主机表(hosts)方式更无法胜任,事实上DNS依靠一个分布式数据库系统对网络中主机域名进行解析,并及时地将新主机的信息传播给网络中的其它相关部分,因而给网络维护及扩充带来了极大的方便。近年来应用于Intel平台的SCO UNIX组建了大量各级业务网络,为企业实施Intranet工程提供了良好的前提,笔者为此做了认真的探索,在SCO Unix网络中成功实现了多级DNS服务器的设置并正常进行转寄查询(既本域DNS服务器不能完成解析请求时,自动转发到其他域中),以下做详细介绍。
一、 DNS的工作原理。
DNS采用服务器/客户机模型,是一种分布式层次结构系统。所有的DNS主机都被写入称之为名字树或域名空间的结构中。在DNS域层次结构的顶部是根域,有一组被称为根服务器的DNS服务器(Name Server)为它服务,直接在根域下的是顶层域,顶层域往下是各个不同层次的子域,每个子域都包含了DNS服务器和客户机(见图1)。当DNS客户机需要和其他主机进行连接时,先向本地的DNS服务器发出主机名解析请求,本地DNS服务器如果认为查询目标是在自己管辖的域内,则直接返回解析结果,否则把查询请求转寄给自己的顶层域继续查询,最终将查询结果返回给客户机。
在SCO Unix中,DNS服务器通过阅读/etc/named.boot文件确定它所主管的域及名字信息数据存放在哪些区文件(zone)中从而响应各种解析请求的。在DNS的结构体系中,SCO Unix支持五种类型的配置,分别是主名字服务器(primary server)、辅助名字服务器(second server)、唯高速缓存服务器(caching-only server)、从属模式服务器(server in slave mode)、客户机。实际应用中,一个域的主名字服务器是必不可少的,当然,为起到均衡负载、相互备份的作用,相邻域的主名字服务器同时可设为对方的辅助名字服务器。为节省篇幅,本文仅介绍主名字服务器的配置过程。
二、 网络结构选择及实现目标。
1、 网络结构。
本文以某银行上下级分行组网为例(见图2),是Internet结构的一个简单模型。一级分行设为顶层域通过广域网下连多个二级分行,建立DNS服务器(安装SCO Unix系统,主机名:ser2,IP:122.68.2.2),设置好本域(ha.CCB)的所有主机;所有二级分行的域均作为子域,图2中标注了一个二级分行,也建立DNS服务器(安装SCO Unix系统,主机名:srv2,IP:220.112.8.2),同样设好本域的所有主机。须说明的是,SCO Unix 选用OpenServer 3.0 或5.0均可。
2、 实现目标。
建立一个分布式的数据库系统,平常管理员只维护本域主机信息表反映本地主机变化情况。各域DNS服务器不仅能正确解析本域的DNS请求,而且借助顶层域还能解析来自其它域的DNS请求。据此,配置正确路由后,即可通过简单、友好易记的域名实现全网范围的的Web服务、匿名FTP服务、Mail服务……等Intranet功能。
三、DNS服务器的配置过程。
1、 创建/etc/named.boot文件。
对域:ha.CCB:
#vi /etc/named.boot
directory /etc/named.d
;定义数据文件目录
primary ha.CCB named.hosts
;定义主名字服务器及本域主机信息数据文件
cache . root.cache
;定义高速缓存初始化文件
primary 2.68.122.in-addr.arpa named.rev
primary 0.0.127.in-addr.arpa named.local
stub smx.ha.CCB 220.112.8.2
;定义子域表,如有多个子域,依此排列
对域:smx.ha.CCB:
#vi /etc/named.boot
directory /etc/named.d
primary smx.ha.CCB named.hosts
cache . root.cache
primary 8.112.220.in-addr.arpa named.rev
primary 0.0.127.in-addr.arpa named.local
forwarders 122.68.2.2
;定义转寄查询目标服务器
2、 配置named.hosts文件,实现正向解析(域名--IP地址)。
#cd /etc/named.d
对域:ha.CCB:
#vi named.hosts
$INCLUDE named.soa
localhost IN A 127.0.0.1
ser2 IN A 122.68.2.2
IN MX 10 ser2.ha.CCB.
mail IN CNAME ser2
ha.ccb. IN MX 10 ser2.ha.CCB.
ser1 IN A 122.68.2.1
gj1 IN A 122.68.2.45
对域:smx.ha.CCB:
#vi named.hosts
$INCLUDE named.soa
localhost IN A 127.0.0.1
srv2 IN A 220.112.8.2
IN MX 10 srv2.smx.ha.CCB.
mail IN CNAME ser2
smx.ha.ccb. IN
MX 10 srv2.smx.ha.CCB.
srv1 IN A 220.112.8.1
cli1 IN A 220.112.8.30
cli2 IN A 220.112.8.50
3、 配置named.rev文件,实现反向解析(IP地址--域名)。
#cd /etc/named
对域:ha.CCB
#vi named.rev
$INCLUDE named.soa
1IN PTR ser1.ha.CCB.
2IN PTR ser2.ha.CCB.
45IN PTR gl1.ha.CCB.
对域:smx.ha.CCB
#vi named.rev
$INCLUDE named.soa
1 IN PTR srv1.smx.ha.CCB.
2 IN PTR srv2.smx.ha.CCB.
30 IN PTR cli1.smx.ha.CCB.
50 IN PTR cli2.smx.ha.CCB.
4、 配置named.soa文件。主要用于定期向辅助名字服务器刷新最新变化信息。
对域:ha.CCB
#cd /etc/named.d
#vi named.soa
@ IN SOA ser2.ha.CCB. root.ser2.ha.CCB. (
1999112510
Serial
10800
Refresh
1800
Retry
3600000
Expire
86400 )
Minimum
IN NS ser2.ha.CCB.
对域:smx.ha.CCB
#cd /etc/named.d
#vi named.soa
@ IN SOA srv2.smx.ha.CCB. root.srv2.smx.ha.CCB. (
1999112510
Serial
10800
Refresh
1800
Retry
3600000
Expire
86400 )
Minimum
IN NS srv2.smx.ha.CCB.
5、 配置named.local文件。
该文件用来将回送地址127.0.0.1转换成本地户机名localhost,它是反向域0.0.127.IN-ADDR.ARPA使用的文件,对所有域都相同。
#cd /etc/named.d
#vi named.local
$INCLUDE named.soa
1 IN PTR localhost.
6、 配置root.cache文件。
该文件用于定义高速缓存中根服务器信息,用户也可以将本地域内其它服务器或常用主机的地址等有关信息存放其中。一般用系统自带的root.cache模版即可。例:
#cd /etc/named.d
#vi root.cache
. 999999 IN NS NS.INTERNIC.NET.
NS.INTERNIC.NET. 999999 IN A 20.122.25.26
7、 启动DNS服务。
先查询后台守护进程/etc/named是否存在,如存在先kill其进程ID号,再重新启动该命令。
#ps -ef|grep named
#kill ID
#/etc/named
三、DNS客户机的配置。
1、 Unix客户机。
对域ha.CCB
#vi /etc/resolv.conf
domain ha.CCB
nameserver 122.68.2.2
对域smx.ha.CCB
#vi /etc/resolv.conf
domain smx.ha.CCB
nameserver 220.112.8.2
2、 Win95/Win98客户机。
点击"开始"-》"设置"-》"控制面版"-》"网络",如图3所示修改"TCP/IP属性"中DNS设置项,最后确认重启系统。
三、测试配置情况。
Win95/Win98客户机可进入MSDOS方式,在C提示下使用ping hostname命令,其中hostname指所查询的域名全称,如配置正确则立刻显示经过解析的IP地址,否则长时间无显示结果表示配置不正确需查找原因。
Unix客户机可使用nslookup命令进行交互式查询。以下是域smx.ha.CCB中客户机srv1的查询过程:
$ nslookup
Default Server: srv2.smx.ha.CCB
Address: 220.112.8.2
srv1.smx.ha.CCB
Server: srv2.smx.ha.CCB
Address: 220.112.8.2
Name: srv1.smx.ha.CCB
Address: 220.112.8.1
ser2.ha.CCB
Server: srv2.smx.ha.CCB
Address: 220.112.8.2
Name: ser2.ha.CCB
Address: 122.68.2.1
122.68.2.45
Server: srv2.smx.ha.CCB
Address: 220.112.8.2
Name: gl1.ha.CCB
Address: 122.68.2.45
exit
我们从上可以看出,DNS服务器可以方便地实现域名--》IP 或 IP--》域名的解析。
四、日常维护及总结。
SCO Unix网络中DNS的维护很简单,由于采用分布式的数据库管理结构,各域系统管理员只负责维护本域内主机信息变化情况。举例来说,当域内新增客户机时,先修改named.hosts文件增加客户机的A记录,再修改named.rev文件增加PTR记录,如网络中存在辅助名字服务器,则按照当时的时间更新主名字服务器上named.soa文件中的版本序列号(serial),最后重启/etc/named进程即可。其它如客户机删除、IP调整等情况依此类推。
多级DNS服务器的正确设置不仅大大方便客户端用户的记忆和操作,而且也是Intranet上开展WWW、匿名FTP、E_mail等流行服务的必要前提。由于SCO Unix系统的高可靠性和高安全性,当前国内行业系统采用其组网的居多,相信本文有一定的借鉴作用。