Skip to main content

 路由器设置 > 新闻资讯 >

如何构建主从DNS服务器

2014-03-08 23:16 浏览:

实验背景:

 

 公司注册了DNS区域tarena.com,准备使用两台RHEL5服务器构建主、从域名系统,其中任何一台都能够解析tarena.com域内的主机地址。

 

1.主DNS服务器:svr5.tarena.com,192.168.4.5 。

 

2.从DNS服务器:svr6.tarena.com,192.168.4.6 。

 

3.负责解析以下站点:

 

网站:www.tarena.com ? 192.168.4.100

邮件:mail.tarena.com ? 192.168.4.25

FTP:是www的别名

4.为*.tarena.com提供泛域名解析:192.168.4.100 。

 

 

实验方案:

 使用2台RHEL 5虚拟机,其中一台作为主DNS服务器(192.168.4.5)、另外一台作为从DNS服务器(192.168.4.6),两台RHEL 5虚拟机及Windows真机都可作为DNS客户机执行测试。

 

实验实现:

1.认识Linux中的bind域名服务软件包

 

BIND不是唯一能够提供域名服务的DNS服务程序,却是应用最为广泛的,BIND可以运行在大多数UNIX/Linux主机中。其官方站点位于https://www.isc.org/。

 

1)安装bind相关的软件包

 

RHEL 5系统光盘自带了BIND服务的安装文件,主要包括以下软件包:

 

bind-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-libs-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-utils-9.3.6-20.P1.el5_8.5.x86_64.rpm

caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm

 

#rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpm bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm //安装三个软件包

 

2)了解bind、bind-chroot的配置路径

 

# rpm -qc bind

/etc/dbus-1/system.d/named.conf /etc/logrotate.d/named /etc/named.conf                     //域名服务主配置文件 /etc/rc.d/init.d/named

/etc/rndc.conf

/etc/rndc.key

/etc/sysconfig/named                 //服务程序named的选项配置文件 /usr/share/dbus-1/services/named.service

 

# grep "^ROOTDIR" /etc/sysconfig/named //查看真正的配置根目录ROOTDIR=/var/named/chroot

 从上述定义可看出,服务程序named的主配置文件最好存放到/var/named/chroot/etc目录下,文件名为named.conf:

 

3)

# chkconfig --list named                 //设置服务开机自启动

 

2.搭建主DNS服务器(192.168.4.5)

 

1)构建主配置文件named.conf

直接用vim编辑器新建,存放到/var/named/chroot/etc/目录下:

#cd /var/named/chroot/etc

#cp -p named.caching-nameserver.conf named.conf//复制模板,保留权限不变

# vim ./etc/named.conf

 

2.options {                                 //定义全局选项

3.directory "/var/named";             //区域数据文件的默认存放位置

4.allow-transfer { 192.168.4.6; };     //授权从DNS服务器

5.};

6.zone "tarena.com" IN {                     //定义正向解析区域

7.type master;                         //类型为主区域

8.file "tarena.com.zone";             //本区域的地址数据文件

9.};

10.zone "4.168.192.in-addr.arpa" IN {     //设置反向解析区域(不是必需的,可选)

11.type master;

12.file "192.168.4.arpa";

13.};

2)建立区域地址文件(正向域tarena.com)

直接用vim编辑器新建,存放到/var/named/chroot/var/named/目录下:

#cd ..//回到上一级目录chroot

#cd ./var

#cp named.local tarena.com.zone

#vim /var/named/chroot/var/named/tarena.com.zone

2.$TTL 86400                                 //有效记录的生存周期

3.@ IN SOA tarena.com. admin.tarena.com. ( //@表示当前tarena.com,

admin.tarena.com 表示邮箱,@变成了点.

4.2013101601                                 //更新序号

5.3H                                         //刷新时间

6.15M                                         //重试间隔

7.1W                                         //失效时间

8.1D                                         //无效记录的生存周期

9.)

10.@         IN NS         svr5.tarena.com.         //本域的DNS服务器地址

11.            IN NS         svr6.tarena.com.         //本域的DNS服务器地址

12.            IN MX 10    mail.tarena.com.         //本域的邮件服务器地址

13.            IN A         192.168.4.100             //本域的默认IP地址

14.svr5     IN A         192.168.4.5             //A主机记录

15.svr6     IN A         192.168.4.6

16.www         IN A         192.168.4.100

17.mail        IN A         192.168.4.25

18.ftp         IN CNAME    www                         //CNAME别名记录

19.*         IN A        192.168.4.100             //*泛域名解析

 

 

3)建立区域地址文件(反向域4.168.192.in-addr.arpa)

#cp -p tarena.com.zone 192.168.4.arpa

#vim 192.168.4.arpa//这里编辑的还是/var/named/chroot/var/named/192.168.4.arpa

 

2.$TTL 86400

3.@ IN SOA tarena.com. admin.tarena.com. (

4.2013101601                                 //更新序号

5.3H                                         //刷新时间

6.15M                                         //重试间隔

7.1W                                         //失效时间

8.1D                                         //无效记录的生存周期

9.)

10.@         IN NS svr5.tarena.com.

11.        IN NS svr6.tarena.com.

12.5         IN PTR svr5.tarena.com.

13.6         IN PTR svr6.tarena.com.

14.25         IN PTR mail.tarena.com.

15.100         IN PTR www.tarena.com.//反向解析

4)检查配置文件是否正确

 

 

# named-checkconf etc/named.conf //没有错误不提示

# named-checkzone tarena.com var/named/tarena.com.zone //没有错误提示ok

# named-checkzone 4.168.192.in-addr.arpa var/named/192.168.4.arpa

 

5)启动named服务,并在本机测试DNS解析是否符合预期

 

 

# service named restart                 //重启named服务

 

# vim /etc/resolv.conf //修改本机的DNS设置文件:

 

nameserver 192.168.4.5                             //首选DNS指向主DNS服务器

 

测试正向解析,都与预期的结果一致:

1.[root@svr5 ~]# host svr5.tarena.com

2.svr5.tarena.com has address 192.168.4.5

3.[root@svr5 ~]# host svr6.tarena.com

4.svr6.tarena.com has address 192.168.4.6

5.[root@svr5 ~]# host mail.tarena.com

6.mail.tarena.com has address 192.168.4.25

7.[root@svr5 ~]# host www.tarena.com

8.www.tarena.com has address 192.168.4.100

 

测试反向解析(抽查),也都与预期的结果一致:

1.[root@svr5 ~]# host 192.168.4.5

2.5.4.168.192.in-addr.arpa domain name pointer svr5.tarena.com.

3.[root@svr5 ~]# host 192.168.4.25

4.25.4.168.192.in-addr.arpa domain name pointer mail.tarena.com.

 

 

测试泛域名解析(查询几个不存在的域名),也都正确给出结果:

 

1.[root@svr5 ~]# host abc.tarena.com

2.abc.tarena.com has address 192.168.4.100

3.[root@svr5 ~]# host xxyyzz.tarena.com

4.xxyyzz.tarena.com has address 192.168.4.100

 

 

3.搭建从DNS服务器(192.168.4.5)

 

1)构建主配置文件named.conf

在从DNS服务器上,主配置文件named.conf的内容大部分与主DNS服务器上相同,因此只要复制过来稍加改动即可,建议采用scp远程复制:

 

# cd /var/named/chroot/etc/     //切换到主配置目录

# scp root@192.168.4.5:/var/named/chroot/etc/named.conf ./

//远程复制,保留到当前目录下

 

 

 

2)  对复制过来的named.conf进行修改——去掉主DNS配置的allow-transfer授权,将正、反向区域的类型改为slave,并添加masters配置指定主DNS服务器:

 

# vim /var/named/chroot/etc/named.conf

 

2.options {

3.directory "/var/named";

4.#allow-transfer { 192.168.4.6; };         //移除此行授权配置

5.};

6.zone "tarena.com" IN {

7.type slave;                                 //区域类型改为slave

8.file "slaves/tarena.com.zone";             //改为保存到slaves/子目录下

9.masters { 192.168.4.5; };                 //指定主DNS服务器的地址

10.};

11.zone "4.168.192.in-addr.arpa" IN {

12.type slave;                                 //区域类型改为slave

13.file "slaves/192.168.4.arpa";             //指定主DNS服务器的地址

14.masters { 192.168.4.5; };                 //改为保存到slaves/子目录下

15.};

 

 因为named服务程序的默认运行身份是named用户,当从DNS服务器自动从主DNS服务器下载区域地址数据文件后,需要有本地写入权限才能保存成功。默认情况下,子目录是专为主从同步准备的,named用户有权限写入:这里的权限错误页容易出错,需要注意

 

2)建立区域地址文件

对于从DNS服务器来说,此步骤不需要做(因为会自动从主DNS服务器下载)。

在从DNS服务器的named服务未启动之前,没有(也不需要有)区域地址文件:

 

3)启动named服务,确认已成功从主DNS服务器下载区域地址文件

 

# service named restart                 //重启named服务

 检查slaves/目录,可发现已自动下载正、反向区域地址文件:

 

#ls -l /var/named/chroot/var/named/slaves/

 

 如果前面忘记将存放位置改成slaves/目录下,则极可能因为无权限写入而导致区域文件下载失败,此时检查从DNS的日志应发现类似下列的提示:

dumping master file: tmp-MoaX2hDvPO: open: permission denied                                     //导出文件到本地时被拒绝

Oct 16 15:54:39 svr6 named[16371]: transfer of 'tarena.com/IN' from 192.168.4.5#

53: failed while receiving responses: permission denied

                                               //最终反馈:访问被拒绝

 

 只要修正存放位置或解决named用户的写入权限问题,故障就会解决了。

 

4)在从DNS服务器本机测试DNS解析是否符合预期

 

  测试操作与前面类似,使用host或nslookup都可以。

修改本机的DNS设置文件:

 

# vim /etc/resolv.conf //此处容易忘记修改从服务器的dns配置文件,不修改时解析不出来的

抽查正向解析,与预期结果一致:

 

1.[root@svr6 ~]# host www.tarena.com

2.www.tarena.com has address 192.168.4.100

3.[root@svr6 ~]# host svr5.tarena.com

4.svr5.tarena.com has address 192.168.4.5

抽查反向解析,与预期结果一致:

1.[root@svr6 ~]# host 192.168.4.5

2.5.4.168.192.in-addr.arpa domain name pointer svr5.tarena.com.

3.[root@svr6 ~]# host 192.168.4.25

4.25.4.168.192.in-addr.arpa domain name pointer mail.tarena.com.

 

测试泛域名解析,也能正确得出结果(192.168.4.100):

1.[root@svr6 ~]# host abc.tarena.com

2.abc.tarena.com has address 192.168.4.100

3.[root@svr6 ~]# host xxyyzz.tarena.com

4.xxyyzz.tarena.com has address 192.168.4.100

 

 

4.主、从DNS解析整体测试

 

1)修改客户机的DNS服务器指向

 

在主机192.168.4.5上,指定首选、辅助DNS服务器:

# vim /etc/resolv.conf

2.search localdomain

3.nameserver 192.168.4.5                             //首选DNS服务器

4.nameserver 192.168.4.6                             //辅助DNS服务器

在主机192.168.4.5上,也指定首选、辅助DNS服务器:

1.[root@svr6 ~]# vim /etc/resolv.conf

2.search localdomain

3.nameserver 192.168.4.6                             //首选DNS服务器

4.nameserver 192.168.4.5                             //辅助DNS服务器

 

实验总结:

 

1  此实验中尤其需要注意路径,本实验的各种路径都是在/var/named/chroot/下的var和etc目录下操作的

,在切换路径的时候习惯性的在前面加上/ ,这样就切换到根下了,是不正确的。

2  正向解析式最后的tarena.com. 后面的.不要忘记  

 

3  要解析出dns服务器,还不要忘记修改/etc/resolve.conf文件,添加本机的namesearch

 

4  如果还是解析不出来,可以查看/var/log/message 查看日志,日志中有的会提醒...denied 表示文件的  属性改变了,配置文件和区域配置文件的所属组应该是named,查看这几个文件的权限,如果是boot该为 named

例:chgrp named /var/named/chroot/etc/named.conf

 chgrp named /var/named/chroot/var/named/tarena.com.zone

chgrp named /var/named/chroot/etc/192.168.4.arpa

5 named.conf 的检查命令是:named-checkconf ./etc/named.conf

 区域文件的检查命令是: named-checkzone tarena.com ./var/named/tarena.com.zone

named-checkzone tarena.com ./var/named/192.168.4.arpa

 每次配置完,用检查命令接着检查下,刚刚配置的是否正确

6。在设置别名的时候,IN之后的A改为CNAME,去掉A不要保留着,这里自己容易忘记删除A

7.从dns服务器要想从主服务器上获取信息,首先要保证他们2个之间是能ping通的,解析不出也有可能是2个服务器之间不能ping通

 

8.在编辑各个配置文件的时候要注意标点符号的遗漏,像; ,在}外有;,不要遗漏

9 要学会用日志来检查出错信息,要留意出错时的错误提示信息,根据提示信息去找出错误并改正。

 

10 DNS使用端口  tcp/udp 53

 

11DNS负载均衡--同一个域名对应多个ip地址

12泛域名解析中有规律时的设置:

$GENERATE 1-200 station$ INA 192.168.4.$//正向解析

$GENERATE 1-200$INAstation$.tarena.com.//反向解析