Dns Server &Bind的配置与使用
网络发展到今天,仅仅用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.com140.135.10.1主域名服务器总公司
nsback.hope.com140.135.10.2备份域名服务器总公司
mail.hope.com140.135.10.3主邮件服务器总公司
mailback.hope.com140.135.10.4备份邮件服务器总公司
www.hope.com140.135.10.5Web服务器总公司
ftp.hope.com140.135.10.5FTP服务器总公司
download.hope.comftp.hope.comFTP服务器别名总公司
ns.chengdu.hope.com140.135.20.1分公司域名服务器成都分公司
www.chengdu.hope.com140.135.20.2分公司Web服务器成都分公司
ftp.chengdu.hope.com140.135.20.2分公司FTP服务器成都分公司
ns.shanghai.hope.com140.135.30.1分公司域名服务器上海分公司
ns.changchun.hope.com140.135.40.1分公司域名服务器长春分公司
ns.tianjin.hope.com140.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,说明从服务器配置成功。