HOME
BLOG
TIME
FRIENDS
SAY TO ME
MOOD
TRAVELING
DNS服务搭建(只有我搭建不好的服务)
2020/08/02 5.9k 24 分钟 点击

DNS服务器在企业中应用也是十分广泛的,搭建环境中,主机数量偏多,IP管理的话不好进行,所以就需要用主机名称来管理,为了处理IP与主机名的一一对应关系,这时候便用到了DNS服务,下面我们来一起了解一下这个服务吧。

DNS的英文全名叫Domain Name Service,或者Domain Name System ,它是处在应用层的协议,是基于C/S,服务器/客户端结构体系的,它占用UDP和TCP的53端口,普通用户去查一条解析记录,走UDP的53端口,而区域传输需要同时使用UDP和TCP的53端口,包括主从复制也需要,这一点我们后面再谈。

一般用来实现DNS解析用到的软件是BIND,它是一款老牌的提供DNS服务的软件,历史悠久,同时这个公司也提供DHCP服务的软件。
BIND的英文全名叫Bekerley Internat Name Domain ISC 这是它的官网,有兴趣可以去看看:www.isc.org.
在Linux中,本身提供本地名称解析配置文件是hosts,它在在/etc/hosts文件中;
在Windows中,他存放在%WINDIR%/system32/drivers/etc/hosts 中,%WINDIR%表示的是你装系统时候的系统盘,比如C盘,D盘

对于DNS服务器的类型,主要有以下几种:

  • 主DNS服务器
  • 管理和维护所负责解析的域内解析库的服务器*
  • 从DNS服务器
  • 从主服务器或从服务器“复制”(区域传输)解析库副本
    在解析库里面有以下几项关键内容*
    * **序列号:解析库版本号,主服务器解析库变化时,其序列递增**
    • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    • 过期时长:从服务器联系不到主服务器时,多久后停止服务  “通知”机制:主服务器解析库发生变化时,会主动通知从服务器
  • 缓存DNS服务器(转发器)
    这种DNS服务器就相当于小区里的DNS,为客户端提供传递解析请求,同时也可以缓存DNS记录,可以加快用户访问速度,减短解析时间。

一次完整的查询请求经过的流程是下面这样的:
Client –>hosts文件 –>DNS Service Local Cache –> DNS Server (recursion) –> Server Cache –> iteration(迭代) –> 根–> 顶级域名DNS–>二级域名DNS…
而在返回解析结果的时候,会有以下几种内容(例如dig查询):

  • 肯定答案:得到的解析结果
  • 否定答案:请求的条目不存在等原因导致无法返回结果
  • 权威答案:直接得到的解析结果
  • 非权威答案:通过转发,一步一步查询得到的结果

而对于BIND来说,它的具体内容和配置文件有以下:

  • 服务脚本和名称:/etc/rc.d/init.d/named #CentOS6

  • /usr/lib/systemd/system/named.service #CentOS7

  • 主配置文件:

    • /etc/named.conf
    • /etc/named.rfc1912.zones
    • /etc/rndc.key
  • 解析库文件:/var/named/ZONE_NAME.ZONE

  • 注意:

    • 一台物理服务器可同时为多个区域提供解析
    • 必须要有根区域文件;named.ca
    • 应该有两个(如果包括ipv6的,应该更多)实现localhost 和本地回环地址的解析库
  • rndc: remote name domain controller, 默认与bind安装在同一主机,且只能通过127.0.0.1连接
    named进程,使用TCP的953端口提供辅助性的管理功能,比如:

    • rndc reload 不用重新启动BIND,使配置文件生效
    • rndc flush 清楚DNS缓存

rndc后面加:
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0 flush:清空DNS服务器的所有缓存记录

主配置文件内容:

  • 主配置文件: 全局配置:options {};
  • 日志子系统配置:logging {};
  • 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    zone “ZONE_NAME” IN {};
    这里需要特别强调,由于BIND软化历史悠久,它的配置文件语法是C语言风格,每一句话,只要换行必须加分号”;”,注释也不再是”#”,而是”//“
  • 注意:任何服务程序如果期望其能够通过网络被其它主机访问 ,至少应该监听在一个能与外部主机通信的IP地址上
  • 缓存名称服务器的配置: 监听外部地址即可
    dnssec: 建议关闭dnssec,设为no

主DNS名称服务器:

  • 在主配置文件/etc/named.conf中定义区域
    zone “ZONE_NAME” IN {
    type {master|slave|hint|forward};
    type有四种类型,我们后面再讲
    file “ZONE_NAME.zone”;
    allow-update { none; };
    这里这一项,它的具体作用后面再讲,不加也可以,不是必须的
    };
  • 定义区域解析库文件
     出现的内容
     宏定义
     资源记录
  • 主配置文件语法检查: named-checkconf
  • 解析库文件语法检查:
    named-checkzone “yangyang.host” /var/named/yangyang.host.zone
  • 配置文件重新加载:
    rndc status|reload
    service named reload

说了这么多,也不如实实在在的搭建一个服务来的明白,那我们下面就来具体搭建一个DNS服务吧!

一.正向yangyang.host解析

1.安装包bind
yum install -y bind

2.vim /etc/named.conf
修改这个主配置文件,需要知道,如果下面两项没有修改,会造成客户端无法连接你的DNS服务器。
第一项:

listen-on port 53 { localhost;};
这一项的意思是,监听自己回环IP的53端口,默认是127.0.0.1 这样是把端口绑定到了127.0.0.1IP上,只有你自己通过127.0.0.1才能连接到服务器,其他人不可以,而且你在服务器上使用自己的真正IP也不行,只能使用这个回环IP。这一项也可以使用//注释掉。
第二项:
allow-query { any;};
这一项不开的话,其他人还是不能访问,默认是localhost,只允许自己的IP来访问,这也失去了DNS服务器的意义。所以需要把它改为any,允许任何人访问,这里你也可以改成具体IP:192.168.1.20,或者改为网段:192.168.1.0/24,这一项也可以使用//注释掉。

好啦,到这里,主配置文件就修改好了,在许多教程中,会在主配置文件下面来添加区域文件,但是这样不方便管理,容易乱,需要注意在主配置文件最下面有这样一句话:include “/etc/named.rfc1912.zones”;
它的意思就是这路径下的文件也可以定义,它是包含在主配置文件里的,所以我们就在这里设置区域文件,方便统一管理。

3.vim /etc/named.rfc1912.zones
修改这个文件配置区域文件,在里面找个地方加入下面内容,切记不能忘了分号”;”

zone "yangyang.host" IN {
        type master;  //声明是主DNS服务器,因为它有主从之分
        file "yangyang.host.zone"; //声明区域数据库文件路径,这里写的是相对路径,系统知道他应该在/var/named/下面找
};

4.vim /var/named/magedu.com.zone
修改区域数据库文件,这里十分关键,为核心内容,格式也十分重要,为什么DNS叫“只有我搭建不好的服务”,原因就在这。
首先,这个文件实在/var/named/目录下创建的,但是进去会发现没有这个文件,所以需要你拷贝模板,并且重新命名,自己修改,模版也在这个目录下,叫:named.localhost
cp -a /var/named/named.localhost yangyang.host.zone

这里的yangyang.host.zone是上一步在zone “yangyang.host”里面的file “yangyang.host.zone” 里面的内容,所以名称必须统一,为你要解析的域名。

$TTL 1D
@       IN SOA dnssrv1 admin.yangyang.host. (
                                        0       ; serial
                                        1H      ; refresh
                                        600     ; retry
                                        1D      ; expire
                                        3H )    ; minimum

        NS      dnssrv1
dnssrv1  A    192.168.218.100
websrv1  A    6.6.6.6
www     CNAME  websrv1
@       MX  10 mailsrv
mailsrv A  192.168.218.101

这里我们主要说一下这个解析数据库里面的每一项含义:
区域解析库是由众多RR(Resource Record)组成:

  • 资源记录:Resource Record, RR

  • 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX

    • SOA:Start Of Authority,起始授权记录;一个区域解析库有 且仅能有一个SOA记录,必须位于解析库的第一条记录
    • A:internet Address,作用,域名(QFDN) –> IPv4
    • AAAA: 域名(QFDN) –> IPv6
    • PTR: PoinTeR,IP –> FQDN
    • NS: Name Server,专用于标明当前区域的DNS服务器
    • CNAME:Canonical Name,别名记录
    • MX: Mail eXchanger,邮件交换器

    资源记录SOA定义的格式:
    语法:name [TTL] IN RR_type value

  • 注意:

    • (1) TTL可从全局继承
    • (2) @可用于引用当前区域的名字
    • (3) 同一个名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应
    • (4) 同一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字可 以找到同一个主机
      • name: 当前区域的名字,例如“yangyang.host.”
  • value: 有多部分组成

    • (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
    • (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换 ,例如linuxedu@yangyang.host. 等价linuxedu.yangyang.host.
    • (3) 主从服务区域传输相关定义以及否定的答案的统一的TTL

对于这个区域数据库文件:
TTL是生存时间,也就说DNS缓存时间 1D是一天,以此类推1H 一小时,1W 一周,默认不写字母为秒,例如:10 是10秒

@表示本服务器的域,也就是yangyang.host.
这里有一点需要十分注意!!!
这里有一点需要十分注意!!!
这里有一点需要十分注意!!!
在区域数据库文件里,你的域名只要后面没加”.”,系统会默认给你补全,他认为你这不全,比如:@可以写成yangyang.host. 但是你要是写yangyang.host,他就会认为你应该是yangyang.host.yangyang.host. 所以你的配置文件就出了问题。
其实它的思路很简单,比如:

         NS      dnssrv1
dnssrv1  A       192.168.218.100
websrv1  A       6.6.6.6
www      CNAME   websrv1

第一步,你肯定得先把服务器的IP表示出来对吧,因为在之前SOA记录了定义了服务器的名称dnssrv1,还有邮箱名称admin.yangyang.host.
@ IN SOA dnssrv1 admin.yangyang.host.
所以,因为有继承机制, NS dnssrv1这一行前面不用写,系统也知道是声明@为DNS服务器,而@不就是yangyang.host.吗?

第二步,因为你声明了DNS服务器,但是还没有IP,所以
才有了dnssrv1 A 192.168.218.100,IP与服务器对应。

第三步,websrv1解析了地址6.6.6.6,但是我们都习惯www,所以把www声明为websrv1的别名,
所以这就都出来了.

在SOA中,以下需要注意:
0 ; serial 是判断主DNS数据库变化的标准
修改数据库后需要手动加一
1D ; refresh
从服务器一天拉取一次数据库
1H ; retry
如果拉取失败,一小时以后再次尝试
1W ; expire
数据库信息存活时间为一周
一周以后失效
3H ) ; minimum
3小时之内不需要查询上次没查到的记录

5.systemctl start named
启动服务
之前启动过的也可以使用
rndc reload
重新加载配置文件

6.测试
使用dig
这里使用dig需要下载bind-utils软件包,
yum install -y bind-utils
里面也还有nslookup和host等其他测试命令
dig www.yangyang.host @DNS服务器IP

NF记录

  • name: 当前区域的名字

  • value: 当前区域的某DNS服务器的名字,例如
    ns.yangyang.host.

  • 注意:一个区域可以有多个NS记录
    例如:

    • yangyang.host. IN NS
    • yangyang.host. IN NS
  • 注意:

  • ns1.yangyang.host. ns2.yangyang.host.*

    • 相邻的两个资源记录的name相同时,后续的可省略
    • 对NS记录而言,任何一个ns记录后面的服务器名字 ,都应该在后续有一个A记录

MX记录

  • name: 当前区域的名字
  • value: 当前区域的某邮件服务器(smtp服务器)的主机名
  • 一个区域内,MX记录可有多个;但每个记录的value之前应该 有一个数字(0-99),表示此服务器的优先级;数字越小优先 级越高
  • 例如:
yangyang.host. IN MX 10 mx1.yangyang.host.
               IN MX 20 mx2.yangyang.host.
  • 注意:

    • 对MX记录而言,任何一个MX记录后面的服务器名字 ,都应该在后续有一个A记录

    A记录

  • name: 某主机的FQDN,例如www.yangyang.host.

  • value: 主机名对应主机的IP地址

  • 例如:

www.yangyang.host.    IN    A     1.1.1.1
www.yangyang.host.     IN     A    2.2.2.2
mx1.yangyang.host.     IN     A    3.3.3.3
mx2.yangyang.host.     IN     A    4.4.4.4
$GENERATE 1-254 HOST$     A    1.2.3.$
*.yangyang.host.     IN     A    5.5.5.5
yangyang.host.         IN     A    6.6.6.6

注意:
这里
$GENERATE 1-254 HOST$ A 1.2.3.$
$GENERATE用来实现一一对应
类似:server1 - 1.2.3.1 server100 - 1.2.3.100
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址 比如上面的*.yangyang.host.

其他记录

  • AAAA:
    • name: FQDN
    • value: IPv6
  • PTR:
    • name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作 4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为: 4.3.2.1.in-addr.arpa.
    • value: FQDN
    • 例如:
  • 4.3.2.1.in-addr.arpa. IN PTR www.yangyang.host.
    如1.2.3为网络地址,可简写成:
    4 IN PTR www.yangyang.host.*
    • 注意:网络地址及后缀可省略;主机地址依然需要反着写
  • CNAME:
    • name: 别名的FQDN
    • value: 真正名字的FQDN
    • 例如:
  • www.yangyang.host. IN CNAME websrv.yangyang.host.*

二.反向解析192.168.218.101

有了前面的基础,后面就好理解,我这里只叙述重要的关键点。

反向解析的zone文件需要把IP倒过来写

zone "218.168.192.in-addr.arpa"{
        type master;
        file "192.168.218.zone";
};

区域数据库文件
模版为/var/named/named.loopback

$TTL 1D
@    IN SOA    master admin.yangyang.host. (
                    0    ; serial
                    1D    ; refresh
                    1H    ; retry
                    1W    ; expire
                    3H )    ; minimum
        NS    master
master    A    127.0.0.1
100     PTR master.yangyang.host.
101        PTR    www.yangyang.host.

其中的@代表:
218.168.192.in-addr.arpa. IP域
也可以这样写

直接解析master或者把master解析到回环IP,再由回环IP返回对应IP是同样的道理,都可以

$TTL 1D
@       IN SOA  master admin.yangyang.host. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
master  A       192.168.218.100
100        PTR        master.yangyang.host.
101     PTR     www.yangyang.host.
2       PTR     @

最后的可以解析192.168.218.2来查看@代表的意思

dig -x IP @DNS主机IP 实现反向解析
或者
dig -t ptr 101.218.168.192.in-addr.arpa. @服务器IP 也可以
dig -t axfr 抓取DNS数据库 域名 @DNS服务器IP

三.主从DNS服务器

1.主服务器的配置同上,只不过需要再多加一句话:
vim /etc/named.conf
allow-transfer { 从服务器的IP;};
这句话的作用是不允许随便的服务器当DNS的从服务器,因为从服务器可以拉取主服务器的解析库,不安全

2.从服务器的配置

zone "yangyang.host" {
        type slave;    //声明这是从服务器
        masters {主服务器IP;};
        file "slaves/magedu.com.zone"; //需要声明相对路径,slaves/在 /var/named/目录下
};

3.从服务器的配置同上 ,只不过需要在配置文件中多加一句
vim /etc/named.conf
allow-transfer { none;};
这是声明自己是最后的从服务器了,在:主->从->从->从 结构体系中处于最下端,保护解析数据库安全,放在有人抓取从数据库。

四.远程更新数据库

之前提到allow-update { none; };语句的作用,这里来谈
它是用于远程更新数据库的
指定的zone语句块中:
allow-update {any;}; //为了安全这里需要指定IP,这里是实验,所以是any,意思是任何人都可以远程修改数据库。

  • 修改 /var/named权限,使它可写
    chmod 770 /var/named

  • 如果开了SE Linux设置这一项:
    setsebool -P named_write_master_zones on

  • nsupdate 这个命令来进行交互写入

  • • >server DNS服务器IP
    • >zone 修改的zone域 例如:zone yangyang.host
    • >update add ftp. yangyang.host 88888 IN A 8.8.8.8
    • >send
    • >update delete www. yangyang.host A 删除记录
    • >send*

  • 测试:dig ftp. yangyang.host @服务器IP
    ll /var/named/ yangyang.host.zone.jnl
    cat /var/named/ yangyang.host.zone

五.DNS委派

子域实现普通DNS一样,只不过父域需要在解析数据库声明子域DNS和它的IP,这样就实现了DNS委派

子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
类似根域授权tld:

.com.         IN         NS      ns1.com.
.com.         IN      NS       ns2.com.
ns1.com.     IN         A         2.2.2.1
ns2.com.     IN         A         2.2.2.2

举个例子:

$TTL 86400
.        IN SOA    dns1 admin (
                4          ; serial
                86400      ; refresh
                3600       ; retry
                604800     ; expire
                10800      ; minimum
                )
                NS    dns1
host            NS    dns2
dns1            A    192.168.218.100
dns2            A    192.168.218.102

其中,父域”.”DNS为dns1,子域”host”为dns2

不过有一点需要注意:
修改配置文件
vim /etc/named.conf
设置
dnssec-enable no;
dnssec-validation no;

六.DNS转发

DNS转发分为两种:
1.全局转发:
对非本机所负责解析区域的请求,全转发给指定的服务器

修改配置文件
vim /etc/named.conf
在Options括号里添加两句话

Options {
forward first|only;
forwarders { ip;}; 
};

例如:
forward first;
forwarders {192.168.27.103;}; //这里声明转发到哪个DNS服务器,例如:192.168.27.103**

2.特定区域转发
仅转发对特定的区域的请求,比全局转发优先级高

修改配置文件
vim /etc/named.rfc1912.zones
在zone区域括号里添加两句话

zone "yangyang.host" {
        type forward;
        forward first;
        forwarders {192.168.218.103;};
};

这里说明一下first 与only的区别:
forward first|only

  • first 先转发到forwarders设定的DNS服务器,如果实在找不到这台服务器,比如它down机了,就转发到互联网上去找根DNS
  • only 转发到forwarders设定的DNS服务器,如果找不到这台服务器,那就到此为止了,不再去寻找根服务器**
  • recursion 设为 no 是取消递归,不再转发互联网去查找DNS

注意:关闭dnssec功能:
dnssec-enable no;
dnssec-validation no;

七.智能DNS

BIND 通过view来实现智能DNS:

  • 一个bind服务器可定义多个view,每个view中可定义一个 或多个zone
  • 每个view用来匹配一组客户端
  • 多个view内可能需要对同一个区域进行解析,但使用不同 的区域解析库文件
  • 注意:
    • (1) 一旦启用了view,所有的zone都只能定义在view中
    • (2) 仅在允许递归请求的客户端所在view中定义根区域
    • (3) 客户端请求到达时,是自上而下检查每个view所服务 的客户端列表
  • 格式:
view VIEW_NAME {
match-clients { testacl; }; 
zone “magedu.com” {
    type master;
    file “magedu.com.zone”; 
}; 
include “/etc/named.rfc1912.zones”;
};

其中testacl是一种提前定义
是BIND中基础的安全相关的配置:

  • acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用

格式:

acl acl_name {
              ip; 
              net/prelen; ......
};

示例:

acl mynet {
    172.16.0.0/16;
    10.10.10.10; 
};

bind有四个内置的acl:

  • none: 没有一个主机
  • any: 任意主机
  • localhost: 本机
  • localnet: 本机的IP同掩码运算后得到的网络地址

注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面,而且约束范围小的要比约束范围大的排在前。
举个例子:
acl beijingnet {192.168.218.0/24; };
acl shanghainet {172.18.0.0/16;10.0.0.0/8;};
acl othernet {any;};

具体实现:

vim /etc/named.conf

acl beijingnet {192.168.27.0/24; }; 
acl shanghainet {172.18.0.0/16;10.0.0.0/8;};
acl othernet {any;};

view beijingview {
        match-clients  {beijingnet;};
        zone "yangyang.host" {
                type master;
                file "yangyang.host.zone1";
        };
        include "/etc/named.rfc1912.zones";
};
view shanghaiview{
        match-clients  {shanghainet;};
        zone "yangyang.host" {
                type master;
                file "yangyang.host.zone2";
        };
include "/etc/named.rfc1912.zones";
};
view otherview {
        match-clients  {othernet;};
        zone "yangyang.host" {
                type master;
                file "yangyang.host.zone1";
        };
include "/etc/named.rfc1912.zones";
};
include "/etc/named.root.key";

然后再在具体的yangyang.host.zone1文件里来定义具体的解析数据库。

八.源码编译BIND

  • 下载bind: isc.org:

  • bind-9.10
    bind-9.11
    bind-10*

  • 编译安装bind

    • tar xvf bind-9.11.0a3.tar.gz
    • cd bind-9.11.0a3/
    • groupadd -r -g 53 named
    • useradd -r -u 53 -g 53 named
    • ./configure –prefix=/usr/local/bind9 – sysconfdir=/etc/named/ –without-openssl –disable-ipv6 – disable-chroot –enable-threads
    • make
    • make install
  • 环境变量:

    • vim /etc/profile.d/named.sh
  • export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin/:$PATH*

  • 库和头文件

    • vim /etc/ld.so.conf.d/named.conf
      /usr/local/bind9/lib
    • ldconfig –v
    • ls -sv /usr/local/bind9/include /usr/include/named
  • man帮助

    • vim /etc/man.config | /etc/man_db.conf
  • MANPATH /usr/local/bind9/share/man*

    • man named.conf
  • vim /etc/named/named.conf

options {
    directory "/var/named/" 
};
zone "." IN {
    type hint;
    file "named.ca";
};
zone "localhost" IN {
    type master;
    file “named.localhost"; 
    allow-update {none;};
};
zone “1.0.0.127.in-addr.arpa" IN {
    type master;
    file "named.loopback"; 
    allow-update {none;};
};
  • 区域数据库
  • • mkdir /var/named*
  • • named-checkconf*
  • • dig +norec @a.root-servers.net > /var/named/named.ca*
  • • vim /var/named/named.localhost*
$TTL 1d
@     IN     SOA     localhost.     admin.localhost. (
                            2016061801 
                            1h
                            5m
                            7d
                            1d) 
            IN     NS         localhost.
localhost.     IN     A         127.0.0.1
  • vim /var/named/named.loopback
$TTL 1d
@     IN     SOA     localhost.     admin.localhost.(    
                                    2016061801
                                    1h 
                                    5m 
                                    7d 
                                    1d)
            NS     @
            A     127.0.0.1 
            PTR localhost.
  • 设置权限

  • • chmod 640 /var/named/**

  • • chmod 640 /etc/named/named.conf*

  • • chgrp -R named /var/named/*

  • • chgrp named /etc/named/named.conf*

  • 启动服务和测试

  • • man named*

  • • named -u named -f -g -d 3 前端级别3方式运行*
    • named -u named 后台运行

  • • killall named*

  • • ss -tuln*

  • • tail /var/log/message*

  • • named -u named*

  • 支持rndc

  • • rndc reload 观察错误提示*

  • • rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 生成key*

  • • tail /etc/named/rndc.conf >> /etc/named/named.conf*

  • • killall -SIGHUP named*

  • • rndc status*

九.压力测试

  • /root/bind-xxx/contrib/scripts
  • 编译压力测试工具
    • cd /root/bind-xxx/contrib/queryperf
    • ./configure
    • make
    • cp queryperf /usr/local/bind9/bin
    • queryperf -h
  • 压力测试
    • vim test.txt
    www.yangyang.host A
    yangyang.host NS
    yangyang.host MX
    pop3.yangyang.host A
    web.yangyang.host A
    • queryperf -d test.txt -s 127.0.0.1  打开日志功能
    • rndc querylog
    • rndc status
    • queryperf -d test.txt -s 127.0.0.1 • wc -l /var/log/message

十.DNS排错

#dig A example.com 返回以下结果
• ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A
example.com
• ;; global options: +cmd
• ;; Got answer:
• ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
• …
• SERVFAIL:The nameserver encountered a problem while
processing the query.
• 可使用dig +trace排错,可能是网络和防火墙导致

  • NXDOMAIN:The queried name does not exist in the zone.
    • 可能是CNAME对应的A记录不存在导致
  • REFUSED:The nameserver refused the client’s DNS request due to policy restrictions.
    • 可能是DNS策略导致

• NOERROR不代表没有问题,也可以是过时的记录
• 查看是否为权威记录,flags:aa标记判断
• 被删除的记录仍能返回结果,可能是因为*记录存在
• 如:*.example.com. IN A 172.25.254.254
• 注意“.”的使用
• 避免CNAME指向CNAME记录,可能产生回环 test.example.com. IN CNAME lab.example.com. lab.example.com. IN CNAME test.example.com.
• 正确配置PTR记录,许多服务依赖PTR,如sshd,MTA
• 正确配置轮询round-robin记录

运维基础服务