Centos8 部署主從DNS服務器 - Bind


簡介

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健康檢測腳本類似。

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM