实现辅助dns(主dns总有可能会因为故障而停止服务,那么这时我们就用辅助dns来接替它的工作,实现dns的备份,从而保证用户正常的使用)

(为了便于了解,我们在两种平台上分别实现)

一、 linux环境做主dnswindows做辅助dns
(1)首先 搭配好linuxdns环境,这里我们再linux下主dns服务器配置时已经说过
不过为了实验的能快速看到效果,我们得对区域的数据库文件做如下改动
Vim /var/named/chroot/var/named/abc.com.db 
 

(2) linux服务器上开启日志监听,便于我们从日志中看到辅助dns跟主dns间的传输状态:
tail -f /var/log/message    动态监控日志
(3) 配置辅助dns,这里我们使用windows2003
首先,在辅助dns上安装dns服务
我们在主dns配置的是正向查找区域,那么在这里上,配置的也必须是正向查找区域
 
 

 

此时我们从主dns端日志中可以查看到,传输的信息
注:当我们的辅助dns从主dns上第一次更新(完全传输)后,以后每次我们再更改主dns的区域数据库文件内容后(abc.com.db)一定要将数据文件中的数据库库序列号升级了,否则,辅助dns不会自动的定期更新(增量传输)
 

此时我们在主dns端做一些改动后使用rndc reload重读数据文件后,便会被自动同步到辅助dns
 

以下为深入一些安全性的配置:
(4) 这里我们增加一些安全设置,可以像在 windows上为主dns设置限定的允许的区域复制,或限定到特定的主机上
首先修改/var/named/chroot/etc目录下的named.rfc1912.zones
zone "abc.com" IN {
        allow-transfer { 192.168.20.77; };  (添加允许传输的主机)
        type master;
        file "abc.com.db";
        allow-update { none; };
};
做完之后执行 rndc reload  那么只有ip192.168.20.77的客户端能从主dns上拷取东西了
我们查看dns监听的地址,
[root@localhost etc]# netstat -tulpn |grep named
tcp     0   0 192.168.20.88:53        0.0.0.0:*        LISTEN      32372/named         
tcp     0   0 127.0.0.1:53            0.0.0.0:*        LISTEN      32372/named         
tcp     0   0 127.0.0.1:953           0.0.0.0:*        LISTEN      32372/named         
tcp      0   0 ::1:53                 :::*            LISTEN      32372/named         
tcp      0    0 ::1:953               :::*          LISTEN      32372/named         
我们一般设置的是对所有的地址监听,这样对我们的安全性没什么帮助,现在我们可以设置它只对指定的地址进行监听   
可以修改/var/named/chroot/etc目录下的named.conf
options {
        listen-on port 53 { 192.168.20.88;127.0.0.1; };  
        listen-on-v6 port 53 { ::1; }; 
5)在我们实际应用中,有些配置文件中的多次引用个别地址,那么我们可以使用下面方法,修改/var/named/chroot/etc目录下的named.conf
acl tt { 192.168.20.88; };
options {
        listen-on port 53 { tt;127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
(6) 在网络中,我们将域名解析交给指定的dns,如果该dns没有相关记录,那么就会去实现递归查询,然后把查到的结果返回给客户端,递归查询是很麻烦的,所以我们可以限定主机或者ip地址范围可以执行递归查询,具体方法如下:
可以修改/var/named/chroot/etc目录下的named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        // Those options should be used carefully because they disable port
        // randomization
        // query-source    port 53;     
        // query-source-v6 port 53;
          allow-recursion {192.168.20.20;};  (实现递归查询的限制,可以为网段或主机)
        allow-query     { any; };
        allow-query-cache { localhost; };
};
二、 我们是用windows2003环境做主dns,用linux环境做辅助dns
(1) 首先我们使用windows2003利用以前我们说过的方法搭配好主dns环境
 

 

(2) 下面我们在 linux环境下实现辅助dns
首先我们看一下产生数据库文件的目录的权限
[root@localhost named]# pwd
/var/named/chroot/var/named
[root@localhost named]# ll -d .
drwxr-x--- 4 root named 4096 Sep  1 00:08 .  (其所属组为root
[root@localhost named]# ll slaves
drwxrwx--- 2 named named 4096 Jul 27  2004 slaves
再查看进程中运行named的用户身份:
[root@localhost named]# ps -aux |grep named
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
named  32372  0.0  0.6  39036  3580 ?  Ssl  Aug31   0:00 /usr/sbin/named -u named -t /var/named/chroot
发现竟然是named用户,如果我们将该主机做为辅助dns,那么它的type=slave而不是master,且在当前组没有写权限,故没有管理员的权限了,创建数据库时就是以named用户在/var/named/chroot/var/named
目录下创建,那么有因为该目录的说有者是root,故在该目录下是不能创建辅助dns的数据库文件的。但是我们发现slaves目录的所属组跟所有者是named的,故可以在该目录下创建辅助dns的数据库文件
做法:编译/var/named/chroot/etc/named.rfc1912.zones  添加区域
zone "b.com" IN {                    添加一个名为“b.com”的区域
        type slave;                   设置区域类型为辅助类型  
        masters { 192.168.20.77; };     dns的地址
        file "slaves/b.com.db";         生成的数据库文件的位置
  };
3)此时使用rndc reload  重新读取该数据库的数据文件,并查看/var/named/chroot/var/named目录下的slaves目录内的内容,发现生成了一个b.com.db的数据文件
[root@localhost named]# ll slaves/
total 4
-rw-r--r-- 1 named named 366 Sep  1 00:52 b.com.db
打开看看,发现记录跟主dns的一样
[root@localhost named]# cat slaves/b.com.db 
$ORIGIN .
$TTL 3600 ; 1 hour
b.com IN SOA ns.b.com. testlt.126.com. (
9          ; serial
900        ; refresh (15 minutes)
600        ; retry (10 minutes)
86400      ; expire (1 day)
3600       ; minimum (1 hour)
)
NS ns.b.com.
MX 10 mail.b.com.
$ORIGIN b.com.
mail A 3.3.3.3
ns A 192.168.20.77
pop3 CNAME mail
www A 1.1.1.1
然后再主dns上添加一条记录,发现slaves目录下有、又多了一个数据文件
[root@localhost named]# ll slaves/
total 8
-rw-r--r-- 1 named named 366 Sep  1 00:52 b.com.db
-rw-r--r-- 1 named named 696 Sep  1 00:58 b.com.db.jnl