要想使用DNS服务进行解析,需要安装bind、bind-libs、bind-utils这三个程序包。


bind:

    服务脚本:/etc/rc.d/init.d/named

    主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key

    解析库文件:/var/named/ZONE_NAME.ZONE

        注意:

(1) 一台物理服务器可同时为多个区域提供解析;

(2) 必须要有根区域文件;named.ca

(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库;


    

    主配置文件:

全局配置:options{}

日志子系统配置:logging{}

区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;

zone "ZONE_NAME" IN {}


注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;


缓存名称服务器的配置:

    监听外部地址即可;

dnssec: 

    建议测试时关闭dnssec;



定义主DNS服务器:

    

    (1) 在主配置文件中定义区域

zone "ZONE_NAME" IN {

    type {master|slave|hint|forward};  #区域的类型

    file "ZONE_NAME.zone";

};

     例如:  

zone "lcs.com" IN {
        type master; #master:主区域,slave:从服务器,hint:根提示域,forward:转发器
        file "lcs.zone";  #区域解析库文件所在位置,一般在目录/var/named/下

 };

    (2) 定义区域解析库文件

        出现的内容:

宏定义;

资源记录;

    例如:

$TTL 1D
@       IN      SOA     dns1.lcs.com.   lcs.www.lcs.com. (
                         20150914005
                         2H
                         2M
                         2D
                         2D)
@       IN      NS      dns1.lcs.com.
@       IN      NS      dns2.lcs.com.
@       IN      MX      2       mail.lcs.com.
dns1    IN      A       172.16.125.125
mail    IN      A       172.16.125.125  
dns2    IN      A       172.16.125.126
www     IN      A       172.16.125.120
web1    IN      A       172.16.125.125 
web2    IN      A       172.16.125.125
web     IN      CNAME   www

 

    在上面定义完成之后,使用dig命令进行测试:

[root@localhost ~]# dig -t a web.lcs.com @172.16.125.125   #查看web.lcs.com的A记录
[root@localhost ~]# dig -t ns lcs.com @172.16.125.125    #查看lcs.com的NS记录

    

定义反向解析区域:

    区域名称:网络地址反写.in-addr.arpa.

    172.16.100. --> 100.16.172.in-addr.arpa.


    (1) 定义区域

        zone "ZONE_NAME" IN {

        type {master|slave|forward};

        file "网络地址.zone"

        };

    例如:

zone "125.16.172.in-addr.arpa" IN {
         type master;
         file "lcs.172.16.125";    #反向区域解析库文件所在位置,一般在目录/var/named/下
 };

 

    (2) 区域解析库文件

        注意:不需要MX和A,以及AAAA记录;以PTR记录为主;

    例如:

$TTL 1D
@       IN      SOA     dns1.lcs.com.        admin.lcs.com. (
                         20150914001
                         3H
                         15M  
                         1W
                         1D
                         )
         IN      NS      dns1.lcs.com.
         IN      NS      dns2.lcs.com.
 125     IN      PTR     dns1.lcs.com.
 125     IN      PTR     mail.lcs.com.
 126     IN      PTR     dns2.lcs.com.

     使用dig命令进行查看:

[root@localhost ~]# dig -x 172.16.125.125 @dns1.lcs.com #-x是只能用来检测反向解析的

DNS主从服务:   

    应该遵循的规则:

        1、应该为一台独立的名称服务器;

        2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;

        3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;

        4、主服务器得允许从服务器作区域传送;

        5、主从服务器时间应该同步,可通过ntp进行;

        6、bind程序的版本应该保持一致;否则,应该从高,主低;


    定义主服务器区域:

        在主配置文件中:      

zone "lcs.com" IN {
         type master;
         file "lcs.zone";
         allow-transfer{ 172.16.125.126; };  #允许哪一台主机进行解析库文件的传送
 };

    注意:在主服务器上要提供库解析文件。

    定义从服务器区域:

        在定义从服务器区域的时候,只需要的在主配置文件中定义区域,而不需要提供库文件。

        在从服务器的主配置文件中:     

zone "lcs.com" IN {
        type slave;    #类型为slave,即从服务器
        file "slaves/lcs.zone";   #定义传送过来的库解析文件位置,要在slaves下,如果不在此目录下,则要进行目录权限相关属性的修改
        masters { 172.16.125.125; }; #定义主服务器的IP地址

        以上就定义了一个主服务器和一个从服务器,在主服务器上,reload named服务,在从服务器上/var/named/slaves/目录下就能够找到主服务器传送过来的解析库文件了。


rndc命令:

    安装完bind包时,默认安装了rndc该软件,并且服务器会监听在tcp协议的953端口上。

    rndc不允许远程连接,要求客户端和服务器端在同一台主机上。

    使用方式:

        rndc Command

    Command的方式:

        reload: 重载主配置文件和区域解析库文件

        reload zone: 重载区域解析库文件

        retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;

        notify zone: 重新对区域传送发通知;

        reconfig: 重载主配置文件

        querylog: 开启或关闭查询日志;

        trace: 递增debug级别;

        trace LEVEL: 指定使用的级别;