二. 使用bind搭建DNS服务器

1. 安装bind
yum install -y bind
cp /etc/named.conf /etc/named.conf.bak  
>/etc/named.conf
vim /etc/named.conf 
加入如下配置:

  1. options {

  2.     directory "/var/named";

  3. };


  4. zone "." IN  {

  5.     type hint;

  6.     file "named.ca";

  7. };


  8. zone "localhost" IN {

  9.     type master;

  10.     file "localhost.zone";

  11. };


  12. zone "0.0.127.in-addr.arpa" IN {

  13.     type master;

  14.     file "named.local";

  15. };

复制代码

chown named /etc/named.conf
cd /var/named/
dig -t NS . > named.ca
vim localhost.zone //加入


  1. @                   IN      SOA     localhost.  admin.localhost.     (

  2.                                                                         2013081601

  3.                                                                         1H

  4.                                                                         10M

  5.                                                                         7D

  6.                                                                         1D

  7.                                                                            )

  8. @                   IN          NS          localhost.

  9. localhost.          IN          A           127.0.0.1

复制代码

vim named.local //加入


  1. $TTL 86400

  2. @                    IN      SOA     localhost.  admin.localhost.      (

  3.                                                                         2013081601

  4.                                                                         1H

  5.                                                                         10M

  6.                                                                         7D

  7.                                                                         1D

  8.                                                                         )

  9. @                    IN          NS          localhost.

  10. 1                    IN          PTR         localhost

复制代码

检测配置是否有问题: named-checkconf 
检测正解析: named-checkzone "localhost" /var/named/localhost.zone 
检测反解析: named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local
rndc-confgen -r /dev/urandom -a  // 这一步是生成 rndc.key, 如果没有这个key namd 是启动不了的。
chown named:named /etc/rndc.key
/etc/init.d/named start
netstat -lnp  |grep named  // 查看一下named进程是否监听了53端口
首先测试正向解析:dig @127.0.0.1 localhost. 
接着测试反解析:dig @127.0.0.1 -x 127.0.0.1



2. 增加一个域名(zone)

①vim /etc/named.conf //增加


zone "123.com" IN {

        type master;

        file "123.com.zone";

};


②编辑zone文件: vim /var/named/123.com.zone//增加

$TTL 1D

@           IN   SOA   @ admin.123.com.  (


                                  2016042701        ; serial

                                  1H                ; refresh

                                  10M               ; retry

                                  7D                ; expire

                                  1D )              ; minimum

            IN      NS        ns.123.com.

            IN      MX  10  mail.123.com.

mail      IN      A          192.168.2.10

ns        IN      A          192.168.2.11

www    IN      A          11.11.11.12

bbs      IN      CNAME   www


编辑反解析文件:

①vim /etc/named.conf //增加


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

         type master;

         file "2.168.192.zone";

};

 

②vim /var/named/2.168.192.zone //增加


$TTL 1D

@  IN   SOA   @ admin.123.com.  (


                                  2016042701        ; serial

                                  1H                        ; refresh

                                  10M                     ; retry

                                  7D                       ; expire

                                  1D )                     ; minimum

            IN      NS        ns.123.com.

11        IN      PTR       ns.123.com.

10        IN      PTR       mail.123.com.




分别检测两个配置文件是否有问题:
named-checkzone "abc.com" abc.com.zone
named-checkzone "137.168.192.in-addr.arpa" 192.168.zone 
重启named服务,测试 dig @127.0.0.1 www.abc.com 
dig  @127.0.0.1 -x 192.168.137.11



3. 配置DNS转发
我们配置的DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。
配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的确在使用,也就是说这个域名已经被某个DNS服务器解析了。
vim  /etc/named.conf //在options{} 里面增加
forward first;  
forwarders { 8.8.8.8; };
这两行就是用来配置转发的,该DNS服务器不能解析的域名会转发到8.8.8.8这个DNS服务器上去解析。

4. 配置主从
在从服务器上 yum install -y bind
拷贝主上的配置文件到从上,其中有/etc/named.conf, /var/named/localhost.zone, /var/named/named.local  
拷贝过来后,修改一下从的/etc/named.conf 内容参考:

  1. options {

  2.     directory "/var/named";

  3. };


  4. zone "." IN  {

  5.     type hint;

  6.     file "named.ca";

  7. };


  8. zone "localhost" IN {

  9.     type master;

  10.     file "localhost.zone";

  11. };


  12. zone "0.0.127.in-addr.arpa" IN {

  13.     type master;

  14.     file "named.local";

  15. };


  16. zone "abc.com" IN {

  17.     type slave;

  18.     file "slaves/abc.com.zone";

  19.     masters { 192.168.0.11; };

  20. };


  21. zone "137.168.192.in-addr.arpa" IN {

  22.     type slave;

  23.     file "slaves/192.168.zone";

  24.     masters { 192.168.0.11; };

  25. };

复制代码

从上生成rndc.key: rndc-confgen -r /dev/urandom -a 
chown named:named /etc/rndc.key
从上启动named: /etc/init.d/named start 
启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有192.168.zone, abc.com.zone这两个文件,内容是和主上的一样的
在从上测试: dig @127.0.0.1  www.abc.com 

5. 测试主从同步
在主dns上更改文件 /var/named/abc.com.zone // 在最后增加一行:
123              IN      A       1.1.1.1
另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变,数字只能是变大,不能减小,2013081601 -> 2013081602
重启主namd服务: /etc/init.d/named restart
经测试我们发现一个问题,就是从经常会同步特别慢,这是很要命的。所以需要我们做一个特殊操作,在主上的/etc/named.conf中,abc.com的zone中增加两行:
notify yes;

also-notify { 192.168.0.12; };