Centos8 部署主从DNS服务器

简介

DNS的出现及演变

    网络出现的早期是使用 IP 地址进行通信. 那时就几台主机通信. 但是随着接入网络主机的增多.这种数字表示的地址非常不便于记忆, UNIX 上就出现了建立一个叫做  hosts 的文件(Linux 和 Windows 也继承保留了这个文件). 这个文件中记录着主机名称和 IP 地址的对应表. 这样只要输入主机名,系统就会去加载Hosts 文件并查找对应关系. 找到对应的 IP ,就可以访问这个 IP 的主机了.

   但是后来主机的急速增加.无法保证所有人都能拿到统一的最新的 Hosts 文件,就出现了文件服务器上集中存放 Hosts 文件,以提供下载使用. 互联网规模进一步扩大,这种方式也不堪重负. 而且把所有地址解析记录形成的文件都同步到所有客户机似乎也不是一个好办法,这个时候 DNS 系统出现了,随着 解析规模继续扩大, DNS系统也在不断的演化. 直到现今的多层架构体系.

DNS概述

    DNS (Domain Name System 域名系统) , 因特网上作为域名和 IP 地址相互映射的一个分布式数据库. 能够使用户更方便的访问互联网. 而不用去记住能够被访问机器直接读取的 IP 数串,通过主机名,最终得到该主机名对应的 IP 地址的过程叫做域名解析(或主机名解析). DNS 协议运行在 UDP 协议之上. 使用端口号 53.

    DNS 的分布式数据库是以域名为索引的, 每个域名实际上就是一棵很大的的逆向树路径. 这棵逆向树称为域名空间(domain name space).树最大深度不得超过127层.树中每个节点都有一个可以长达63个字符的文本标号.

DNS域名解析过程

  首先, 客户端现在本地缓存中查找有没有域名缓存,如果没有, 客户端发出 DNS 请求翻译 IP 地址或主机名. DNS 服务器收到客户端请求后:

    1) 检查 DNS 服务器的缓存, 若查到请求的地址或者名字, 即像客户端发出应答信息.

    2) 若没有查找,则在数据库中查找, 若查到请求的地址或者名字, 即像客户机发出应答信息.

    3) 若没有查到, 则将请求发送给根域 DNS 服务器,并依序从根域查找顶级域名, 由顶级查找二级域, 二级域查找三级, 直至找到要解析的地址或者名字, 即像客户机所在网络的 DNS 服务器发出应答信息, DNS 服务器收到应答后先在缓存中存储,然后将解析结果发给客户机.

    4) 若没有找到,则返回错误信息.

DNS的分类

  主 DNS 服务器: 就是一台存储着原始资料的 DNS 服务器.

  从 DNS 服务器: 使用自动更新方式从主 DNS 服务器同步数据的 DNS 服务器.也成辅助 DNS 服务器.

  缓存服务器: 不负责本地解析, 返佣递归方式转发客户机查询请求. 并返回结果给客户机的 DNS 服务器, 同事缓存查询回来的结果, 也叫递归服务器.

  转发器: 这台 DNS 服务器发现非本机负责查询请求时, 不在想根域发起请求, 而是直接转发给指定的一台或者多台服务器,自身并不缓存查询结果.

DNS中记录类型

SOA
可以理解为一段为自己dns做备注说明的文本,一般与ns一致
比如:dns.laonanhai.com sa.laonanhai.com
示例:
a.shifen.com.        579    IN    SOA    dns.baidu.com. sa.baidu.com.  (     
                      1408010001 ; serial number     
                      5 ; refresh 5s     
                      5 ; retry 5s     
                      86400 ; expire 1d     
                      3600 ;min TTL 1h     
)
NS
域的授权名称服务器

NSDName:DNS的FQDN
 baidu.com.        64899    IN    NS    ns2.baidu.com.     
baidu.com.        64899    IN    NS    ns4.baidu.com.     
baidu.com.        64899    IN    NS    dns.baidu.com.     
baidu.com.        64899    IN    NS    ns7.baidu.com.     
baidu.com.        64899    IN    NS    ns3.baidu.com.
MX
域的邮件交换器,要跟着一个优先级值,越小越高
baidu.com.        7200    IN    MX    20 jpmx.baidu.com.
baidu.com.        7200    IN    MX    20 mx50.baidu.com.
baidu.com.        7200    IN    MX    10 mx.n.shifen.com.
baidu.com.        7200    IN    MX    20 mx1.baidu.com.
A
IPV4主机地址
AAAA
IPV6主机地址
PTR
解析IP的指针,反向记录
CNAME
权威(正式)名称,定义别名记录
www.baidu.com.        1154    IN    CNAME    www.a.shifen.com.

DNS命名规范

  1. 26个英文字母.
  2. 0-9 是个数字.
  3. "-" (英文中的连接符号).
  4. 最多63字节长度.

DIG,NSLOOKUP,HOST的介绍

HOST

  host 命令也是大多系统,软件库调用的解析命令.

[root@test1 ~]# host baidu.com
baidu.com has address 39.156.69.79
baidu.com has address 220.181.38.148
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 10 mx.maillb.baidu.com.
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 15 mx.n.shifen.com.

NSLOOKUP

  nslookup 能够反映出是哪个 dnsserver 返回的结果.

[root@test1 ~]# nslookup baidu.com
Server:		172.16.0.2
Address:	172.16.0.2#53

Non-authoritative answer:
Name:	baidu.com
Address: 39.156.69.79
Name:	baidu.com
Address: 220.181.38.148

DIG

  dig 返回整个解析的过程详细路径.类似 traceroute

[root@test1 ~]# dig baidu.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.2 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1525
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 512
;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		5	IN	A	220.181.38.148
baidu.com.		5	IN	A	39.156.69.79

;; Query time: 26 msec
;; SERVER: 172.16.0.2#53(172.16.0.2)
;; WHEN: 五 5月 15 10:32:42 CST 2020
;; MSG SIZE  rcvd: 70

单机部署 bind9

Bind 是一款开放源码的 DNS 服务器软件, Bind 由美国加州大学 Berkeley 分校开发和维护的, 全名为 Berkeley Internet Name Domain 它是目前世界上使用最为广泛的 DNS.

软件安装

dnf install bind-utils bind bind-devel bind-chroot

修改配置文件

options {
    version "1.1.1"; // 版本
    listen-on port 53 { 172.16.0.61; };  // 监听的地址
    directory   "/var/named/chroot/etc/"; // 存放 A记录位置
    pid-file "/run/named/named.pid";     // pid
    dump-file "/var/named/chroot/var/data/binddump.db"; 
    Statistics-file "/var/named/chroot/var/log/named_stats"; 

    secroots-file   "/var/named/chroot/var/data/named.secroots"; //
    recursing-file  "/var/named/chroot/var/data/named.recursing";
    allow-query     { any; };   // 允许所有地址像我发起解析请求
    zone-statistics yes;  // 启用 zone 状态
    memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
    empty-zones-enable no;  // 是否支持空 zone 
    forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
    recursion yes; //  dns采用递归的查询
    dnssec-enable yes; // 关闭安全功能
    dnssec-validation no; // 关闭互联网认证
    managed-keys-directory "/var/named/dynamic";
    session-keyfile "/run/named/session.key";
    /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
};

// dns 日常管理
key "rndc-key" {
        algorithm hmac-md5;
        secret "X2mRmAlsf/5ULFpLBGBhSQ==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };

// 日志配置 保留十份日志每份10m人日志级别waring
logging {
  channel warning { 
//
// 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 {
    version "1.1.1"; // 版本
    listen-on port 53 { 172.16.0.61; };  // 监听的地址
    directory   "/var/named/chroot/etc/"; // 存放 A记录位置
    pid-file "/run/named/named.pid";     // pid
    dump-file "/var/named/chroot/var/data/binddump.db"; 
    Statistics-file "/var/named/chroot/var/log/named_stats"; 

    secroots-file   "/var/named/chroot/var/data/named.secroots"; //
    recursing-file  "/var/named/chroot/var/data/named.recursing";
    allow-query     { any; };   // 允许所有地址像我发起解析请求
    zone-statistics yes;  // 启用 zone 状态
    memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
    empty-zones-enable no;  // 是否支持空 zone 
    forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
    recursion yes; //  dns采用递归的查询
    dnssec-enable yes; // 关闭安全功能
    dnssec-validation no; // 关闭互联网认证
    managed-keys-directory "/var/named/dynamic";
    session-keyfile "/run/named/session.key";
    /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
};

// dns 日常管理
key "rndc-key" {
        algorithm hmac-md5;
        secret "X2mRmAlsf/5ULFpLBGBhSQ==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };

// 日志配置 保留十份日志每份10m人日志级别waring
logging {
  channel warning { 
    file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
    severity warning;
    print-category yes; 
    print-severity yes;
    print-time yes;
  };
  // 访问日志
  channel general_dns {
    file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    warning;
  };
  category queries {
    general_dns;
  };
};

// zone "." IN {
//  type hint;
//  file "named.ca";
// };

include "/var/named/chroot/etc/view.conf";

编辑秘钥文件

# 生成秘钥文件命令
# rndc-confgen -r /dev/urandom -a

[root@test1 ~]# cat /etc/rndc.key key "rndc-key" { algorithm hmac-md5; secret "X2mRmAlsf/5ULFpLBGBhSQ=="; };

 配置 rndc 文件

    rndc(Remote Name Domain Controllerr)是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。  
    使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。

[root@test1 ~]# cat /etc/rndc.conf 
key "rndc-key" {
        algorithm hmac-md5;
        secret "X2mRmAlsf/5ULFpLBGBhSQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

配置 view  视图

[root@djcy-61 log]# cat /var/named/chroot/etc/view.conf 
view "View" {
  zone "host.io" {
        type    master;    // 主
        file    "host.io.zone";  // zone 文件名称
        allow-transfer {
                172.16.0.62;    // 那些地址可以向我请求数据
        };
        notify  yes;            // 发生文件变更时通知那些主机来取数据
        also-notify {
                172.16.0.62;
        };
  };
  zone "tcc.com" {
        type    master;
        file    "tcc.com.zone";
        allow-transfer {
                172.16.0.62;       
        };
        notify  yes;
        also-notify {
                172.16.0.62;
        };
  };

};

 配置 zone 解析文件

1 Serial:用来作为 slave 与 master 更新的依据。 master每次修改zone 文件这个需要都要加1.

2 Refresh:指定自动同步时间. 

3 Retry:如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;

4 Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 

5 Minimun:和TTL类似.

[root@djcy-61 log]# cat /var/named/chroot/etc/host.io.zone 
$ORIGIN host.io.
$TTL 600    ; 10 minutes
@                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                2002       ; serial                  // 每次更新记录这里要 + 1
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (10 minutes)
                                )
                        NS      dns.host.io.
$TTL 60 ; 1 minute
dns                     A       172.16.0.61
bjcy-61                 A       172.16.0.61
bjcy-62                 A       172.16.0.62
bjcy-81                 A       172.16.0.81
bjcy-82                 A       172.16.0.82
bjcy-200                A       172.16.0.200
bjcy-210                A       172.16.0.210
bjcy-220                A       172.16.0.220

修改目录权限检查配置文件及启动

chown -R named.named /run/named/
chown -R named.named /var/named/
[root@djcy-61 ~]# named-checkconf
[root@djcy-61 ~]# named-checkzone "host.io" /var/named/chroot/etc/host.io.zone
zone host.io/IN: loaded serial 2002
OK
[root@djcy-61 ~]# named-checkzone "tcc.com" /var/named/chroot/etc/tcc.com.zone
zone tcc.com/IN: loaded serial 2003
OK
systemctl start named
systemctl enable name

从节点配置

安装软件

dnf install bind-utils bind bind-devel bind-chroot

配置主配置文件

options {
    version "1.1.1"; // 版本
	listen-on port 53 { 172.16.0.62; };  // 监听的地址
	directory 	"/var/named/chroot/etc/"; // 存放 A记录位置
    pid-file "/run/named/named.pid";     // pid
    dump-file "/var/named/chroot/var/data/binddump.db"; 
    Statistics-file "/var/named/chroot/var/log/named_stats"; 

	secroots-file	"/var/named/chroot/var/data/named.secroots"; //
	recursing-file	"/var/named/chroot/var/data/named.recursing";
	allow-query     { any; };   // 允许所有地址像我发起解析请求
    zone-statistics yes;  // 启用 zone 状态
    memstatistics-file "/var/named/chroot/var/log/mem_stats";  // 内存状态
    empty-zones-enable no;  // 是否支持空 zone 
    forwarders {114.114.114.114;8.8.8.8; }; // 转发的dns
	recursion yes; //  dns采用递归的查询
	dnssec-enable yes; // 关闭安全功能
	dnssec-validation no; // 关闭互联网认证
	managed-keys-directory "/var/named/dynamic";
	session-keyfile "/run/named/session.key";
	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
};

// dns 日常管理
key "rndc-key" {
        algorithm hmac-md5;
        secret "X2mRmAlsf/5ULFpLBGBhSQ==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };

// 日志配置 保留十份日志每份10m人日志级别waring
logging {
  channel warning { 
    file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
    severity warning;
    print-category yes; 
    print-severity yes;
    print-time yes;
  };
  // 访问日志
  channel general_dns {
    file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    warning;
  };
  category queries {
    general_dns;
  };
};

// zone "." IN {
//	type hint;
//	file "named.ca";
// };

include "/var/named/chroot/etc/view.conf";

配置view视图文件

[root@djcy-62 ~]# cat /var/named/chroot/etc/view.conf
view "View" {
  zone "host.io" {
        type    slave;
        masters {172.16.0.61; };
        masterfile-format text;
        file    "slave.host.io.zone";
  };
  zone "tcc.com" {
        type    slave;
        masters {172.16.0.61; };
        masterfile-format text;
        file    "slave.tcc.com.zone";
  };

};

编辑秘钥文件

# 生成秘钥文件命令
# rndc-confgen -r /dev/urandom -a

[root@test1 ~]# cat /etc/rndc.key key "rndc-key" { algorithm hmac-md5; secret "X2mRmAlsf/5ULFpLBGBhSQ=="; };

 配置 rndc 文件

[root@test1 ~]# cat /etc/rndc.conf 
key "rndc-key" {
        algorithm hmac-md5;
        secret "X2mRmAlsf/5ULFpLBGBhSQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

检查配置修改权限并启动

chown -R named.named /run/named/
chown -R named.named /var/named/
[root@djcy-61 ~]# named-checkconf
systemctl start named
systemctl enable name

# 如果没问题回自动同步文件
[root@djcy-62 etc]# pwd
/var/named/chroot/etc
[root@djcy-62 etc]# ll
total 20
drwxr-x--- 3 named named  23 Aug  2 17:08 crypto-policies
-rw-r--r-- 1 named named 405 Aug  2 17:15 db-mJETa6Wy
-rw-r--r-- 1 named named 189 Aug  2 17:15 db-YAKlPalf
drwxr-x--- 2 named named   6 Jul  7 22:14 named
drwxr-x--- 3 named named  25 Aug  2 17:08 pki
-rw-r--r-- 1 named named 498 Aug  2 23:14 slave.host.io.zone
-rw-r--r-- 1 named named 346 Aug  2 23:17 slave.tcc.com.zone
-rw-r--r-- 1 named named 318 Aug  2 17:23 view.conf

添加解析记录

A记录

[root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
                                2002       ; serial      # 加一
bjcy-224                A       172.16.0.224      # 新增

[root@djcy-61 ~]# rndc reload                  # reload 同步
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

 解析

[root@djcy-61 ~]# dig -t A bjcy-224.host.io @172.16.0.61 +short
172.16.0.224

CNAME记录

也就是把域名解析到另外一个域名上

[root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 

                                2003       ; serial
bjcy-61                 A       172.16.0.61
www                     CNAME   bjcy-61.host.io.
[root@djcy-61 ~]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

解析

[root@djcy-61 ~]# host www.host.io 
www.host.io is an alias for bjcy-61.host.io.
bjcy-61.host.io has address 172.16.0.61

MX记录

[root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
                                2004       ; serial

max                     MX  5   172.16.0.50
[root@djcy-61 ~]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

解析

[root@djcy-61 ~]# host max.host.io
max.host.io mail is handled by 5 172.16.0.50.host.io. 

PTR记录

配置view

[root@djcy-61 ~]# cat /var/named/chroot/etc/view.conf 
  zone "16.172.in-addr.arpa" {
        type    master;
        file    "16.172.zone";
        allow-transfer {
                172.16.0.62;       
        };
        notify  yes;
        also-notify {
                172.16.0.62;
        };
  };

配置zone文件

[root@djcy-61 ~]# cat /var/named/chroot/etc/16.172.zone
$TTL 3600       ; 1 hour
@                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                2004       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (1 hour)
                                )
                        NS        dns.host.io.
61.0     IN      PTR     bjcy-61.host.io.
62.0     IN      PTR     bjcy-62.host.io.
81.0     IN      PTR     bjcy-81.host.io.
82.0     IN      PTR     bjcy-82.host.io.
200.0    IN      PTR     bjcy-200.host.io.

权限重启

[root@djcy-61 ~]# chown named.named -R /var/named/ 
[root@djcy-61 ~]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

从节点配置view文件

[root@djcy-61 etc]# cat view.conf 
  zone "16.172.in-addr.arpa" {
        type    master;
        file    "16.172.zone";
        allow-transfer {
                172.16.0.62;       
        };
        notify  yes;
        also-notify {
                172.16.0.62;
        };
  };

权限及重启

[root@djcy-61 ~]# chown named.named -R /var/named/ 
[root@djcy-61 ~]# rndc reload
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
server reload successful

 智能DNS

    主要根据 ACL 来源限制,给出不同的后端服务器

主配置文件配置

vim /etc/named.conf
acl group1 { 192.168.1.0/24; }; acl group2 { 172.16.0.0/24; };

view视图配置

vim /var/named/chroot/etc/view.conf
view "GROUP1" {
  match-clients { group1; };
  zone "host.io" {
    type master;
    file "group1.host.io.zone";
  };
};

view "GROUP2" {
  match-clients { group2; };
  zone "host.io" {
    type master;
    file "group2.host.io.zone";
  };
};

zone文件配置

group1.host.io.zone 同 group2.host.io.zone 只有解析IP有区别
[root@djcy-61 ~]# cat /var/named/chroot/etc/host.io.zone 
$ORIGIN host.io.
$TTL 600    ; 10 minutes
@                  IN SOA  dns.host.io. dnsadmin.host.io. (
                                2002       ; serial
                                900        ; refresh (15 minutes)
                                600        ; retry (10 minutes)
                                86400      ; expire (1 day)
                                3600       ; minimum (10 minutes)
                                )
                        NS      dns.host.io.
$TTL 60 ; 1 minute
dns                     A       172.16.0.61
bjcy-62                 A       172.16.0.62

DNS压测监控

压测

   需要下载源码包 编译之后生成一个  queryperf 命令.

下载bind源码:wget http://ftp.isc.org/isc/bind9/9.7.3/bind-9.7.3.tar.gz
解压bind源码:tar zxf bind-9.7.3.tar.gz
进入解压后bind源码目录:cd bind-9.7.3/contrib/queryperf/
编译:./configure
make
会在当前目录下出现queryperf,可以将它拷贝至/usr/bin/下
编辑域名记录文件(test.txt),格式如下:
	www.baidu.com A
	www.baidu.com A
	www.baidu.com A
	www.baidu.com A
	www.baidu.com A
压测命令:queryperf -d test.txt -s 8.8.8.8

监控

系统基础性能

使用zabbix自带模板即可。Cpu、内存、主机存活、磁盘空间、主机运行时间、系统load.

Loopback地址绑定状态监控

该架构中,dnsserver在集群中充当realserver的角色,在dr中,需要绑定loopback地址方能通信,因此当loopback地址没有绑定上时,lvs健康检测通过,但是当请求到达dnsserver时,请求被拒绝,dns集群会出现异常。

Dns数据与master一致性监控

此处我的方案是分为两部分:

一是通过写zabbix自定义discovery,扫出dns配置中所有zone,然后分别对比slavemaster每个zoneserial值,当slavemaster的值持续5分钟不一致时报警

二是写脚本,每15分钟扫一遍master上所有域名解析结果,与每个slave的结果做对比,当出现结果不一致情况时,报警

Dns响应时间监控

远端一组主机跑在fullnat下(提供高可用),通过dig命令检测dnsserver的响应时间。

Dns每秒请求数监控

在每台dns主机上,编写zabbix脚本,分析named_stats文件,获取每秒请求数

#!/bin/bash

#rndc stats

STATS='/var/named/chroot/var/log/named_stats'

if [[ $# -ne 1 ]]

then

  echo "$0 [querys]"

  exit 2

else

  which=$1

fi

 

if [[ -f "${STATS}" ]]

then

  echo > ${STATS}

  rndc stats >/dev/null 2>&1

else

  echo "${STATS} not found."

  exit 2

fi

 

case ${which} in

querys)

  RESULT=`awk '{if ($2=="QUERY") {print $1}}' ${STATS}`

;;

*)

  echo "$0 [querys]"

  exit 2

;;

esac

 

echo ${RESULT}

Dns可用性监控

远端一组主机跑在fullnat下(提供高可用),通过host命令检测dnsserver的可用性,脚本与lvs健康检测脚本类似。

    

原文地址:https://www.cnblogs.com/yanshicheng/p/12890515.html