前言

    DNS服务作为网络的一种基础架构,在网络中有举足轻重的地位。其担负着整个网络的计算机名称解析工作。没有正确的名称解析,服务器将无法识别客户端。


第一部分——NDS基础

第一,什么是DNS,以及DNS服务器的组成

    DNS:(DomainName Service)域名服务,是一种组织成层次结构的计算机和网络服务命名系统,用于实现名称解析(Hostname<--->IP).其中通过计算机名解析成IP地址的叫做正向解析,通过IP地址解析成计算机名的叫做反向解析。DNS服务监听在主机的TCP/UDP的53号端口。

注意www.magedu.com是一个主机名,magedu.com才是一个域名。

 

一个典型的DNS服务器包括如下4个部分

    第一,DNS域名称空间:它指定用于组织名称的域的层次结构

    第二,资源记录RR(Resource Record):将DNS域名映射到特定类型的资源信息,以供在名称空间中注册或解析名称时使用。在Linux系统中,通常"名称解析库(位于/var/named/)"中的每一行称作一个资源记录。

    第三,DNS服务器:用于存储和应答资源记录的名称查询

    第四,DNS客户端(解析程序):查询从服务器来的搜索及将名称解析为查询中指定的资源记录类型


DNS服务器分为如下四种

    第一。主DNS服务器(master):数据库更新由管理员手动完成

    第二。辅助DNS服务器(slave):数据库更新从主服务器或其他辅助DNS服务器那里完成

    第三。转发DNS服务器(forward):转发服务器接受查询请求,把查询发送到其他DNS服务器,查询结果保存到缓存中。如没有指定转发服务器,DNS服务器会使用根区域记录,向根发送查询

    第四。缓存DNS服务器:不包含域名数据库文件,它每次将从域名服务器得到的查询结果返回给客户端,并在本地留以缓存,以供下次查询使用


第二,DNS名称空间

    DNS域名空间为层出化结构,此层次化结构有利于计算机将复杂问题简单化。整个DNS域名空间呈倒立的树状结构分布,被称为“域树”。

    根域:最上面是根域名 dot,全球13台根域服务器。

     顶级域:由两三个字母组成的名称,用于知识国家(地区)或使用名称的单位的类型。

        组织域:.net  .com .org  .mil  .edu  .gov .cc。

        国家域:.jp  .tw  .hk.iq  .ir .cn .uk .us

    二级域:在Internet上使用而注册到个人或单位的长度可变的名称。这些名称始终基于相应的顶级域,这取决于单位的类型或使用名称所在的地理位置。例如:sina.com.就是一个2级域。

    子域:单位可创建的其他名称,这些名称从已注册的二级域名中派生。例如:sport.sina.com.

    重点理解子域授权

[名词解释]

    FQDN:Fully Qualified Domain Name,完全限定域名,就是从根开始,一层一层的往下找,最终能唯一确定主机的完全路径,FQDN能保证网络中的主机不会重名。

    主机名:不包含上层查找路径,www.magedu.com是一个主机名


第三,DNS的工作原理

<1> DNS服务器的名称查询原理

    查询方法有两种:递归查询,迭代查询。

    递归查询:客户端要求直接得到结果,要么成功,要么失败(本地客户端和DNS服务直接交互,被请求的DNS服务器必须给出最终答案。)

    迭代查询:服务器以相关参考性应答返回本地DNS(DNS服务与DNS服务交互,得到的是参考答案)

    注意:本地客户端向本地域名服务器查询请求时,查询类型为:一次递归,多次迭代。

    一般情况下,DNS服务器之间的查询方式都是迭代查询。如果要查询www.lifehacker.com(lifehacker.com域不是本地DNS负责的区域),那么本地DNS就需要向外迭代查询(迭代查询从根域开始,因此,本地DNS就必须知道根域的IP地址)。根提示的功能可以让本地DNS服务器查询根域DNS服务器

    在Linux系统中,安装好了bind服务,会自动创建全球13台根服务器的解析库文件,保存在/var/named/named.ca中;~]#cat /var/named/named.ca


<2>反向查询原理: 

    客户端一般执行正向查询,用存储在地址(A)资源记录中的另一台计算机的DNS名称来搜索IP地址等信息。同时,DNS也提供反向查询过程,允许客户端在名称查询期间使用已知的IP地址查询计算机名。

    DNS在最初设计上并不支持反向查询。因为支持反向查询过程可能存在一个问题,即DNS名称空间如何组织和索引名称,IP地址如何分配,这些方面都有差别。为了解决这个问题,在DNS标准中采用了一种叫做“线索追踪的机制”,即定义了特殊域“in-addr.arpa”,并保留在Internet DNS名称空间中。为了创建名称空间,in-addr.arpa域中的子域是按照带句点十进制编号的IP地址的相反顺序构造,且采用与正向解析完全不同的解析库。因此,创建in-addr.arpa域树的时候,IP地址八位字节的书讯必须倒置,并且定义一种新的资源记录类型“PTR”。


<3>区域传送原理



第四,DNS的名称解析库及资源记录:

    名称解析:以主机名为搜索码,在DNS解析数据库中查找对应的IP地址的过程。在本地通过hosts文件来解析; Linux中:/etc/hosts ;windows系统中:%windir%\system32\drivers\etc\hosts

    DNS解析类型:正向解析:FQDN-->IP;反向解析: IP --> FQDN

    

    DNS名称解析库:通常为一个保存在/var/named/目录下的文本文件,每一行称作一个资源记录。 每一个名称解析库称作“区域(zone)”

注意: 区域zone是一个物理概念,一个区域就是一个DNS解析库。域是一个逻辑概念,一个域对应一个DNS域名称空间。正向解析与反向解析采用的是不同的解析库,一个配置了正向解析库和反向解析库的DNS意味着其包含了两个区域(正向zone和反向zone)

    

资源记录

分类:FQDN-->IPv4: A (Address);
           FQDN-->IPv6: AAAA
           Domain-->DNS Server:NS (Name Server)
           Domain-->Master DNS: SOA (Start OfAuthority), 起始授权记录(用于明确说明一个域内的主DNS服务器是哪个,必须是名称解析库中的第一条记录)
           FQDN-->FQDN: CNAME (Canonical Name)别名 
           IP-->FQDN: PTR (pointer)  
           Domain-->Mail Server: MX (Mail eXchanger), 有优先级:0-99,数字越小级别越高
注意:1.SOA记录定义了谁是一个域内的主DNS。主辅DNS服务器之间如何同步(即如何进行区域传送)的。
        2.正向解析不能有PTR记录; 反向解析不能有A记录,也不需要MX记录


资源记录的格式:

name   [ttl]    class  type  value
说明:name字段表示该记录所描述的实体(通常是主机或者一个域)。如果几个连续的记录涉及同一个实体的话,那么第一条之后可以省略,利用@来代替这个name字段。
    TTL(time to live (存活时间)),默认字段以秒为单位指定时间长度,在指定的时间内,数据项可被缓存并且仍被认为是有效的。TTL必须位于该区域数据文件的第一行,默认可省。
    class指定网络类型:默认类型为IN,IN(指Internet)、HS(Hesiod:本地使用的目录服务)、CH(供域名服务器内部用来标示自己)
    type:资源记录类型
    value:  资源记录的值


SOA记录格式:

 mageedu.com 600 IN SOA dns.magedu.com. admin.magedu.com. (
                    20150916001
                    2H
                    20M
                    7D
                    5H)


NS记录格式:

 magedu.com      600 IN  NS      dns.magedu.com.


A记录格式:

dns.magedu.com. 600     IN A 192.168.0.105


别名记录(CNAME)格式:

 ftp.magedu.com. 600     IN      CNAME   www


邮件记录格式:

 magedu.com      600     IN      MX      20      mailserver1.magedu.com.


PTR记录格式:

105.0.168.192.in-addr.arpa     600    IN PTR     dns.magedu.com.


SOA记录写法比较特别,有两种写法,写法一:

SOA:
                zone [TTL] IN  FQDN  admin_mailbox  (
                2013081201 ;序列号, serial number,每次更改配置值是都要在原来的基础上加上1,表示有更新
                2h ;刷新时间, refresh time, 通知(notify): 只通知给本区域解析库文件中定义NS记录的所有主机;
                5m ;重试时间, retry time
                7d ;过期时间, expire time
                1d ;否定答案的ttl
                )


写法二

SOA:
            @ [TTL] IN  FQDN  admin_mailbox  (
            2013081201   ;序列号, serial number
            2h ;刷新时间, refresh time, 通知(notify): 只通知给本区域解析库文件中定义NS记录的所有主机;
            5m ;重试时间, retry time
            7d ;过期时间, expire time
            1d ;否定答案的ttl
            )


第五,DNS服务器类型:

    缓存服务器:不负责解析,仅为加速,不需要注册

    主DNS服务器:负责解析本地客户端请求

    辅助DNS服务器:辅助服务器的区域数据都是从主服务器复制而来,其数据都是只读的

第二部分——bind安装和配置

第一,bind详细介绍

    进程:named    协议:dns    使用端口:53(tcp,udp)    程序文件:/usr/sbin/named

    相关包:

    1.bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性

    2.bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)

    3.bind-libs:bind服务器端和客户端都使用到的公共库文件

    4.bind-utils : bind客户端工具


bind配置文件:

[root@localhost etc]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf    #主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones    #区域配置文件(用include指令包含在主配置文件中)
/etc/named.root.key    #根区域的key文件以实现事务签名;
/etc/rndc.conf    #rndc(远程名称服务器控制器)配置文件;
/etc/rndc.key     #rndc加密密钥
/etc/sysconfig/named
/var/named/named.ca    #13个根服务器存放文件/var/named/named.empty
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback

主配置文件:named.conf,每个语句都要使用分号结尾;其功能如下:定义区域;定义各区域的全局配置;定义视图;定义日志


bind客户端工具:

/usr/bin/dig        #最常用的DNS服务器测试工具
/usr/bin/host      #一款轻量级DNS测试工具
/usr/bin/nslookup    #DNS查询工具,在众多平台上都有实现(windows上也有)
/usr/bin/nsupdate    #更新工具


dig命令:

语法:dig -t 资源记录类型  名称 @server-ip

若不加"@server-ip":则根据/etc/resolv.conf文件中的配置解析文件来查询

[root@localhost etc]# dig -t NS www.baidu.com
        ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t NS www.baidu.com
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58677
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
        ;; QUESTION SECTION:
        ;www.baidu.com.            IN    NS
        ;; ANSWER SECTION:
        www.baidu.com.        138    IN    CNAME    www.a.shifen.com.
        ;; AUTHORITY SECTION:
        a.shifen.com.        500    IN    SOA    ns1.a.shifen.com. baidu_dns_master.baidu.com. 1509110003 5 5 86400 3600
        ;; Query time: 16 msec
        ;; SERVER: 124.207.160.106#53(124.207.160.106)   #通过此处的DNS服务器解析;
        ;; WHEN: Mon Sep 14 06:41:52 2015
        ;; MSG SIZE  rcvd: 115

说明:

    (1)加"@server-ip":根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。

    (2)注意标志位:

        ;; flags: qr rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 1, ADDITIONAL: 0

        如果flags后出现aa标志,则说明这是一条权威应答

        Note:dig命令不会查缓存,而是直接查服务器;

[root@localhost etc]# dig -t A www.baidu.com @114.114.114.114
        ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.baidu.com @114.114.114.114
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5861
        ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5
        ;; QUESTION SECTION:
        ;www.baidu.com.            IN    A
        ;; ANSWER SECTION:
        www.baidu.com.        600    IN    CNAME    www.a.shifen.com.
        www.a.shifen.com.    600    IN    A    119.75.218.70
        www.a.shifen.com.    600    IN    A    119.75.217.109
        ;; AUTHORITY SECTION:
        a.shifen.com.        681    IN    NS    ns1.a.shifen.com.
        a.shifen.com.        681    IN    NS    ns4.a.shifen.com.
        a.shifen.com.        681    IN    NS    ns5.a.shifen.com.
        a.shifen.com.        681    IN    NS    ns2.a.shifen.com.
        a.shifen.com.        681    IN    NS    ns3.a.shifen.com.
        ;; ADDITIONAL SECTION:
        ns1.a.shifen.com.    553    IN    A    61.135.165.224
        ns2.a.shifen.com.    365    IN    A    180.149.133.241
        ns3.a.shifen.com.    439    IN    A    61.135.162.215
        ns4.a.shifen.com.    213    IN    A    115.239.210.176
        ns5.a.shifen.com.    213    IN    A    119.75.222.17
        ;; Query time: 4 msec
        ;; SERVER: 114.114.114.114#53(114.114.114.114)  #使用的是该地址查询;
        ;; WHEN: Mon Sep 14 06:50:11 2015
        ;; MSG SIZE  rcvd: 260


dig 常用选项:
    dig -x IP @server-ip:查询方向解析;
    dig -t axfr zone :验证完全区域传送;
    dig -t 资源记录类型 名称 +trace:追踪解析过程

[root@localhost etc]# dig -t A www.baidu.com +trace
            ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.baidu.com +trace
            ;; global options: +cmd
            #首先找根
            .            248296    IN    NS    c.root-servers.net.
            .            248296    IN    NS    l.root-servers.net.
            .            248296    IN    NS    g.root-servers.net.
            .            248296    IN    NS    k.root-servers.net.
            .            248296    IN    NS    i.root-servers.net.
            .            248296    IN    NS    h.root-servers.net.
            .            248296    IN    NS    d.root-servers.net.
            .            248296    IN    NS    j.root-servers.net.
            .            248296    IN    NS    b.root-servers.net.
            .            248296    IN    NS    a.root-servers.net.
            .            248296    IN    NS    f.root-servers.net.
            .            248296    IN    NS    m.root-servers.net.
            .            248296    IN    NS    e.root-servers.net.
            ;; Received 496 bytes from 124.207.160.106#53(124.207.160.106) in 1320 ms
            #然后找.com
            com.            172800    IN    NS    k.gtld-servers.net.
            com.            172800    IN    NS    m.gtld-servers.net.
            com.            172800    IN    NS    c.gtld-servers.net.
            com.            172800    IN    NS    a.gtld-servers.net.
            com.            172800    IN    NS    f.gtld-servers.net.
            com.            172800    IN    NS    g.gtld-servers.net.
            com.            172800    IN    NS    j.gtld-servers.net.
            com.            172800    IN    NS    d.gtld-servers.net.
            com.            172800    IN    NS    l.gtld-servers.net.
            com.            172800    IN    NS    h.gtld-servers.net.
            com.            172800    IN    NS    i.gtld-servers.net.
            com.            172800    IN    NS    e.gtld-servers.net.
            com.            172800    IN    NS    b.gtld-servers.net.
            ;; Received 503 bytes from 192.5.5.241#53(192.5.5.241) in 103 ms
            #然后找baidu.com
            baidu.com.        172800    IN    NS    dns.baidu.com.
            baidu.com.        172800    IN    NS    ns2.baidu.com.
            baidu.com.        172800    IN    NS    ns3.baidu.com.
            baidu.com.        172800    IN    NS    ns4.baidu.com.
            baidu.com.        172800    IN    NS    ns7.baidu.com.
            ;; Received 201 bytes from 192.41.162.30#53(192.41.162.30) in 266 ms
            #最后找到最终结果;
            www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
            a.shifen.com.        1200    IN    NS    ns5.a.shifen.com.
            a.shifen.com.        1200    IN    NS    ns4.a.shifen.com.
            a.shifen.com.        1200    IN    NS    ns2.a.shifen.com.
            a.shifen.com.        1200    IN    NS    ns1.a.shifen.com.
            a.shifen.com.        1200    IN    NS    ns3.a.shifen.com.
            ;; Received 228 bytes from 61.135.165.235#53(61.135.165.235) in 12 ms


host命令:
    语法:host -t 资源记录类型  名称

[root@localhost etc]# host -t A www.baidu.com
        www.baidu.com is an alias for www.a.shifen.com.
        www.a.shifen.com has address 119.75.217.109
        www.a.shifen.com has address 119.75.218.70


第二,DNS(bind)服务器配置

实验环境

VMware station 10
BIND服务器:两台CentOS 6.4虚拟机做主辅DNS
一台windows 7做客户端
Domain Name:test.com.                192.168.1.0/24
主DNS:LinuxMaster.test.com.       192.168.1.58
辅助DNS:LinuxSlave.test.com.       192.168.1.59
Win2008Slave.test.com.   192.168.80.3  (在windows 2008 R2上实现 )
web主机:www.test.com.    192.168.1.58    192.168.1.59   192.168.80.3
ftp主机:ftp.test.com.   CNAME  www.test.com.
mx邮件服务器:mx.test.com.  192.168.1.58


配置正向解析

第一步:通过yum安装bind

]# yum install -y bind

第二步:修改主配置文件(/etc/named.conf)   注释:自己创建也可以

[root@localhost etc]# cat /etc/named.conf
// C/C++风格的语法,注释用//或/* */
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
    listen-on port 53 { 127.0.0.1; };        //指明监听端口;
    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";
    allow-query     { localhost; };        //允许那些主机查询;
    recursion yes;                        //是否允许递归查询;
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
};
logging {                                //定义日志;
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {                //定义根区域文件名称
    type hint;                //类型 为根
    file "named.ca";        //使用的是相对路径,默认存放在/var/named/named.ca
};
//把另外两个文件也包含进来,作为主配置文件的一部分;
include "/etc/named.rfc1912.zones";            //该文件 定义区域配置文件;
include "/etc/named.root.key";          //该文件,根区域的key文件,与实务签名相关;
注释掉上述文件中的以下三行:
    //    listen-on port 53 { 127.0.0.1; };        指明监听端口;
    //    listen-on-v6 port 53 { ::1; };            IPv6   
    allow-query     { localhost; };        允许那些主机查询;


启动named服务

[root@localhost etc]# /etc/rc.d/init.d/named start
    Generating /etc/rndc.key:                                  [  OK  ]
    Starting named:                                            [  OK  ]


验证named服务是否已经启动

[root@localhost etc]# ss -taunl | grep "53"
    udp    UNCONN     0      0          172.16.21.100:53                    *:*     
    udp    UNCONN     0      0          192.168.0.105:53                    *:*     
    udp    UNCONN     0      0              127.0.0.1:53                    *:*     
    tcp    LISTEN     0      3          172.16.21.100:53                    *:*     
    tcp    LISTEN     0      3          192.168.0.105:53                    *:*     
    tcp    LISTEN     0      3              127.0.0.1:53                    *:*     
    tcp    LISTEN     0      128                  ::1:953                  :::*     
    tcp    LISTEN     0      128            127.0.0.1:953                   *:*


将named服务设为开机启动

[root@localhost etc]# chkconfig --list named
    named              0:off    1:off    2:off    3:off    4:off    5:off    6:off
    [root@localhost etc]# chkconfig named on
    [root@localhost etc]# chkconfig --list named
    named              0:off    1:off    2:on    3:on    4:on    5:on    6:off

到此,一台DNS缓存服务器就配置好了


编辑区域配置文件/etc/named.rfc1912.zones

格式:

zone "区域名称"IN { 
        type master|slave|forward;  //注意每个语句要以分号结尾 
        file"ZONE_NAME.zone";     
    };  //注意要以分号结尾

例子:

zone "company.com" IN {
            type master;
            file"company.com.zone";
    };



第三步:创建区域数据文件(/var/named/***.zone)

在/var/named/下建立"ZONE_NAME.zone"文件,通常只包含宏定义和资源记录,且第一个记录必须是SOA记录,格式如下:

$TTL 600; 
        name  [TTL]  IN RR_Type  value

(1)一个FQDN可对应同多个IP;(负载均衡) 
(2)多个FQDN可对应一个IP:(一台主机有多个名称,且可以用CNAME定义)

$TTL 600;
    @ IN    SOA     LinuxMaster.company.com. admin.company.com.(
                                            20150916001
                                            1H
                                            5M
                                            7D
                                            3D )
            IN      NS      LinuxMaster
            IN      MX      20 MX
    LinuxMaster     IN      A 192.168.0.105
    www     IN      A       192.168.0.105
    www     IN      A       172.16.21.100
    www     IN      A       192.168.0.110
    mx      IN      A       192.168.0.110
    ftp     IN      CNAME   www


第四步:使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误

[root@localhost named]# named-checkconf 
    [root@localhost named]# named-checkzone "company.com" /var/named/company.com.zone 
    zone company.com/IN: loaded serial 2971046817
    OK


第五步:确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named

(1)检查主配置文件的权限

[root@localhost named]# ls -l /etc/named*
    -rw-r----- 1 root named 1014 Sep 14 07:26 /etc/named.conf #权限为640,属主root,数组named;
    -rw-r----- 1 root named 1014 Sep 12 12:12 /etc/named.conf.rpmsave
    -rw-r--r-- 1 root named 2389 Oct 15  2014 /etc/named.iscdlv.key
    -rw-r----- 1 root named  999 Sep 14 07:42 /etc/named.rfc1912.zones #权限为640,属主root,数组named;
    -rw-r--r-- 1 root named  487 Jul 19  2010 /etc/named.root.key

(2)检查区域解析库文件/var/named/company.com.zone的权限

[root@localhost named]# ls -l /var/named/company.com.zone 
-rw-r--r-- 1 root root 288 Sep 14 07:55 /var/named/company.com.zone

更改权限

[root@localhost named]# chown root:named /var/named/company.com.zone 
[root@localhost named]# chmod 640 /var/named/company.com.zone 
[root@localhost named]# ll /var/named/company.com.zone 
-rw-r----- 1 root named 288 Sep 14 07:55 /var/named/company.com.zone


第六步:重启服务或重新加载配置文件:

[root@localhost named]# /etc/rc.d/init.d/named restart
    Stopping named:                                            [  OK  ]
    Starting named:                                            [  OK  ]


第七步:检查iptables和selinux的配置(要关闭)

[root@localhost named]# service iptables stop
[root@localhost named]# setenforce 0
  setenforce: SELinux is disabled
[root@localhost named]# getenforce 
  Disabled


第八步:分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录

使用dig命令在Linux主机上进行DNS资源查询

[root@localhost ~]# hostname
 LinuxSlave.company.com    #在辅助Linux主机上查询
[root@localhost ~]# dig -t SOA company.com @192.168.0.105    #通过主Linux主机查询
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t SOA company.com @192.168.0.105
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37165
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
    ;; QUESTION SECTION:                #请求部分;
    ;company.com.            IN    SOA
    ;; ANSWER SECTION:                   #应答部分;
    company.com.        600    IN    SOA    LinuxMaster.company.com. admin.company.com. 2971046817 3600 300 604800 259200
    **********************************************************
    ;; AUTHORITY SECTION:
    company.com.        600    IN    NS    LinuxMaster.company.com.
    ;; ADDITIONAL SECTION:
    LinuxMaster.company.com. 600    IN    A    192.168.0.105
    **********************************************************
    ;; Query time: 4 msec
    ;; SERVER: 192.168.0.105#53(192.168.0.105)
    ;; WHEN: Mon Sep 14 08:16:39 2015
    ;; MSG SIZE  rcvd: 113



配置反向解析

反向区域的区域名称格式: ReverseIP.in-addr.arpa.

例如:假设网络地址为192.168.0.1,那么规则命名为0.168.192.in-addr.arpa

第一步:修改配置文件/etc/named.conf,添加反向解析区域配置文件

zone "168.192.in-addr.arpa" IN {
        type master;
        file"0.168.192.zone"   //反向解析区域文件名;
    };

第二步:创建反向区域解析文件0.168.192.zone

$TTL 600;
    @ IN SOA LinuxMaster.company.com. admin.company.com. (
                                            20150916001
                                            1H
                                            5M
                                            7D
                                            3D )
            IN      NS      LinuxMaster.company.com.
    105     IN      PTR     LinuxMaster.company.com.
    105     IN      PTR     mx.company.com.
    105     IN      PTR     www.company.com.
    110     IN      PTR     www.company.com.
    3       IN      PTR     www.company.com.


第三步:检查语法

[root@localhost named]# named-checkconf 
    [root@localhost named]# named-checkzone "0.168.192.zone" /var/named/0.168.192.zone 
    zone 0.168.192.zone/IN: loaded serial 2971046817
    OK


第四步:设置权限

[root@localhost named]# chmod 640 /var/named/0.168.192.zone 
[root@localhost named]# chown root:named /var/named/0.168.192.zone
[root@localhost named]# ll /var/named/0.168.192.zone
 -rw-r----- 1 root named 528 Sep 14 09:19 /var/named/0.168.192.zone


第五步:重新加载配置文件

[root@localhost named]# service named restart
    Stopping named:                                            [  OK  ]
    Starting named:                                            [  OK  ]


第六步,使用dig命令验证反向解析

[root@localhost named]# dig -x 192.168.0.105 @192.168.0.105
        ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 192.168.0.105 @192.168.0.105
        ;; global options: +cmd
        ;; Got answer:
        ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47804
        ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
        ;; QUESTION SECTION:
        ;105.0.168.192.in-addr.arpa.    IN    PTR
        ;; ANSWER SECTION:
        105.0.168.192.in-addr.arpa. 600    IN    PTR    www.company.com.
        105.0.168.192.in-addr.arpa. 600    IN    PTR    LinuxMaster.company.com.
        105.0.168.192.in-addr.arpa. 600    IN    PTR    mx.company.com.
        ;; AUTHORITY SECTION:
        0.168.192.in-addr.arpa.    600    IN    NS    LinuxMaster.company.com.
        ;; ADDITIONAL SECTION:
        LinuxMaster.company.com. 600    IN    A    192.168.0.105
        ;; Query time: 0 msec
        ;; SERVER: 192.168.0.105#53(192.168.0.105)
        ;; WHEN: Mon Sep 14 09:59:28 2015
        ;; MSG SIZE  rcvd: 146