构建主从DNS服务器
实验背景:
公司注册了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 [email protected]:/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.//反向解析