五、DNS与bind

2023-04-19

  5.1、DNS简介

  DNS服务可以为用户提供域名和IP之间的自动转换。通过DNS,用户只需输入机器的域名即可访问相关的服务,而无需使用那些难以记忆的IP地址。DNS帮助用户在互联网上寻找路径,在互联网上的每一个计算机都拥有一个唯一的地址,称作'IP地址'。由于IP地址是一串数字,难以记忆,而DNS允许用户使用一串有意义的字符串'即域名'取代,由域名转换成相应IP地址的这个过程称为域名解析

  DNS域名又称为DNS命名空间,它是以层次树状结构进行管理的,其最顶层是根域。根域在整个DNS命名空间是唯一的,而根域下可以分为多个子域,每个子域又可以分为多个子域。例如,Internet命名空间具有多个顶级域名(top-level domain names,TLD),如org,net,com等。而cn顶级域名又可以有多个子域,如edu、net、org和com等。

  一个完整的域名由顶级域以及各子域的名称所组成,各部分之间用圆点'.'分隔开来。其中最后一个 '.'称为根域,可省略,其左边部分称为顶级域名;第二个点'.'的左边部分称为二级域名(SLD);二级域左边部分称为三级域名;以此类推。例如www.sina.com.cn.中cn是一级域名,com是二级域名,sina是三级域名。全球一共有13个根域,其IP地址分别是:

[root@mylinux ~]# dig
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.3 <<>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11096
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 15
;; QUESTION SECTION:
;.                              IN      NS
;; ANSWER SECTION:
.                       66583   IN      NS      e.root-servers.net.
.                       66583   IN      NS      f.root-servers.net.
.                       66583   IN      NS      b.root-servers.net.
.                       66583   IN      NS      a.root-servers.net.
.                       66583   IN      NS      m.root-servers.net.
.                       66583   IN      NS      i.root-servers.net.
.                       66583   IN      NS      k.root-servers.net.
.                       66583   IN      NS      j.root-servers.net.
.                       66583   IN      NS      d.root-servers.net.
.                       66583   IN      NS      c.root-servers.net.
.                       66583   IN      NS      l.root-servers.net.
.                       66583   IN      NS      g.root-servers.net.
.                       66583   IN      NS      h.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net.     3580244 IN      A       198.41.0.4
b.root-servers.net.     3576238 IN      A       192.228.79.201
c.root-servers.net.     3580290 IN      A       192.33.4.12
d.root-servers.net.     3575852 IN      A       199.7.91.13
e.root-servers.net.     3523146 IN      A       192.203.230.10
f.root-servers.net.     3590994 IN      A       192.5.5.241
g.root-servers.net.     3549348 IN      A       192.112.36.4
h.root-servers.net.     3586059 IN      A       198.97.190.53
i.root-servers.net.     3534085 IN      A       192.36.148.17
j.root-servers.net.     3562264 IN      A       192.58.128.30
k.root-servers.net.     3562350 IN      A       193.0.14.129
l.root-servers.net.     3534062 IN      A       199.7.83.42
m.root-servers.net.     3561115 IN      A       202.12.27.33
a.root-servers.net.     3574439 IN      AAAA    2001:503:ba3e::2:30
b.root-servers.net.     3565057 IN      AAAA    2001:500:84::b
;; Query time: 7 msec
;; SERVER: 10.225.30.181#53(10.225.30.181)
;; WHEN: Tue May 23 20:33:36 2017
;; MSG SIZE  rcvd: 492

  Internet域名空间的顶级域是由ICANN(英特网名称与数字地址分配机构)负责管理,这是一个近年来成立的负责管理Internet域名即地址系统的非营利机构。顶级域分为通用和国家两大类。

通用顶级域名 说明 通用顶级域名 说明
com 商业机构 biz 商业机构
net 网络服务组织 name 个人
org 非营利性组织 pro 专用人士
edu 教育机构 coop 商业合作社
gov 政府机构 aero 航空运输业
mil 军事机构 museum 博物馆行业
int 国际组织 travel 旅游行业
info 信息行业 job 招聘和求职市场

  除美国以外的国家或地区需要使用国家域名,国家域名使用双字母来进行标识。常见国家顶级域名有

国家顶级域名 说明 国家顶级域名 说明
cn 中国 jp 日本
hk 中国香港 uk 英国
tw 中国台湾 kr 韩国
mo 中国澳门 de 德国
sg 新加坡 fr 法国
us 美国 ru 俄罗斯

  5.2、DNS工作原理

  在DNS出现之前,通常是通过计算机上维护一个hosts文件(/etc/hosts)的方式来实现主机名和IP地址之间的解析。管理员在hosts文件中记录所有需要访问的主机的主机名与IP地址,当需要进行解析的时候系统会自动查询hosts文件,并找出匹配的解析关系。采用这种方式,每台主机上都必须维护一个hosts文件。网络中每增加一台计算机就必须手工修改hosts文件,添加新的计算机主机名和IP地址对应的记录。

  随着计算机网络的快速发展,网络中计算机数量随之快速增长,这种依赖hosts文件来实现主机名和IP地址之间解析的方式无法满足网络发展的需求。DNS提供了完整解决方案。

  DNS服务器采用C/S方式进行工作。其具体工作流程为:

1、当需要进行DNS解析时,系统会向本地DNS服务器发出解析请求,由本地DNS服务器进行域名和IP地址的解析工作。

2、本地DNS服务器收到用户请求后,则会将自身的DNS数据库进行查找匹配的域名和IP记录。如果找到则把结果返回给客户端并完成解析工作;如果没有找到则把请求转发给根服务器。

3、根域DNS服务器查到所对应顶级域,将结果返回本地DNS服务器;本地DNS服务器根据顶级域地址向顶级域发起请求,顶级域DNS服务器查到二级域对应地址返回给本地DNS服务器;本地DNS服务器根据二级域地址向二级域DNS服务器发送请求,二级域DNS服务器查到三级域对应地址返回给本地DNS服务器;以此类推,直到本地DNS服务器找到最终要解析的域名所对应的IP地址

4、最终本地DNS服务器把结果返回给客户端

5、如果经过查找后依然无法找到所需要的解析记录,则有本地DNS服务器向客户端返回无法解析的错误信息。

  上面的工作流程为正向解析,即FQDN-->IP,反向解析为IP-->FQND正反向解析是两个不同的名称空间,是两棵不同的解析树;不应该存放同一个数据库。FQDN(Full Qualified Domain Name, 完全限定域名)。

  5.3、DNS服务器的安装

  bind是一款代码的DNS服务器软件,它是由伯克利大学编写,全名(Berkeley Internet Name Domain)伯克利英特网域名,是目前世界上使用最为广泛的DNS服务器软件。

  Centos6.5中自带了bind软件。但是为了使用最新版的bind软件,可以从官方网站http://www.isc.org/上下载该软件软代码进行安装,也可以直接使用yum安装。

[root@mylinux home]# yum install bind -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * epel-debuginfo: mirrors.tuna.tsinghua.edu.cn
 * epel-source: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.hust.edu.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package bind.x86_64 32:9.8.2-0.62.rc1.el6_9.2 will be installed
--> Processing Dependency: portreserve for package: 32:bind-9.8.2-0.62.rc1.el6_9.2.x86_64
--> Running transaction check
---> Package portreserve.x86_64 0:0.0.4-11.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================
 Package            Arch          Version                           Repository      Size
=========================================================================================
Installing:
 bind               x86_64        32:9.8.2-0.62.rc1.el6_9.2         updates        4.0 M
Installing for dependencies:
 portreserve        x86_64        0.0.4-11.el6                      base            23 k

Transaction Summary
=========================================================================================
Install       2 Package(s)

Total download size: 4.0 M
Installed size: 7.3 M
Downloading Packages:
(1/2): bind-9.8.2-0.62.rc1.el6_9.2.x86_64.rpm                     | 4.0 MB     00:42     
(2/2): portreserve-0.0.4-11.el6.x86_64.rpm                        |  23 kB     00:00     
-----------------------------------------------------------------------------------------
Total                                                     87 kB/s | 4.0 MB     00:47     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : portreserve-0.0.4-11.el6.x86_64                                       1/2 
  Installing : 32:bind-9.8.2-0.62.rc1.el6_9.2.x86_64                                 2/2 
  Verifying  : portreserve-0.0.4-11.el6.x86_64                                       1/2 
  Verifying  : 32:bind-9.8.2-0.62.rc1.el6_9.2.x86_64                                 2/2 

Installed:
  bind.x86_64 32:9.8.2-0.62.rc1.el6_9.2                                                  

Dependency Installed:
  portreserve.x86_64 0:0.0.4-11.el6                                                      

Complete!

启动和关闭bind

 安装完成后可以开启bind服务,bind通过named命令进行启动,一般让其后台运行。

[root@mylinux named]# service named start
Generating /etc/rndc.key:[  OK  ]
Starting named: [  OK  ]
[root@mylinux named]# ss -tunlp | grep :53    #查看DNS监听的端口,默认只监听本机
udp    UNCONN     0      0              127.0.0.1:53                    *:*      users:(("named",1538,512))
udp    UNCONN     0      0                    ::1:53                   :::*      users:(("named",1538,513))
tcp    LISTEN     0      3                    ::1:53                   :::*      users:(("named",1538,21))
tcp    LISTEN     0      3              127.0.0.1:53                    *:*      users:(("named",1538,20))

5.4、bind服务器配置

  bind的主要配置文件包括named.conf和相应的区域文件,bind中各种配置的更改都是通过这个文件完成,修改完成后需要重新启动bind服务使配置生效。其主要配置文件有:

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

主配置文件:/etc/named.conf, /etc/named.rfc1912.zones(请求注解文档)

区域解析库文件:/var/named/zone_name.zone(至少包含根、本地、回环这三个区域文件)

    named.ca  named.localhost  named.loopback

  • named.conf配置文件

  named.conf是bind的主要配置文件,里面存储了大量的bind自身的设置信息。bind安装完成后并不会自动创建该配置文件,用户需要通过命令手工生成。 默认显示内容为

[root@mylinux etc]# cat name.conf 
 key "rndc-key" {
        algorithm hmac-md5;
        secret "9WzbeVyRhvPUak0Irw6pLA==";
 };
 
 controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
 };
[root@mylinux etc]#

  named.conf配置文件由配置语句和注释语句组成。每条配置语句以分号';'结尾,多条配置语句组成语句块;注释语句使用两个左斜杠'//'作为注释符。named.conf配置文件所支持的配置语句有:

语句 说明
acl 定义一个主机匹配列表,用于访问控制或其它用途
controls 定义rndc工具与bind服务进程的通信
include 把其他文件中的内容包含进来
key 定义加密秘钥
logging 定义系统日志信息
lwres 把named配置为轻量级解释器
masters 定义主域名列表
options 设置全局选项
statistics-channels 定义bind的统计信息的通信通道
server 定义服务器的属性
trusted-keys 定义信任的DNSSEC密钥
view 定义视图
zone 定义区域

acl语句,用于定义地址匹配列表,其格式为:

acl string { 
    address_match_element; 
    ... 
};

  bind默认定义了一些地址匹配列表

地址匹配列表 说明
any 匹配任何主机
none 不匹配任何主机
localhost 匹配系统上所有网卡的IPv4和IPv6的地址
localnets 匹配任何与系统有接口的主机的IPv4和IPv6的地址

controls语句,用于定义rndc工具与bind服务进程的通信,系统管理员可以通过rndc向bind进行发出命令,并接受由bind返回的结果。其格式为:

controls {
    inet ( ipv4_address | ipv6_address | * )
        [ port ( integer | * ) ]
    allow { address_match_element; ... }
        [ keys { string; ... } ];
    unix unsupported; // not implemented
};

include语句,用于把语句中所制定的文件的内容添加进named.conf配置文件中,该语句格式为:

include filename

key语句,用于定义TSIG或命令通道所使用的加密秘钥,其格式为:

key domain_name {
     algorithm string;
     secret string;
};

option语句,用于设置影响整个DNS服务器的全局选项,该语句在named.conf配置文件中只能出现一次。如果没有设置该语句,bind将使用默认的option值。该语句支持选项非常多,常用选项有:

options {
    directory quoted_string;
    forward ( first | only );
    forwarders [ port integer ] {
                     ( ipv4_address | ipv6_address ) [ port integer ]; ...
                };
    query-source ( ( ipv4_address | * ) | [ address ( ipv4_address | * ) ] ) 
[ port ( integer | * ) ];
    query-source-v6 ( ( ipv6_address | * ) | [ address ( ipv6_address | * ) ]
 ) [ port ( integer | * ) ];
    statistics-interval integer;

  directory选项用于定义服务器的工作目录,在配置文件中所指定的所有相对路径都是相对于该路径来定义的。该目录也是服务器中大部分输出文件(如name.run)的存储位置。系统默认使用'.'(即bind启动的目录)作为工作目录,一般把bind的工作目录设置为/var/named,如

directory  '/var/named';

  forwarders选项用于指定DNS请求的转发到其他的DNS服务器上,该选项默认为空,也就是不进行转发 。选项值可以是一个IP地址或主机名,也可以是多台主机的列表,如

forwarders {192.168.191.2;192.168.191.100;192.168.191.105;}

  forward选项仅在forwarders选项不为空时生效,该选项用于控制DNS服务器的请求转发操作。如果选项为first,则DNS服务器会先把请求转发给forwarders选项中所指定的远端DNS服务器。如果远端DNS服务器无法响应请求,则bind将尝试自行解析该请求;如果选项值为only,则bind至转发请求,并不进行处理。

  query-source和query-source-v6选项分别用于设置DNS服务器所使用的IPv4和IPv6的IP地址和端口号。默认端口号为53,如果指定其他端口,将无法与全局的DNS服务器通信。

  statistics-interval选项用于指定DNS服务器记录统计信息的时间间隔,单位为分钟,默认为60,最大值为40320,如果选项为0,则服务器不记录统计信息。

server语句,bind有可能与其他的DNS服务器进行通信,但是并非所有的DNS服务器都运行同一个版本的bind。server语句可以设置远程服务器的特征信息,以使双方能够正常通信。该语句的格式为:

server ( ipv4_address[/prefixlen] | ipv6_address[/prefixlen] ) {
                bogus boolean;
                edns boolean;
                edns-udp-size integer;
                max-udp-size integer;
                provide-ixfr boolean;
                request-ixfr boolean;
                keys server_key;
                transfers integer;
                transfer-format ( many-answers | one-answer );
                transfer-source ( ipv4_address | * )
                     [ port ( integer | * ) ];
                transfer-source-v6 ( ipv6_address | * )
                     [ port ( integer | * ) ];
                support-ixfr boolean; // obsolete
           };

view语句,该语句可以使bind根据客户端地址来决定需要返回的域名解析结果,也就是说,不同的主机通过同一台DNS服务器对同一个域名解析,会得到不同的解析结果。其格式为:

view string 
    optional_class{
        match-clients { address_match_element; ... };
                match-destinations { address_match_element; ... };
                match-recursive-only boolean;
                key string {
                     algorithm string;
                     secret string;
                };
                zone string optional_class {
                     ...
                };
    }

  每一条view语句定义了一个客户端集合所能看到的视图,如果客户端匹配试图中的match-clients选项所定义的客户端列表,那么bind将根据该视图返回解析结果。例如,希望对内网用户和外网用户进行区分,使他们访问同一个域名时会得到不同的结果。可以使用view语句定义不同的视图,在两个视图中分别定义不同的属性,以达到效果。

view 'internal'{
        match-clients { 172.0.0.0/8; };
        recursion yes;
        zone 'example.com'{
            type master:
            file 'example-internal.zone';
        };
    };
view 'external'{
        match-clients { any; };
        recursion no;
        zone 'example.com'{
            type master:
            file  'example-external.zone';
        };
    };

zone语句,该语句是named.conf文件的核心部分。每一条zone语句定义一个区域,用户可以在区域中设置该区域相关的选项。在bind中可以设置多种类型的区域,如表所示。不同类型的区域,其zone语句的d定义有所不同。

区域类型 说明
master 主DNS区域
slave 从DNS区域,由主DNS区域控制
forward 将解析请求转发给其他服务器
hint 根DNS服务器集
stub 与从区域类似,但只保存DNS服务器的名字
zone 'domain_name' IN{
      type master;
      file 'path';
}; 

zone '.' IN{
      type hint;
      file 'path';
};

  其中,根域的名称为'.',type选项定义区域的类型,根域所对应的类型代码为hint。file选项定义了该区域所使用的区域文件,在该文件中可以定义与该区域文件相关的各种属性。主DNS区域是bind中最基本的区域类型,它又可以分为正向解析区域和反向解析区域两种。如下面定义了一个域名为test.com的正向解析区域,使用区域文件为test.zone。

zone 'test.com' IN {
      type master;
      file 'test.zone';
      allow-update {none;};
};

  反向解析主区域的例子为:

zone '1.168.192.in-addr.arpa' IN {
      type master;
      file 'test.local';
      allow-update {none;};
};

检查该配置文件语法错误的命令有:

Service named-checkconfig          #检查配置错误     
service name-checkzone             #检查区域错误
  • 根区域文件named.ca

  named.ca是一个特殊的区域文件,该文件中记录了Internet上的根DNS服务器的名称和IP地址。DNS服务器接收到客户端发来的解析请求后,如果在本地找不到匹配的DNS记录,则把请求发送到该文件中所定义的根DNS服务器上进行逐级查找。在该文件中总共定义13个根DNS服务器。

[root@mylinux var]# cat named.ca 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t NS . @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1193
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;.                              IN      NS
;; ANSWER SECTION:
.                       518400  IN      NS      e.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      l.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      d.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      m.root-servers.net.
.                       518400  IN      NS      f.root-servers.net.
;; ADDITIONAL SECTION:
e.root-servers.net.     518400  IN      A       192.203.230.10
e.root-servers.net.     518400  IN      AAAA    2001:500:a8::e
h.root-servers.net.     518400  IN      A       198.97.190.53
h.root-servers.net.     518400  IN      AAAA    2001:500:1::53
l.root-servers.net.     518400  IN      A       199.7.83.42
l.root-servers.net.     518400  IN      AAAA    2001:500:9f::42
i.root-servers.net.     518400  IN      A       192.36.148.17
i.root-servers.net.     518400  IN      AAAA    2001:7fe::53
a.root-servers.net.     518400  IN      A       198.41.0.4
a.root-servers.net.     518400  IN      AAAA    2001:503:ba3e::2:30
d.root-servers.net.     518400  IN      A       199.7.91.13
d.root-servers.net.     518400  IN      AAAA    2001:500:2d::d
c.root-servers.net.     518400  IN      A       192.33.4.12
;; Query time: 68 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu May 25 03:26:39 2017
;; MSG SIZE  rcvd: 508

正向解析区域文件

 正向解析区域文件用于映射域名和IP地址,文件中包含该文件区域的所有参数,包括域名,IP地址、刷新时间、重试时间、和超时等。

资源记录(Resource Record, RR)格式:

NAME(类型)   [TTL](缓存时长)   IN  RRT(DNS资源记录类型) VALUE(数据)

1、SOA(Start Of Authority):   起始授权记录,只能有一个

  name: 区域名称, 通常可以简写为@,例如:magedu.com.

  value: 主DNS服务器的FQDN

  注意:SOA必须是区域数据库文件第一条记录

@  600 IN  SOA  ns.magedu.com.  dnsadmin.magedu.com.(
serial number;    序列号,十进制数字,不超过10位,通常使用日期,如2014031001
refresh time  ;   刷新时间,即每隔多久到主服务器检查一次
retry time    ;   重试时间,应该小于refresh time
expire time  ;    过期时间
negative answer ttl  ;否定答案的ttl
)

2、NS(Name Server): ZONE NAME --> FQDN   名称服务器,可以有多个

name: 区域名称,通常可以简写为@

value: DNS服务器的FQDN(可以使用相对名称)

@  600 IN  NS  ns

3、MX(Mail eXchanger): ZONE NAME --> FQDN 邮件交换器

name: 区域名称,用于标识smtp服务器

value: 包含优先级和FQDN,优先级:0-99, 数字越小,级别越高;

@ 600 IN MX   10   mail

4、A(address):FQDN-->IPv4  5、AAAA:FQDN-->IPv6

name: FQDN(可以使用相对名称)

value: IP

www  600 IN  A  192.168.1.2

6、PTR(pointer):IP-->FQDN只能定义在反向区域数据文件中

name: IP, 逆向的主机地址,例如172.16.100.7的name为7.100,

完全格式为7.100.16.172.in-addr.arpa.

value: FQDN

7.100 600  IN  PTR  www.maged.com.

7、CNAME(Canonical NAME): FQDN-->FQDN别名记录

name: FQDN

value: FQDN

ftp IN CNAME  www

一个完整的正向解析区域文件:

$TTL 1D
@  IN  SOA  test.com.  root.test.com.(
    0    
    1D   
    1H
    1W
    3H
)
IN   NS      dns.test.com.
IN   MX  10    mail1.test.com.
IN   MX  10    mail2.test.com.
www    IN A 192.168.1.101
mail1  IN A 192.168.1.102
mail2  IN A 192.168.1.103
dns    IN A 192.168.1.104

反向解析区域文件

  用于定义IP地址到域名的解析,它采用与正向解析文件类似的选项和格式。但由于是进行反向解析,所以该文件是使用PTR指针记录,而不是主机记录。下面是一个反向解析的例子

$TTL 86400
@    IN    SOA    test.com.    root.test.com.(
    20031001
    7200
    3600
    43200
    86400
)
IN    NS    dns.test.com.
101    IN    PTR    www.test.com.
102    IN    PTR    mail1.test.com.
103    IN    PTR    mail2.test.com.
104    IN    PTR    dns.test.com.

DNS服务器类型

主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;

从DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;

     序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;

     刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;

     重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;

     过期时长:从服务器始终联系不到主服务器时,从服务器角度,停止提供服务。

缓存名称服务器:非权威答案。

主从服务器同步的方式:

  域:Domain(逻辑概念)区域:Zone(物理概念)

  区域传送:

    全量区域传送:传送整个解析库。AXFR

    增量区域传送:传递解析库变化的那部分内容。IXFR

rndc命令

  rndc: Remote Name Domain Controller远程管理BIND的工具,默认与bind安装在一起,且只能通过127.0.0.1来连接named进程;提供辅助性的管理功能。监听端口(953/tcp)。

  rndc与bind通过密钥进行连接互信。

    rndc: 持有一半密钥,保存于rndc的配置文件中

    BIND:持有一半密钥,保存于主配置文件中

rndc的配置文件/etc/rndc.conf

在CentOS或RHEL系统中配置文件为: 密钥文件/etc/rndc.key

命令格式:rndc COMMAND   

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

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

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

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

reconfig: 重载主配置文件

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

trace: 递增debug级别;

trace LEVEL: 指定使用的级别

flush: 清空服务器的缓存

flushname name: 清空指定名称相关的缓存

5.5、各种DNS服务器的配置方法

缓存名称服务器

  缓存名称服务器配置十分简单,只需要通过yum安装后,对主配置文件进行一些修改即可。

[root@mylinux named]# vim /etc/named.conf
//
// 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 port 53 { 0.0.0.0; };
        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
//      dnssec-validation yes;
        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
....
[root@mylinux named]# service named restart                    #重启服务
Stopping named: [  OK  ]
Starting named: [  OK  ]
[root@mylinux named]# dig -t A www.baidu.com @192.168.191.128   #测试解析结果

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A www.baidu.com @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55532
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       300     IN      A       111.13.100.91
www.a.shifen.com.       300     IN      A       111.13.100.92

;; AUTHORITY SECTION:
a.shifen.com.           1200    IN      NS      ns4.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns3.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns5.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns2.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns1.a.shifen.com.

;; ADDITIONAL SECTION:
ns5.a.shifen.com.       1200    IN      A       119.75.222.17
ns3.a.shifen.com.       1200    IN      A       61.135.162.215
ns2.a.shifen.com.       1200    IN      A       180.149.133.241
ns4.a.shifen.com.       1200    IN      A       115.239.210.176
ns1.a.shifen.com.       1200    IN      A       61.135.165.224

;; Query time: 1102 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 21:12:03 2017
;; MSG SIZE  rcvd: 260

主DNS服务器

  配置主DNS服务器时,需要在主配置文件中定义区域,以及配置解析数据库文件。

[root@mylinux named]# vim /etc/named.rfc1912.zones 
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "mylinux.com" IN {                                       ;添加的区域mylinux.com
        type master;
        file "mylinux.com.zone";
        allow-update { none; };
};
"/etc/named.rfc1912.zones" 46L, 1022C written                          
[root@mylinux named]# named-checkconf  /etc/named.rfc1912.zones    #检查配置文件是否错误
[root@mylinux named]# vim /var/named/mylinux.com.zone              #解析数据库文件

$TTL 1D
@  IN  SOA  test.com.  root.test.com.(
    0
    1D
    1H
    1W
    3H
)
@       IN      NS  dns
@       IN      MX  10  mail1
@       IN      MX  10  mail2
dns     IN      A   192.168.1.104
www     IN      A   192.168.1.101
mail1   IN      A   192.168.1.102
mail2   IN      A   192.168.1.103

"mylinux.com.zone" 15L, 269C written                                   
[root@mylinux named]# named-checkzone @ /var/named/mylinux.com.zone #检查数据解析是否错误
zone ./IN: loaded serial 0
OK
[root@mylinux named]# service named restart                         #重启服务
Stopping named: [  OK  ]
Starting named: [  OK  ]
[root@mylinux named]# dig -t A www.mylinux.com @192.168.191.128     #测试解析结果

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A www.mylinux.com @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12794
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.mylinux.com.               IN      A

;; ANSWER SECTION:
www.mylinux.com.        86400   IN      A       192.168.1.101

;; AUTHORITY SECTION:
mylinux.com.            86400   IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 1 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 21:39:52 2017
;; MSG SIZE  rcvd: 83

[root@mylinux named]# dig -t A mail1.mylinux.com @192.168.191.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A mail1.mylinux.com @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37024
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;mail1.mylinux.com.             IN      A

;; ANSWER SECTION:
mail1.mylinux.com.      86400   IN      A       192.168.1.102

;; AUTHORITY SECTION:
mylinux.com.            86400   IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 0 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 21:40:37 2017
;; MSG SIZE  rcvd: 85

[root@mylinux named]# dig -t A mail2.mylinux.com @192.168.191.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A mail2.mylinux.com @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41030
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;mail2.mylinux.com.             IN      A

;; ANSWER SECTION:
mail2.mylinux.com.      86400   IN      A       192.168.1.103

;; AUTHORITY SECTION:
mylinux.com.            86400   IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 0 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 21:40:48 2017
;; MSG SIZE  rcvd: 85

[root@mylinux named]#

反向解析

  反向解析区域名称一般以in-addr.arpa结尾,例如172.16.100.-->100.16.172.in-addr.arpa.

[root@mylinux named]# vim /etc/named.
named.conf           named.iscdlv.key     named.root.key       
named.confbak        named.rfc1912.zones  
[root@mylinux named]# vim /etc/named.rfc1912.zones 

        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "mylinux.com" IN {
        type master;
        file "mylinux.com.zone";
        allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {             #定义反向区域
        type master;
        file "100.168.192.arpa";
"/etc/named.rfc1912.zones" 51L, 1127C 
[root@mylinux named]# named-checkconf            #检查配置文件
[root@mylinux named]# vim 100.168.192.arpa       #定义反向区域数据文件
$TTL 1D
@  IN  SOA  mylinux.com.  root.mylinux.com.(
    0
    1D
    1H
    1W
    3H
)
@       IN      NS    dns.mylinux.com.
1       IN      PTR   www.mylinux.com.
3       IN      PTR   mail1.mylinux.com.
4       IN      PTR   mail2.mylinux.com.
2       IN      PTR   dns.mylinux.com.
"100.168.192.arpa" 13L, 259C written                                   
[root@mylinux named]# named-checkzone "100.168.192.in-addr.arpa" 100.168.192.arpa
zone 100.168.192.in-addr.arpa/IN: loaded serial 0   #检查数据区域文件语法错误
OK
[root@mylinux named]# service named reload          #重载服务
Reloading named: [  OK  ]
[root@mylinux named]# dig -x 192.168.100.1 @192.168.191.128   #测试解析结果

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -x 192.168.100.1 @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35918
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.100.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
1.100.168.192.in-addr.arpa. 86400 IN    PTR     www.mylinux.com.

;; AUTHORITY SECTION:
100.168.192.in-addr.arpa. 86400 IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 0 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 22:33:34 2017
;; MSG SIZE  rcvd: 107

[root@mylinux named]# dig -x 192.168.100.2 @192.168.191.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -x 192.168.100.2 @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42216
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;2.100.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
2.100.168.192.in-addr.arpa. 86400 IN    PTR     dns.mylinux.com.

;; AUTHORITY SECTION:
100.168.192.in-addr.arpa. 86400 IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 0 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 22:33:42 2017
;; MSG SIZE  rcvd: 103

[root@mylinux named]# dig -x 192.168.100.3 @192.168.191.128

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -x 192.168.100.3 @192.168.191.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27136
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;3.100.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
3.100.168.192.in-addr.arpa. 86400 IN    PTR     mail1.mylinux.com.

;; AUTHORITY SECTION:
100.168.192.in-addr.arpa. 86400 IN      NS      dns.mylinux.com.

;; ADDITIONAL SECTION:
dns.mylinux.com.        86400   IN      A       192.168.1.104

;; Query time: 0 msec
;; SERVER: 192.168.191.128#53(192.168.191.128)
;; WHEN: Thu May 25 22:33:46 2017
;; MSG SIZE  rcvd: 109

主从DNS服务器的配置

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

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

3、从服务器主需要定义区域,而无需提供解析库文件,库文件放在/var/named/slaves/目录中

4、主服务器需要允许从服务器做区域传送

从服务器的配置

[root@localhost ~]# vim /etc/named.conf 
//
// 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 { 192.168.191.128; 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
//
// 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     { any; };              #允许查询
        recursion yes;
//      dnssec-enable yes;
//      dnssec-validation yes;
        /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
};
logging {
"/etc/named.conf" 43L, 1005C written                                   
[root@localhost ~]# service named restart    #启动服务
Stopping named: [  OK  ]
Starting named: [  OK  ]
[root@localhost ~]# ss -tunlp | grep :53     #查看监听端口
udp    UNCONN     0      0        192.168.191.129:53                    *:*      users:(("named",1432,513))
udp    UNCONN     0      0              127.0.0.1:53                    *:*      users:(("named",1432,512))
udp    UNCONN     0      0                    ::1:53                   :::*      users:(("named",1432,514))
tcp    LISTEN     0      3                    ::1:53                   :::*      users:(("named",1432,22))
tcp    LISTEN     0      3        192.168.191.129:53                    *:*      users:(("named",1432,21))
tcp    LISTEN     0      3              127.0.0.1:53                    *:*      users:(("named",1432,20))
[root@localhost ~]# vim /etc/named.rfc1912.zones    #定义从服务器配置文件

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
};
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "mylinux.com" IN {                    #从服务器域文件
        type slave;
        masters { 192.168.191.128;};
        file "slaves/mylinux.com.zone";
"/etc/named.rfc1912.zones" 48L, 1080C written    
[root@localhost ~]# service  named start
Starting named: named: already running[  OK  ]

在主DNS服务器中必须要有从服务器的NS记录,才会通知从服务器读取数据,否则不会通知。

[root@mylinux named]# service named reload     #重载DNS主服务器
Reloading named: [  OK  ]
[root@mylinux named]# tail /var/log/messages   #查看日志信息
May 25 23:15:25 mylinux named[2037]: received control channel command 'reload'
May 25 23:15:25 mylinux named[2037]: loading configuration from '/etc/named.conf'
May 25 23:15:25 mylinux named[2037]: using default UDP/IPv4 port range: [1024, 65535]
May 25 23:15:25 mylinux named[2037]: using default UDP/IPv6 port range: [1024, 65535]
May 25 23:15:25 mylinux named[2037]: sizing zone task pool based on 8 zones
May 25 23:15:25 mylinux named[2037]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
May 25 23:15:25 mylinux named[2037]: reloading configuration succeeded
May 25 23:15:25 mylinux named[2037]: reloading zones succeeded
May 25 23:15:25 mylinux named[2037]: zone mylinux.com/IN: loaded serial 3
May 25 23:15:25 mylinux named[2037]: zone mylinux.com/IN: sending notifies (serial 3)

查看从服务器是否读取到数据

[root@localhost slaves]# cat /var/named/slaves/mylinux.com.zone 
$ORIGIN .
$TTL 86400      ; 1 day
mylinux.com             IN SOA  mylinux.com. root.mylinux.com. (
                                3          ; serial
                                86400      ; refresh (1 day)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                10800      ; minimum (3 hours)
                                )
                        NS      dns.mylinux.com.
                        NS      dns2.mylinux.com.
                        MX      10 mail1.mylinux.com.
                        MX      10 mail2.mylinux.com.
$ORIGIN mylinux.com.
dns                     A       192.168.1.104
dns2                    A       192.168.191.129
mail1                   A       192.168.1.102
mail2                   A       192.168.1.103
www                     A       192.168.1.101

子域授权

  在父域的资源记录文件中添加如下项:授权的子区域名称;子区域的名称服务器;子区域的名称服务器的IP地址:

mylinux.com.        IN  NS      ns.mylinux.com.   (授权的子域服务器名称)
mylinux.com.        IN  NS      ns2.mylinux.com. 
ns.mylinux.com.     IN  A       192.168.100.1     (子域服务器的IP地址)
ns2.mylinux.com.    IN  A       192.168.100.2

转发服务器

  被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行。

  全部转发,凡是对非本机所负责的区域请求,都进行转发给指定服务器

配置文件中添加配置:
    options {
        forward only|first;
        forwarders { IP; };
    }

  区域转发,仅转发对特定的区域的请求至服务器

配置文件中添加区域配置:
    zone "特定区域" IN {        
        type forward;
        forwarders { IP; }
        forward only|first;
    }

视图

内网:

  server1.company.com  172.20.1.1

  server2.company.com  172.20.1.2

  server3.company.com  172.20.1.3

  server4.company.com  172.20.1.4

外网:

  ftp.company.com   61.124.100.1

  www.company.com   61.124.100.2

  mail.company.com  61.124.100.3

  配置如图所示的网络DNS网络拓扑结构,内网用户可以使用正向解析所有内网计算机以及外网的服务器,反向解析内网服务器,允许递归查询;外用用户只能正向解析外网服务器,不能解析内网服务器,不允许使用递归查询。使用视图时,就必须所有的zone都归类到view中。

配置区域文件

[root@mylinux ~]# vim /etc/named.rfc1912.zones 
view "internal" {
        match-clients {172.20.1.0/24; };
        recursion yes ;
        zone "localhost" IN {
                type master;
                file "localhost-internal.zone";
                allow-update {none;};
        };
        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "localhost-internal.arpa";
                allow-update { none;} ;
        };
        zone "company.com" IN {
                type master;
                file "company-internal.zone";
                allow-update {none;};
        };
        zone "1.20.127.in-addr.arpa" IN {
                type master;
                file "company-internal.arpa";
                allow-update { none;} ;
        };
};
view "external" {
        match-clients { any; };
        recursion no ;
        zone "." IN {
                type hint;
                file "root.ca";
        };
        zone "company.com" IN {
                type master;
                file "company-external.zone";
                allow-update { none; };
        };
};
[root@mylinux ~]# named-checkconf

localhost-internal.zone数据解析文件

[root@mylinux named]# vim localhost-internal.zone 
$TTL    86400
@       IN      SOA     localhost.      root.localhost(
                42
                3H
                15M
                1W
                1D
        )
@       1D      IN      NS      dns.localhost.
dns     1D      IN      A       127.0.0.1
[root@mylinux named]# named-checkzone 'localhost' /var/named/localhost-internal.zone 
zone localhost-internal/IN: loaded serial 42
OK

localhost-inter.arpa反向解析文件

[root@mylinux named]# vim localhost-internal.arpa 
$TTL    86400
@       IN      SOA     localhost.      root.localhost(
                42
                3H
                15M
                1W
                1D
        )
@       1D      IN      NS      localhost.
1       1D      IN      PTR     localhost.
[root@mylinux named]# named-checkzone '0.0.127.in-addr.arpa' /var/named/localhost-internal.arpa 
zone 0.0.127.in-addr.arpa/IN: loaded serial 42
OK

company-internal.zone解析文件

[root@mylinux named]# vim company-internal.zone
$TTL    1D
@       IN      SOA     company.com.    root.company.com. (
                1054654658
                3H
                5M
                1W
                1D)
        IN      NS      dns.company.com.
        IN      MX      5       mail.com.com.
ftp     IN      A       61.124.100.1
www     IN      A       61.124.100.2
mail    IN      A       61.124.100.3
dns     IN      A       172.20.1.11
servel1     IN      A   172.20.1.1
servel2     IN      A   172.20.1.2
servel3     IN      A   172.20.1.3
servel4     IN      A   172.20.1.4
"company-internal.zone" [New] 17L, 403C written                        
[root@mylinux named]# named-checkzone 'company.com' /var/named/company-internal.zone
zone company-internal/IN: loaded serial 1054654658
OK
[root@mylinux named]#

company-internal.arpa反向解析文件

[root@mylinux named]# vim company-internal.arpa 
        IN      MX      5       mail.com.com.
ftp     IN      A       61.124.100.1
www     IN      A       61.124.100.2
mail    IN      A       61.124.100.3
dns     IN      A       172.20.1.11
servel1     IN      A   172.20.1.1
servel2     IN      A   172.20.1.2
servel3     IN      A   172.20.1.3
1       IN      PTR     server1.company.com.
$TTL    1D
@       IN      SOA     company.com.    root.company.com. (
                1054654658
                3H
                5M
                1W
                1D)
@       IN      NS      dns.company.com.
1       IN      PTR     server1.company.com.
2       IN      PTR     server2.company.com.
3       IN      PTR     server3.company.com.
4       IN      PTR     server4.company.com.
11      IN      PTR     dns.company.com.

"company-internal.arpa" 13L, 256C written                              
[root@mylinux named]# named-checkzone '1.20.127.in-addr.arpa' /var/named/company-internal.arpa 
zone 1.20.127.in-addr.arpa/IN: loaded serial 1054654658
OK

company-external.zone解析文件

[root@mylinux named]# vim company-external.zone 
$TTL    1D
@       IN      SOA     company.com.    root.company.com. (
                1054654658
                3H
                5M
                1W
                1D)
        IN      NS      dns.company.com.
        IN      MX      5       mail.com.com.
ftp     IN      A       61.124.100.1
www     IN      A       61.124.100.2
mail    IN      A       61.124.100.3
dns     IN      A       172.20.1.11
"company-external.zone" 13L, 263C written                              
[root@mylinux named]# named-checkzone 'company-external' /var/named/company-external.zone 
zone company-external/IN: loaded serial 1054654658
OK

重启即可测试:

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