DNS服务器的安装与部署

一、DNS服务概述和解析原理

1.1 DNS概述

DNSDomain Name System的缩写,即域名系统,DNS服务主要的功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。DNS服务器可以分为3种,主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)和高速缓存服务器(Cache-only server)。Master DNS,本身提供dns服务,并且本身含有区域数据文件。Slave DNS,和Master一起提供dns服务,当Master服务器上的配置信息修改的时候,会自动更新到Slave服务器达到同步。

Cache-only server,没有自己的区域数据文件,只是帮助客户端向外部dns请求查询,然后将查到的结果保存到它的缓存中。在linux系统下DNS服务的功能是通过bind软件实现的,几乎每个linux发行版都自带了这个DNS服务软件,下面将具体讲述DNS服务的安装、配置与使用。


1.2 解析原理(解析www.exmaple.com.cn

A 客户机请求解析www.exmaple.com.cnIP 地址,如果本地hosts文件中没有相关解析,则向本地DNS服务器

发出解析请求;

B 如果本地DNS服务器有该域名的解析信息,则直接返回给客户机;如果本地DNS 服务器没有该域名的解析信

息,则本地DNS 服务器向根DNS服务器询问www.exmaple.com.cnIP地址;

C 如果根DNS 服务器有该域名的解析信息,则直接返回信息给本地DNS 服务器,本地DNS 服务器再将解析信

息返回给客户机;如果根DNS服务器没该域名的解析信息,则返回管辖.cn解析业务的DNS 服务器的IP 地址;

D 本地DNS 服务器向管辖.cnDNS 服务器询问www.exmaple.com.cnIP 地址;

E 如果.cn 服务器有该域名的解析信息,则直接返回信息给本地DNS 服务器,本地DNS服务器再将解析信息返

回给客户机;如果.cnDNS 服务器没有该域名的解析信息,则管辖.cn解析业务的DNS服务器告知.com.cnDNS

服务器的IP地址;

F 本地DNS 服务器向管辖.com.cnDNS服务器询问www.exmaple.com.cnIP 地址;

G 如果.com.cn 服务器有该域名的解析信息,则直接返回信息给本地DNS 服务器,本地DNS 服务器再将解析信

息返回给客户机;如果.com.cnDNS 服务器没有该域名的解析信息,则管辖.com.cn解析业务的DNS 服务器告

.example.com.cnDNS服务器的IP地址;

H 本地DNS服务器向管辖.example.com.cnDNS 服务器询问www. example.com.cn IP 地址;

I  管辖.example.com.cnDNS服务器告知www.exmaple.com.cnDNS服务器的IP地址;

J 本地DNS服务器解析出www.exmaple.com.cnIP 地址,并传回给客户机。


二、部署与安装的环境

[root@nfs-client ~]# uname –r              # 查看linux内核参数

2.6.18-308.el5

[root@nfs-client ~]# cat/etc/redhat-release   # 查看系统linux系统环境

CentOS release 5.8 (Final)


三、安装DNS服务

3.1 挂载光驱

[root@nfs-client ~]# mount -tiso9660 /dev/cdrom /mnt

[root@nfs-client CentOS]# cd /mnt/CentOS

3.2 安装DNS相关软件包

rpm –ivh安装下面的软件包

bind-9.3.6-20.P1.el5

bind-utils-9.3.6-20.P1.el5

bind-devel-9.3.6-20.P1.el5

bind-libs-9.3.6-20.P1.el5

ypbind-1.19-12.el5_6.1

bind-chroot-9.3.6-20.P1.el5

caching-nameserver-9.3.6-20.P1.el5

3.3 查看DNS相关软件包

[root@nfs-client CentOS]# rpm-qa |grep -E "bind|caching"

bind-devel-9.3.6-20.P1.el5

bind-libs-9.3.6-20.P1.el5

bind-utils-9.3.6-20.P1.el5

ypbind-1.19-12.el5_6.1

bind-9.3.6-20.P1.el5

bind-chroot-9.3.6-20.P1.el5

caching-nameserver-9.3.6-20.P1.el5


四、修改DNS服务的配置文件

4.1 修改named.conf主配置文件

[root@nfs-client CentOS]# cd/var/named/chroot/etc/       # 切换到NDS服务的虚拟目录

[root@nfs-client etc]# cpnamed.rfc1912.zones named.conf   # 将模板复制成named.conf

[root@nfs-client etc]# chownnamed:named named.conf    # 修改named.conf权限

[root@nfs-client etc]# vi /var/named/chroot/etc/named.conf  

添加如下字段:

options {

directory"var/named";

};

/*

上面这段通过OPTIONS选项定义了一些影响整个DNS服务器的环境设置,directory选项指定named/var/named目录下读取DNS数据文件,这个目录用户可自行指定并创建,指定后所有的DNS数据文件都存放在此目录下。

*/

zone "abc.com" IN {

       type master;

       file "abc.zone";

       allow-update { none; };

};

/*

上面这段设置是用zone关键字来定义一个正向域区,对应的域名分别为ixdba.net,一个zone关键字定义一个域区。在这里type类型有三种,它们分别是master,slavehint,它们的含义分别是:

master:表示定义的是主域名服务器。

slave表示定义的是辅助域名服务器。

hint表示是互联网中根域名服务器。

file用来指定存放DNS记录的文件,allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。

*/

zone"184.168.192.in-addr.arpa" IN {

       type master;

       file "184.168.192.zone";

       allow-update { none; };

};

//上面这段设置是定义一个IP192.168.60.*的反向区域。

4.2修改需要正向解析的配置文件

[root@nfs-client etc]# cd/var/named/chroot/var/named

[root@nfs-client named]# cplocalhost.zone abc.zone

[root@nfs-client named]#viabc.zone

$TTL    86400

@               IN SOA  ns.abc.com.       root.abc.com. (

                                       42              ; serial (d. adams)

                                       3H              ; refresh

                                      15M             ; retry

                                       1W              ; expiry

                                       1D)            ; minimum


               IN NS           ns.abc.com.

               IN A            127.0.0.1

               IN MX   10     mail

mail             IN A            192.168.184.130

www             IN A            192.168.184.100

test            IN A            192.168.184.100

              IN AAAA         ::1

linux           IN CNAME        www

/*

可以看出,区域数据文件内容很简单。

第一行是一个TTL设定,定义区域数据文件里面的各项记录的默认TTL值为86400 秒,缺少此行不影响使用,但是会出现警告信息。

第二行﹐是一个SOA记录的设定,“@”代表相应的域名,也就是在named.conf中设定的zone,如在这里表示abc.comIN表示后面的数据使用的是INTERNET标准。SOA,全称是“Start Of Authority”的意思,表示目前区域授权开始。每一个区域数据文件只能有一个SOA,不能重复,而且必须是所负责的zone中第一个“记录”。在SOA后面分别指定了这个区域的授权主机名称和管理者的信箱,特别注意,授权主机名和管理员信箱后面都要有一个“.”,而且授权主机名称必须能够在DNS设置中找到一个A记录(下面会讲到),由于“@”在区域数据文件中有其它含义,因此管理员信箱邮件地址中用“.”代替“@”符号。

接下来包含在括弧中的5组数字是作为与slave服务器同步信息而设置的,含义如下:

Serial:表示配置文件的修改版本,格式是年月日加上修改的次数,每次修改这个配置文件时都应该修改这个数字,因为slave DNS进行信息同步时,会比较这个数值,如果这个数值比自身的数值大,那么就进行更新,否则忽略更新。注意,这个设置很重要,如果你在修改区域数据文件后,没有更新该值,那么所作的更改就不会更新到网上的其它DNS服务器。

refresh:用来设定slave DNSMaster DNS进行同步的间隔时间。

retry:如果slave DNS在进行更新失败后,要隔多久再进行重试。

expiry:设定slave DNS在与Master DNS同步失败后,多长时间清除对应的记录。

Minimum:这是默认的最小TTL值,如果在前面没有指定TTL值,就以这个为基准。

以上的数字都是以秒为单位,但也可以用 H(小时)D()W(星期)来做单位。

814行,是对域名解析的具体设置,第一列表示不同的主机域名,但是省略了后面的域信息。例如“www”其实是www.abc.com,“mail”是指mail.abc.com。其它具有相同的含义。“IN”后面的指令含义说明如下:

NS:用来定义这个主机是个域名服务器。

MX:定义了一个邮件交换器。

A指针:定义了一个A记录,即域名到IP的记录。

CNAME:定义了域名的别名。

从上面的例子可知,我们首先定义了一个NSname server)为ns.abc.com,然后定义了一个邮件交换器,交换优先级为10,接着定义了4A记录,不同域名指向了不同的IP地址。最后定义了一个www的别名,即访问linux.abc.com与访问www.abc.com是相同的。

*/

4.3 修改需要反向解析的配置文件

[root@nfs-client named]# cpnamed.local 184.168.192.zone

[root@nfs-client named]# vi184.168.192.zone    

$TTL    86400

184.168.192.in-addr.arpa.  IN SOA   ns.abc.com.root.abc.com.  (

                                    1997022700 ; Serial

                                    28800      ; Refresh

                                    14400      ; Retry

                                    3600000    ; Expire

                                     86400)    ; Minimum

       IN     NS      localhost.

100     IN     PTR     www.abc.com.

100     IN     PTR     test.abc.com.

130     IN     PTR     mail.abc.com.

/*

可以看出,基本结构与正向区域数据文件完全相同,只不过这里多出了一个PTR选项。PTR用来定义一个反向记录,也就是通过IP可以查到对应的域名信息。最后两行的第一列表示的是主机的IP地址,只不过省略了网络地址部分,如130对应的IP192.168.184.130,同理,100对应的IP192.168.184.100

*/


4.4 修改正向和反向配置文件的权限

[root@nfs-client etc]# chownnamed:named ../var/named/abc.zone

[root@nfs-client etc]# chownnamed:named ../var/named/184.168.192.zone


五、启动DNS服务

[root@nfs-client etc]#/etc/init.d/named start

Starting named:                                             [  OK  ]

[root@nfs-client etc]#/etc/init.d/named stop

Stopping named:                                            [ OK  ]


六、客户端测试DNS服务器的配置

注意:测试DNS之前,先把服务DNS地址指向本机自己,客户端的DNS指向配置好的DNS服务器。

测试DNS的各种记录

C:\Users\ES>nslookup

默认服务器:  mail.abc.com

Address: 192.168.184.130

6.1测试A记录

> www.abc.com

服务器:  mail.abc.com

Address: 192.168.184.130

名称:    www.abc.com

Address:  192.168.184.100


> mail.abc.com

服务器:  mail.abc.com

Address: 192.168.184.130

名称:    mail.abc.com

Address: 192.168.184.130

6.2测试别名

> linux.abc.com

服务器:  mail.abc.com

Address: 192.168.184.130

名称:    www.abc.com

Address: 192.168.184.100

Aliases: linux.abc.com

6.3测试邮件MX记录

> set type=mx

> abc.com

服务器:  mail.abc.com

Address: 192.168.184.130

abc.com MX preference = 10, mail exchanger= mail.abc.com

abc.com nameserver = ns.abc.com

mail.abc.com    internet address = 192.168.184.130

6.4测试PTR记录

> set type=PTR

> 192.168.184.130

服务器:  mail.abc.com

Address: 192.168.184.130

130.184.168.192.in-addr.arpa    name = mail.abc.com

184.168.192.in-addr.arpa        nameserver = localhost

localhost       internet address = 127.0.0.1

localhost       AAAA IPv6 address = ::1


> 192.168.184.100

服务器:  mail.abc.com

Address: 192.168.184.130

100.184.168.192.in-addr.arpa    name = www.abc.com

100.184.168.192.in-addr.arpa    name = test.abc.com

184.168.192.in-addr.arpa        nameserver = localhost

localhost       internet address = 127.0.0.1

localhost       AAAA IPv6 address = ::1

6.5测试NS记录

> set type=ns

> abc.com

服务器:  mail.abc.com

Address: 192.168.184.130

abc.com nameserver = ns.abc.com


希望大家多多指教!