随着ABC公司业务的扩张,计算机越来越多的情况下,让员工记忆所有公司内部服务器的IP地址可能性不大,因此公司决定采用DNS解决方案,这样实现主机之间的通讯可以变的更简单。案例中我们使用的域为abc.com域,这个是正向解析的域,网络采用的是私有网络:172.16.0.0/16。本案例仅对公司主要的服务器生产解析记录,如果读者需要更多的记录,可以按照这些模版添加其他主机的记录信息,在公司内部服务器列表见表4-10。
表4-10
服务器IP | 服务器名称 | 功能描述 |
172.16.0.254 | dns1.abc.com | 主域名服务器 |
172.16.0.253 | dns2.abc.com | 从域名服务器 |
172.16.0.100 | fileserver.abc.com | 文件服务器 |
172.16.0.101 | printserver.abc.com | 打印机服务器 |
172.16.0.200 | www.abc.com | 网站服务器 |
172.16.0.201 | www.abc.com | 网站服务器 |
172.16.0.25 | mail.abc.com | 邮件服务器 |
172.16.0.22 | ntp.abc.com | 时间服务器 |
[root@centos6 ~]# yum -y install bind
[root@centos6 ~]# yum -y install bind-chroot
[root@centos6 ~]# yum -y install bind-utils
2. 修改主配置文件
[root@centos6 etc]# cd /usr/share/doc/bind-9.8.2/sample/etc/
[root@centos6 etc]# cp named.conf /var/named/chroot/etc/
[root@centos6 etc]# chown root.named /var/named/chroot/etc/named.conf
[root@centos6 etc]# vim /var/named/chroot/etc/named.conf
- options
- { directory "/var/named"; // "Working" directory
- dump-file "data/cache_dump.db";
- statistics-file "data/named_stats.txt";
- memstatistics-file "data/named_mem_stats.txt";
- listen-on port 53 { any; };
- allow-query { any; };
- allow-query-cache { any; };
- recursion yes;
- };
- acl secondserver {
- 172.16.0.253;
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "abc.com" IN {
- type master;
- allow-transfer { secondserver; };
- file "abc.com.zone";
- };
- zone "16.172.in-addr.arpa" IN {
- type master;
- allow-transfer { secondserver; };
- file "172.16.zone";
- };
3. 创建区数据文件
[root@centos6 etc]# cd /usr/share/doc/bind-9.8.2/sample/var/named/
[root@centos6 named]# cp named.ca /var/named/chroot/var/named/
[root@centos6 etc]# chown root.named /var/named/chroot/var/named/named.ca
[root@centos6 named]# cp named.localhost /var/named/chroot/var/named/abc.com.zone
[root@centos6 named]# chown root.named /var/named/chroot/var/named/abc.com.zone
[root@centos6 named]# vim /var/named/chroot/var/named/abc.com.zone
- $TTL 1D
- @ IN SOA dns1.abc.com. jacob.abc.com. (
- 10 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS dns1.abc.com.
- NS dns2.abc.com.
- MX 10 mail.abc.com.
- dns1 IN A 172.16.0.254
- dns2 IN A 172.16.0.253
- ntp.abc.com. IN A 172.16.0.22
- mail.abc.com. IN A 172.16.0.25
- fileserver IN A 172.16.0.100
- printserver IN A 172.16.0.101
- www IN A 172.16.0.200
- IN A 172.16.0.201
[root@centos6 named]# vim /var/named/chroot/var/named/ 172.16.zone
- $TTL 1D
- @ IN SOA dns1.abc.com. jacob.abc.com. (
- 10 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS dns1.abc.com.
- NS dns2.abc.com.
- 254.0 IN PTR dns1.abc.com.
- 253.0 IN PTR dns2.abc.com.
- 22.0 IN PTR ntp.abc.com.
- 25.0 IN PTR mail.abc.com.
- 100.0 IN PTR fileserver.abc.com.
- 101.0 IN PTR printserver.abc.com.
- 200.0 IN PTR www.abc.com.
- 201.0 IN PTR www.abc.com.
4. 服务管理
[root@centos6 ~]# iptables -I INPUT -p udp --dport 53 -j ACCEPT
[root@centos6 ~]# iptables -I INPUT -p tcp --dport 53 -j ACCEPT
[root@centos6 ~]# service named start
[root@centos6 ~]# chkconfig named on
1. 客户端验证
客户端正确配置DNS服务器后,查询工具比较多,常用的有nslookup、dig、host,下面分别演示这些命令的基本用法。
[root@centos6 ~]# nslookup www.abc.com
[root@centos6 ~]# nslookup 172.16.0.100
[root@centos6 ~]# dig www.abc.com
[root@centos6 ~]# dig abc.com MX
[root@centos6 ~]# host www.abc.com
4.1.1 部署从域名服务器
部署从域名服务器的作用是防止单点故障或实现负载均衡。如果只有一台服务器当该服务器宕机时,将导致所有客户端的地址解析出现问题。另外,为了满足大规模的查询请求,我们可以创建多台DNS服务器实现负载均衡。然而如果所有的DNS都作为主服务器的话,会有大量的配置需要我们重复进行,再有就是当解析记录发生改变后,各个服务器之间的区数据文件的版本比较混乱(不方便统一),所以我们需要部署从域名服务器,从域名服务器会从主域名服务器上下载数据文件,只要主服务器修改了数据文件中的记录,从服务器可以自动同步数据。
1. 安装软件
[root@centos6 ~]# yum -y install bind
[root@centos6 ~]# yum -y install bind-chroot
[root@centos6 ~]# yum -y install bind-utils
2. 修改配置文件
[root@centos6 etc]# cd /usr/share/doc/bind-9.8.2/sample/etc/
[root@centos6 etc]# cp named.conf /var/named/chroot/etc/
[root@centos6 etc]# chown root.named /var/named/chroot/etc/named.conf
[root@centos6 etc]# vim /var/named/chroot/etc/named.conf
- options
- {
- directory "/var/named"; // "Working" directory
- dump-file "data/cache_dump.db";
- statistics-file "data/named_stats.txt";
- memstatistics-file "data/named_mem_stats.txt";
- listen-on port 53 { any; };
- allow-query { any; };
- allow-query-cache { any; };
- recursion yes;
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "abc.com" IN {
- type master;
- masters { 172.16.0.254; };
- file "abc.com.zone";
- };
- zone "16.172.in-addr.arpa" IN {
- type master;
- masters { 172.16.0.254; };
- file "172.16.zone";
- };
3. 同步数据文件
从服务器进行同步操作前,需要创建一个BIND软件可以进行读取操作的目录,以便将主服务器的数据文件保存至该目录。
当从服务器的主配置文件修改完成后,通过启动服务,BIND会自动根据主配置文件中的masters语句寻找服务器,并将主服务器的数据文件下载至从服务器本地。完成第一次的数据同步后,从服务器会根据同步过来的数据文件中的SOA记录选项,决定下次同步数据的时间,案例中主域名服务器的SOA记录括号中有五条选项。
第一个选项10是序列号,从服务器会根据这个序列号来决定是否进行同步操作,如果服务器端数据文件的序列号大于从服务器的序列号,从服务器才会与主服务器同步数据,该序列号建议使用时间格式,如20121212001表示2012年12月12日的第一次修改(序列号只要是数字即可,BIND不强制要求具体数字格式)。
第二个选项1D,代表从服务器多久与主服务器进行序列号的对比(仅在主服务器序列号大于从服务器的序列号时,才进行数据同步),D代表Day,这里为1天。
第三个选项1H,代表如果从服务器请求连接主服务器时,由于网络延迟,主服务器故障等原因,暂时无法连接到主服务器,那么从服务器会每个一个小时再试一次。
第四个选项1W,代表如果从服务器尝试一周后还是没能连接到主服务器,则不再进行连接。
第五个选项3H,代表的是缓存的时间为3小时。
注意:在CentOS 6.3系统中从服务器同步数据文件时需要修改SELinux设置,否则将无权限进行同步操作。 |
[root@centos6 ~]# setsebool -P named_write_master_zones=1
[root@centos6 ~]# mkdir -p /var/named/chroot/var/named/slaves/
[root@centos6 ~]# chown root.named /var/named/chroot/var/named/slaves/
[root@centos6 ~]# chmod 775 /var/named/chroot/var/named/slaves/
[root@centos6 ~]# service named start
[root@centos6 ~]# chkconfig named on