我们知道,UNIX DNS服务器的最常用软件是BIND,它源自U.C. Berkeley但现在则由Internet Software Consortium.负责。BIND提供了解析器和名字服务器软件,解析器做实际的查询工作而名字服务器则提供响应。BIND将名字服务器分成三个部分:主域名服务器包含了有关一个域的全部数据;辅助域名服务器则有效地从主域名服务器拷贝DNS数据库;(唯)高速缓冲服务器通过缓冲查询来建立例外的DNS数据库。只有主域名服务器和辅助域名服务器才被当作涉及特定域的授权服务器。
下面以AIX 的UNIX系统为例来说明主域名服务器、辅助域名服务器和UNIX DNS客户机的创建,来实现“规划与设计篇”的域名结构的例子。
一、 主域名服务器的创建
创建主域名服务器的步骤:
创建named的控制文件;
创建域名区域文件;
创建IP区域文件和本地IP区域文件;
创建缓冲区文件;
1、named控制文件
named的控制文件是/etc/named.boot(BIND4版本),在named启动时读入。它说明named使用的所有数据的存放位置,named用这些数据创建一个初始域名服务器数据库。
named.boot文件内容如下图所示:
directory项告诉named在/etc/named.boot文件中所列文件存放的目录。
Domain项说明本地主机所在的域,域名服务器用它作为缺省域。
Primay项表明本地主机named作为哪个域的主域名服务器,以及从哪个文件获得描述本域的数据。
反向映射的域名永远以“in-addr.arpa”结尾,形成一个域名的IP地址必须反写,这是因为IP地址的最重要的8位位组应排在第一位,而域名表达方式与IP的表达方式恰好相反,即最低有效的8位位组排在最前面,每个物理网络应用一个资源文件与之对应。
在cache记录项的domain域中的圆点“.”表示末列在其他地方的任何领域,缓存文件(cache file)允许缺省域中的一个主机与该域之外的其他主机通信。
/etc/named.conf(BIND8版本)文件内容如下:
options {
directory "/etc";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "ghq.js.com" IN {
type master;
file "resolv.conf";
allow-update { none; };
};
zone "1.32.10.in-addr.arpa" IN {
type master;
file "named.revip1";
allow-update { none; };
};
zone "2.32.10.in-addr.arpa" IN {
type master;
file "named.revip2";
allow-update { none; };
};
笔者认为在这里不用解释,大家也会知道上面配置的具体含义。
2、域名区域文件
AIX系统提供了创建区域文件的awk文件。awk文件将读取系统的/etc/hosts文件,然后创建相应的区域文件。但是awk文件并不意味着能为每个环境建立一个完美的区域文件,它仅提供一个创建区域文件的入门手段。文件建立以后,就可用文件编辑器根据需要修改或添加记录。作为一个例子,用awk文件生成区域文件的方法如下:
# cd /usr/samples/tcpip
# ./hosts.awk
/etc/hosts
/etc/named.dc
# ./addrs.awk
/etc/hosts
/etc/named.revip1
# ./addrs.awk
/etc/hosts
/etc/named.revip2
下面给出了一个域名区域文件/etc/named.dc的内容。
/etc/named.dc文件内容如下图所示:
资源记录格式为:
NAME
TTL
CLASS
TYPE
RDATA
其中:
NAME:说明一个域、区域、一个主机名字或者主机别名等。它必须在文件的第一列。若该域为空,则其值为前一个资源记录的NAME域值;
TTL:信息存活时间,以秒为单位。99999999表示信息永远不会超时。如果没有TTL值,则把TTL缺省值设置为SOA记录的Minimum项之值;
CLASS:记录的地址类型,有IN和ANY两个值。其中IN代表Intemet地址,而ANY代表任何其他的地址类;
TYPE:资源记录类型。合法的类型有:
SOA----Start of Authority
(中央权威机构);
NS----NameServer(域名服务器);
A----Address(地址);
HINFO----标准各字;
MX----邮件交换。
RDATA:说明特殊资源记录类型的细节,它有几个特殊字符:
:----表示注释;
.----用在名字域时,若圆点后无具体内容则该圆点表示当前域;
@ ----用在名字域时,单个的“@”表示当前域;
()----圆括号用来接续不止一行的数据项。
SOA表示管理机构所在地。SOA记录表明:
数据文件所在的主机名字,以及负责维护数据文件的用户的E-mini地址;
serial --表示数据文件版本号。当数据文件里的数据修改时,这个版本号应随之增加;
refresh --检查数据是否需要刷新的时间间隔,以秒为单位。为辅助域名服务器用;
retry --辅助域名服务器在做刷新时无法连接到主域名服务器的情况下,辅助域名服务器等待的时间间隔,以秒为单位;
expire --上限时间;用于辅助域名服务器。当辅助域名服务器一直不能与主域名服务器通信时,辅助域名服务器刷新数据的时间上限;
minimum --缺省的最小存活时间。当其他项的TTL值比此值小时,用此值替代。
3、IP区域文件和本地IP区域文件
IP Zone文件如下所示。
/etc/named .revip1文件内容下图3所示:
本地IP Zone文件如下所示。
/etc/named.local文件内容如下:
@
IN
NS
sys1.ghq.js.com
1
IN
PTR
localhost.ghq.js.com
在DNS里,域名形成一种层次结构。为了解析一个地址,系统从根向下针对名字中的每个域查询域名服务器,把主机名字翻译成主机IP地址。
IP区域文件的合法资源记录类型是SOA、NS和PTR----域名指针(Domain Name Pointer)。由于另一些系统位于10.32.2网络,因此IP区域文件必须有两个,每个网络一个。这两个文件都由/etc/hosts生成,而/etc/hosts文件中包含了两个网络的登记项。因此必须用文本编辑将另一网络的登记项删掉,只保留本地网络上的主机地址八位位组(把本地网络主机的网络地址部分的八位位组也删掉)。
除了这个IP区域文件外,还必须有一个本地IP区域文件,它包含网络127.0.0.1的回送地址。其合法的资源记录类型为SOA、NS和PTR。对于本地IP区域文件,SOA记录不是必要的,但在域名区域文件和IP区域文件中是必要的。
4、缓存文件
当一个名字不能在本区域解析时,named进程会和缓存文件中所列的其他域名服务器进行交互,直到它解析出这个名字为止,或者直至它查询了所有列出的域名服务器为止。
/etc/named.ca 文件内容如下:
.
999999
IN
NS
sys99.js.com
sys99.js.com
999999
IN
A
10.32.7.99
缓存文件包含域名服务器的地址,这些域名服务器是更高一级域的权威域名服务器。
二、辅助域名服务器的创建
创建辅助域名服务器的步骤如下:
创建named的控制文件;
创建本地IP区域文件和缓存文件。
1、named控制文件
辅助域名服务器的named控制文件与主域名服务器略有不同,它比主域名服务器的Named控制文件至少多一个secondary项。Secondary项表示本地named进程是本域的辅助域名服务器,它接收来自指定IP地址的域信息,并把它存放在指定的文件中,这个文件是主域名服务器的备份文件。
/etc/named.boot(BIND4版本)文件内容如下图所示:
若从其中一个主域名服务器收到域信息的新拷贝,则named进程将更新那个域名服务器的备份文件。named进程第一次启动时,辅助域名服务器就下载主域名服务器的信息;辅助域名服务器根据SOA记录规定的刷新时间间隔,去主域名服务器查询相关信息。
/etc/named.conf(BIND8版本)文件内容如下:
options {
directory "/etc";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone " ghq.js.com " IN {
// type master;
type slave;
// type后面的值已经成为slave;
file " named.dc.bak ";
//file
后面也可以是别的文件名不必与主域DNS服务器的设置一样
masters { 10.32.1.1; };
//10.32.1.1
为主域DNS服务器的IP地址,
};
zone "1.10.32.in-addr.arpa" IN {
// type master;
type slave;
// typ