dns服务器bind的配置与使用

作者:Zhaoxiong.Zhang


网络发展到今天,仅仅用IP地址去标一台网络上的计算机是很难以让人接受的,人们不可能记住众多的IP地址,于是便有了域名系统,它可以利用形象的名称来标识一台网络上的计算机,这就是DNS,本章将详细介绍有关DNS的一些知识。


第一节 基础知识


本节介绍DNS的工作原理、优点等基础知识。


一、DNS简介


连接TCP/IP的每个网络接口用一个唯一的32位的IP地址来标识,但由于数字比较复杂、难以记忆而且没有形象性。因而,人们发明了用域名系统,在这种情况下,我们可以使用易于理解和较为形象的名称来标识一台计算机。在大多数情况下,数字地址和域名地址可以交替使用;但无论用数字地址还是域名进行网络应用时,网络总是以IP地址为基础来进行的。在网络进行连接前,系统必须将域名转换成IP地址。这就是DNS服务器的作用。
将域名转换成IP地址有两种常用的方法。一种较古老的方法是从一个称为“主机表”的文件中查找主机名;另一种是使用一个称为“域名服务(DNS)”的分布式数据库系统,将名字转换成IP地址。
主机表是一个简单的文本文件,可以使IP地址与主机名相关联。在Redhat Linux7.2操作系统中,主机表文件为/etc/hosts,该文件的每一列表项包含一个IP地址和用空格隔开的与该地址关联的主机名。


DNS的优点:
DNS的扩充性好。它并不单独依靠一个主机表,而是依靠一个分布式数据库系统,不会因为数据库的增长而陷入困境。
DNS可确保在必要时将新主机的信息传播到网络中的其他部分。不仅能自动地传播信息,而且可以只传播所需的信息。
? DNS的工作原理为:
如果一台DNS服务器接收到一个要求获取有关主机信息的请求,它就将该请求发送给一台管理服务器。管理服务器是负责保持查询域的精确信息的服务器。当它响应该请求时,本地服务器就将回答信息保存在高速缓存中。当本地服务器再接收到要求获取关主机信息的请求时,它本身就回答这个请求。


二、DNS服务器的类型


DNS服务器分为以下几个类型:
1.“Cache-Only”DNS服务器:
一个DNS服务器也不可能拥有国际网络上所有的主机信息,因此它提供一个转送方式,将自己的DNS服务器无法处理的查询要求转送至上一层的DNS服务器上查询,然后将所得到的查询结果传送给提出查询要求的主机。而“Cache-Only”DNS就是该DNS服务器的主机里除了自己的信息就没有其它的了,它将所有的查询要求都转送至其他DNS服务器上。
2.“Primary”DNS服务器:
一个功能完备的DNS服务器,管理一个或数个“Domain”(域)的计算机信息。而这些相关的资料都依照某种格式储存于服务器的档案目录中,然后会在服务器启动时将这些资料载入系统。
3.“Secondary”DNS服务器:
“Secondary”DNS服务器也是一个功能完备的DNS服务器,所不同的是,它的主机资料并非完全储存于服务器所在的档案目录中,而由某个“Primary DNS”来提供。


三、DNS数据库文件几个参数的说明

DNS数据库文件有以下几个参数需要说明:
ttl
为了迫使解析器在一段时间后丢去信息,每条记录都有一个相应的“生存期”,简称ttl。它的单位是秒,系统的缺省值为86400。
SOA
描述了一个授权区域,它表示了该区域的授权信息。
Serial
表示该区域文件的版本号数。每当区域文件中的数据改变时,这个数值将要增加。通常用修改的时间来表示该版本号。例如2002110501表示2002年11月5日对该文件的第一次修改。从服务器在一定时间以后就请求主服务器的SOA记录,并将该序列号值与缓存中的SOA记录的序列号相比较,如果数值改变了,从服务器就从主服务器将整个区域的数据传输过来。
Refresh
指定了从服务器将要检查主服务器的SOA记录的时间间隔,单位为秒。
retry
它指定了从服务器的一个请求或一个区域刷新失败后,从服务器重新与主服务器联系的时间间隔,单位是秒。
expire
在指定的时间内,如果从服务器还不能联系到主服务器(主服务器宕机),从服务器将丢去所有的区域数据。
minimum
如果没有明确指定ttl的值,则minimum就是缺省的“生存期”。
A
主机记录,用于将一个主机名与一个IP地址相关联(相对应)。
NS
用来指定某个区域的主名字服务器和所有从名字服务器。一条NS记录指向一个给定区域的主名字服务器,以及包含该服务器主机名的资源记录。
CNAME
用来关联一个主机名的别名和它的规范主机名,即该记录为规范主机名提供了一个别名。
MX
指明了该区域中的邮件交换器(邮件服务器)和优先级。


第二节 实 例

一、DNS实例一

北京千喜公司现用ISDN上网,目前已能上网,但是速度稍慢,为了提高访问互联网的速度,公司网络管理员决定在Linux系统下做一台caching nameserver(域名缓存服务器)。试为该公司安装该服务器。
分析:该服务器的功能就是暂存上次访问过的域名,下次需要解析时,直接从缓存内读取结果,所以不用建立其他的区域。假设我们将服务器的IP设置为192.168.0.197。

具体操作步骤如下:
1.获取并安装DNS服务器软件。
Linux/UNIX系统内常用的DNS服务器软件为Bind,RedHat Linux7.2版本为bind-9.1.3-4,可以到http://www.isc.org/products/BIND/或ftp://ftp.isc.org/isc/bind9/获得新版本。
如果是下载的源代码(以bind-9.2.1为例),则执行以下操作:
(1)进入源代码所在的目录。例如:/tmp。
(2)tar –zxvf bind-9.2.1.tar.gz
(2)cd bind-9.2.1
(3)./configure
make
make install
如果从RedHat Linux7.2的安装光盘安装,则:
(1)把RedHat Linux7.2的安装光盘放入光驱,执行:
mount /dev/cdrom /mnt/cdrom
(2)cd /mnt/cdrom /RedHat/RPMS
(3)rpm –ivh bind-9.1.3-4.i386.rpm
2.修改配置文件/etc/named.conf。
由于是域名缓存服务器,不用修改该配置文件,但是必须确定该配置文件内有如下字段:
zone"."{
typehint;
file"named.ca";
};
3.启动dns服务器。
/etc/rc.d/init.d/named start
为了每次开机都启动DNS服务,需要执行chkconfig --level 2345 named on。

当执行完/etc/rc.d/init.d/named start后,执行tail–f/var/log/messages命令查看系统日志时,日志内容大至应如图1所示。


图1


4.测试服务器。
(1)编辑/etc/resolve.conf,将其内容更改为(即指定DNS通过本机解析):
nameserver 127.0.0.1
(2)执行dig –x 127.0.0.1(验证本机解析是否正常)命令后,出现如图2所示的内容。


图2


(3)执行dig www.google.com(外部域名解析是否正常)命令,应出现如图3所示的内容。


图3


(5)客户端设置。只需将客户端的首选DNS服务器设置为192.168.0.197即可。


二、DNS实例二


长城医药公司申请了域名greatwall.com,现在公司的DNS服务器地址为:202.119.98.1,域名为ns.greatwall.com,web服务器地址为:202.119.98.10,域名为www.greatwall.com,FTP服务器地址为:202.119.98.100,域名为ftp.greatwall.com试为该公司安装一台DNS服务器。
分析:因为没有特殊要求,这是最简单的DNS服务器。只需要设置本地区域,并且能够起到缓存作用即可,而且内部通过此服务器也能解析外部的DNS地址。

具体操作步骤如下:
1.获得并安装DNS服务器软件(参看实验一的步骤1)。
2.修改配置文件,即vi/etc/named.conf。
(1)定义正解区域,在named.conf文件内插入以下内容:
zone "greatwall.com"{
type master;
file "dns.greatwall.com";
};
(2)定义反解区域,在named.conf文件内插入以下内容:
zone "98.119.202.in-addr.arpa"{
type master;
file "202.119.98";
};
3.用/etc/hosts文件解析服务器域名,在/etc/hosts文件内插入以下内容:
202.119.98.1 ns ns.greatwall.com
4.创建DNS数据库文件。
(1)创建正解数据库文件/var/named/dns.greatwall.com,其内容如下:
$TTL86400
@ IN SOA ns.greatwall.com. root.ns.greatwall.com(
199802151; serial
28800; refresh
14400; retry
3600000; expire
86400); minimum,seconds;
NS ns.greatwall.com.
ns A 202.119.98.1
www A 202.119.98.10
ftp A 202.119.98.100
. . .
. . .
. . .
(2)创建反解数据库文件/var/named/202.119.98,其内容如下:
$TTL86400
@ IN SOA ns.greatwall.com. root.ns.greatwall.com(
199802151; serial
28800; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.greatwall.com.
1 IN PTR ns.greatwall.com.
10 IN PTR www.greatwall.com.
100 IN PTR ftp.greatwall.com.
. . .
. . .
. . .
5.启动DNS服务,/etc/rc.d/init.d/named start(参看实例一)。
6.测试DNS服务器。
(1)设置/etc/resolv.conf,即将某台客户机的DNS设置为202.119.98.1(或者将DNS服务器设置为202.119.98.1,此时服务器也当客户机):
nameserver 202.119.98.1

(2)执行dig –x 202.119.98.1命令,测试服务器是否正常。

(3)执行nslookup www.greatwall.com命令,解析内部域名地址。

(4)执行dig greatwall.com axfr命令,查看greatwall.com域的全部记录。

(5)执行nslookup www.google.com命令,解析外部域名。

到此为止,服务器已经安装完成并且能够正常运行。

三、DNS实例三


长江实业公司的内部域名服务器为192.168.10.197,域名为ns.changjiang.com,ISP的域名服务器地址为:202.106.196.115,为了减轻内部域名服务器的负担,网络管理员决定将外部域名查询转发给ISP的服务器处理(不用cache)。试安装该服务器。
具体操作步骤如下:
1.获得并安装DNS服务器软件(参看实验一的步骤1)。
2.修改配置文件,即编辑/etc/named.conf:
(1)设置forward(转发)字段(凡是非本域的地址都发送给外部域名服务器解析):
在option字段添加下列语句,如图4所示:
forward first;
forwarders{
202.106.196.115;
};


图4


(2)定义正解区域,在named.conf文件内插入如下内容:
zone "changjiang.com"{
type master;
file "dns.changjaing.com";
};
(3)定义反解区域,在named.conf文件内插入如下内容:
zone "10.168.192.in-addr.arpa"{
type master;
file "192.168.10";
};
(4)用/etc/hosts文件解析服务器域名,在/etc/hosts内插入以下内容:
192.168.10.197 ns ns.changjiang.com

4.创建DNS数据库文件:
(1)创建正解数据库文件/var/named/dns.changjiang.com,其内容如下:
$TTL86400
@ IN SOA ns.changjiang.com. root.ns.changjiang.com(
199802151; serial
28800; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.changjiang.com.
Ns IN A 192.168.10.197
www A 192.168.10.198
ftp A 192.168.10.1
. . .
. . .
. . .
(2)创建反解数据库文件/var/named/192.168.10,其内容如下:
$TTL86400
@ IN SOA ns.changjiang.com. root.ns.changjiang.com(
199802151;serial
28800; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.changjiang.com.
197 IN PTR ns.changjiang.com.
5.启动DNS服务,/etc/rc.d/init.d/named start(参看实例一的步骤3)。
6.测试DNS服务器:
(1)设置/etc/resolv.conf,即将某台客户机的DNS设置为192.168.10.197(或者将DNS服务器设置为:192.168.10.197,此时服务器也当客户机):
nameserve r192.168.10.197
(2)执行dig –x 192.168.10.197命令,如图5所示,表示服务正常。


图5


再分别解析一个内部域名和一个外部域名:
解析内部域名:nslookup www.changjiang.com
解析外部域名:nslookup cn.yahoo.com

(3)确认解析外部域名是通过forward实现的。可以将/etc/named.conf内的“.”(根服务器)区域屏蔽掉,如图6所示。然后重新启动服务器:/etc/rc.d/init.d/namedrestart。最后再解析外部域名:nslookup freemain.263.net


图6


四、DNS实例四


霍普公司总部有一域名服务器,各地分公司也均有自己的域名服务器,现要为该公司建立域名服务系统,且总部和各地分公司的web服务器与FTP服务器用同一台主机,公司有一台邮件服务器和一台备份邮件服务器,由于公司总部的业务不能中断,要求建立一台备份域名服务器。公司的部分资料如下:

  

对应的IP

  

  

ns.hope.com

140.135.10.1

主域名服务器

总公司

nsback.hope.com

140.135.10.2

备份域名服务器

总公司

mail.hope.com

140.135.10.3

主邮件服务器

总公司

mailback.hope.com

140.135.10.4

备份邮件服务器

总公司

www.hope.com

140.135.10.5

Web服务器

总公司

ftp.hope.com

140.135.10.5

FTP服务器

总公司

download.hope.com

ftp.hope.com

FTP服务器别名

总公司

ns.chengdu.hope.com

140.135.20.1

分公司域名服务器

成都分公司

www.chengdu.hope.com

140.135.20.2

分公司Web服务器

成都分公司

ftp.chengdu.hope.com

140.135.20.2

分公司FTP服务器

成都分公司

ns.shanghai.hope.com

140.135.30.1

分公司域名服务器

上海分公司

ns.changchun.hope.com

140.135.40.1

分公司域名服务器

长春分公司

ns.tianjin.hope.com

140.135.50.1

分公司域名服务器

天津分公司

……

……

……

……

分析:由于总公司与各分公司均有自己的域名服务器,要让总公司能够解析各分公司的域名,各分公司的DNS服务器应为总公司的子域。要让各分公司能够解析出总公司的域名,可以设置转发,也可以将分公司的域名服务器的根服务器设置为总公司的服务器。

具体操作步骤如下:

一、总公司主服务器的安装。
1.获得并安装DNS服务器软件(参看实例一的步骤1)。
2.修改配置文件,即编辑/etc/named.conf:
(1)定义正解区域,在named.conf文件内插入如下内容:
zone "hope.com"{
type master;
file "dns.hope.com";
};
(2)定义反解区域,在named.conf文件内插入如下内容:
zone "10.135.140.in-addr.arpa"{
type master;
file "140.135.10";
};
3.用/etc/hosts文件解析服务器域名,在/etc/hosts内添加以下内容:
140.135.10.1 ns ns.hope.com
4.创建DNS数据库文件:
(1)创建正解数据库文件/var/named/dns.hope.com,其内容如下:
$TTL86400
@ IN SOA ns.hope.com. admin.hope.com(
199802151;serial
28800;refresh
14400;retry
3600000;expire
86400);minimum
IN NS ns.hope.com.
chengdu IN NS ns.chengdu.hope.com.
shanghai IN NS ns.chengdu.hope.com.
changchun IN NS ns.changchun.hope.com.
tianjin IN NS ns.tianjin.hope.com.
. . . .
以上为各地分公司的域名记录,即NS记录。省略号表示很多。
ns.chengdu IN A 140.135.20.1
ns.shanghai IN A 140.135.30.1
ns.changchun IN A 140.135.40.1
ns.tianjin IN A 140.135.50.1
. . . .
以上为各地分公司的DNS服务器的主机记录,它是A记录。
MX 10 mail.hope.com.
MX 20 mailback.hope.com.
以上两条为邮件服务器记录。
ns IN A 140.135.10.1
nsback IN A 140.135.10.2
mail IN A 140.135.10.3
mailback IN A 140.135.10.4
www IN A 140.135.10.5
ftp IN A 140.135.10.5
download IN CNAME ftp
. . . .
以上为总公司的主机记录和别名,即A记录和CNAME记录。
(2)创建反解数据库文件/var/named/140.135.10,其内容如下:
$TTL86400
@ IN SOA ns.hope.com. root.ns.hope.com
199802151; serial
28800; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.hope.com.
1 IN PTR ns.hope.com.
5.启动DNS服务,/etc/rc.d/init.d/named start(参看实例一)。
6.测试DNS服务器:
(1)设置/etc/resolv.conf,即将某台客户机的DNS设置为140.135.10.1(或者将DNS服务器设置为:140.135.10.1,此时服务器也当客户机):
nameserver 140.135.10.1
(2)执行dig –x 140.135.10.1命令

二、建立各分公司的服务器(子域),下面以成都分公司为例介绍子域的建立。
1.获取并安装服务器软件。(参看实例一的步骤1)
2.用/etc/hosts文件解析DNS服务器。在/etc/hosts文件内添加如下内容:
140.135.20.1 ns ns.chengdu.hope.com
3.配置named.conf文件。
(1)在named.conf中添加转发字段:
forward first;
forwarders {
140.135.10.1;
};
(2)建立正解区域及反解区域,即在/etc/named.conf中添加如下字段:
zone "chengdu.hope.com" {
type master;
file "dns.chengdu.hope.com";
};

zone "20.135.140.in-addr.arpa" {
type master;
file "140.135.20";
};
4.创建域名数据库文件。/var/named/dns.chengdu.hope.com
文件的内容如下:
$TTL 86400
@ IN SOA ns.chengdu.hope.com. root.ns.chengdu.hope.com (
199802151; serial
28800 ; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.chengdu.hope.com.
ns IN A 140.135.20.1
www IN A 140.135.20.2
ftp IN A 140.135.20.2
. . .

140.135.20文件的内容如下:
$TTL 86400
@ IN SOA ns.chengdu.hope.com. root.ns.chengdu.hope.com (
199802151; serial
28800; refresh
14400; retry
3600000; expire
86400); minimum
IN NS ns.chengdu.hope.com.
1 IN PTR ns.chengdu.hope.com.
5.启动DNS服务,执行/etc/rc.d/init.d/named start命令。
6.测试DNS服务器:方法与总公司的DNS服务器测试相同,这里不现赘述。
按照上面的方法,分别为其他分公司建立域名服务器。

三、总公司备份服务器的建立
1.安装服务器软件(参看实例一的步骤1)。
2.编辑/etc/named.conf文件,在该文件中添加如下内容:
zone "hope.com"{
type slave;
file "dns.hope.com";
masters {140.135.10.1;};
allow-update { none; };
};
3.修改主服务器上的/etc/named.conf文件,在其中添加如下字段:
notify-source 140.135.10.2;
并将区域“hope.com”更改为如下:
zone "hope.com"{
type master;
file "dns.hope.com";
allow-transfer {140.135.10.2;};
allow-update { none; };
};
4.重新启动服务器,即可看到/var/named目录多了文件dns.hope.com,说明从服务器配置成功。

返回首页