天天看點

SMB - DNS Server 域名伺服器配置與管理(四)

0x1 ACL與Options

       BIND的主配置檔案支援豐富的配置參數,這裡簡單介紹下Options和ACL,至于View等配置我不準做更多說明,熟悉基礎配置後參考配置文檔即可完成相關配置,參考文檔可以直接執行以下指令檢視:

#man 5 named.conf           
1、ACL通路控制清單

       ACL用于控制用戶端對DNS服務的通路權限,可選參數包括any、localhost、localnet、none及以CIDR表示的網絡位址;

acl allow-query-net {
      192.168.2.0/24;
};           

      這裡的allow-query-net是ACL的名稱;

2、Options選項

       Options用于Statement中,用以對Statement進行全局或可選配置,可選參數包括:

            allow-query               允許用戶端通路,預設允許所有

            allow-query-cache    允許查詢緩存,more允許localhost和localnet

            blackhole                   黑洞,拒絕用戶端通路,預設none

            disable-empty-zone   禁用預設的空域配置,企業環境用不到,除非管理者打算自找煩惱

            dnssec-enable            啟用DNSSEC相關RR,預設啟用

            dnssec-validatiom     通過DNSSEC驗證RR權威性,預設啟用

            forwarders                 請求轉發伺服器清單,即将本伺服器無法解析的請求轉發給指定伺服器,比如配置Google或DNSPOD等DNS Server

            forward                      控制forwarders請求順序,有2個值,frist先到轉發伺服器清單查詢,失敗後再在本地伺服器查詢,only表示僅在轉發伺服器清單查詢

            listen-on                     named服務監聽端口,不能也不需要修改

            max-cache-size          服務緩存最大可用内容容量,預設32M,在多View配置中可以為每個View單獨配置

            notify                          當zone更新後主動通知Slave,有4個值,yes主動通知,no不主動通知,master-only僅通知master,explicit僅通知zone中also-notify的Salve

            recursion                    遞歸查詢,預設yes,在沒有外部網絡連接配接或特殊需求中可以配置為no,以将本伺服器無法解析的請求做失敗響應

       參考示例:

acl allow-query-net  {
        192.168.2.0/24;
};
acl deny-query-net {
        192.168.1.0/24;
};
options {
        listen-on port 53 { any; };
        max-cache-size    64M;
        directory         "/var/named";
        statistics-file   "/var/named/data/named_stats.txt";

        forwarders {8.8.8.8; 8.8.4.4; };

        recursion         yes;
        blackhole         { deny-query-net; };
        allow-query       { allow-query-net; };
        allow-query-cache { allow-query-net; };
};           
0x2 協定與端口

       DNS服務通用服務端口包括UDP53和TCP53,前者用于請求解析,後者用于Master/Slave間ZoneTransfer資料同步,在配置iptables規則時必須注意。

SMB - DNS Server 域名伺服器配置與管理(四)
0x3 Master/Slave ZoneTransfer

       DNS伺服器之間資料同步分為兩種AXFR (Asynchronous Transfer Full Range)全域傳輸和IXFR(Increment Zone Transfer)增量域傳輸,BIND9這兩種協定預設都開啟。為保證Slave Server上緩存記錄的權威性,Slave需要周期性從Master Server同步Zone資料,是以AXFR全域傳統比較容量了解,而IXFR則在域中RR資料比較多且更新頻繁的情況下(比如DDNS等)可以比AXFR更具優勢,能夠更加快速完成資料同步。除了Slave Server周期性項Master Server被動同步外,Master Server也可以主動向Slave Server發出更新通知,就是Notify。

      配置示例:

options {
	listen-on port 53 { any; };
	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; 192.168.2.0/24; };

	forwarders { 8.8.8.8; };
	recursion yes;
	notify yes;

	dnssec-enable yes;
	dnssec-validation yes;
	managed-keys-directory "/var/named/dynamic";
	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
};           

      當Master Server資料更新後可在Slave Server日志中看到其從收到更新通知到執行zone-transfer結束的完整流程(隐去了時間參數):

slave named[6489]: client 192.168.2.250#50982: received notify for zone '2.168.192.in-addr.arpa'
slave named[6489]: zone 2.168.192.in-addr.arpa/IN: Transfer started.
slave named[6489]: transfer of '2.168.192.in-addr.arpa/IN' from 192.168.2.250#53: connected using 192.168.2.251#47133
slave named[6489]: zone 2.168.192.in-addr.arpa/IN: transferred serial 2018061807
slave named[6489]: transfer of '2.168.192.in-addr.arpa/IN' from 192.168.2.250#53: Transfer completed: 1 messages, 14 records, 397 bytes, 0.001 secs (397000 bytes/sec)
slave named[6489]: zone 2.168.192.in-addr.arpa/IN: sending notifies (serial 2018061807)
slave named[6489]: client 192.168.2.250#23267: received notify for zone 'homelab.pub'
slave named[6489]: zone homelab.pub/IN: Transfer started.
slave named[6489]: transfer of 'homelab.pub/IN' from 192.168.2.250#53: connected using 192.168.2.251#53086
slave named[6489]: zone homelab.pub/IN: transferred serial 2018061807
slave named[6489]: transfer of 'homelab.pub/IN' from 192.168.2.250#53: Transfer completed: 1 messages, 16 records, 389 bytes, 0.001 secs (389000 bytes/sec)           
0x4 日志分析

      預設named通過rsyslog将日志寫到/var/log/messages中,以下将日志中常見疑難消息做簡要說明。

1 、[namedxxxx]: error (networkunreachable) resolving 'baidu.com/A/IN': 2001:503:bb3e::2:30#53

      伺服器沒有配置IPv6網絡,但named預設同時運作在IPv4和IPv6協定棧,是以需要在服務配置檔案/etc/named.conf中将以下内容注釋或删除掉

listen-on-v6 port 53 { ::1; };           

     并在named服務的配置檔案/etc/sysconfig/named中加入僅支援IPv4的選項

#echo -e 'OPTIONS="-4"'  >> /etc/sysconfig/named
#systemctl restart named-chroot           
2 、日志未記錄DNS查詢詳細資訊

      在伺服器打開querylog即可記錄詳細日志,再次執行此指令關閉該功能

3 、slave named[xxxx]: client 192.168.2.205:39085 (mirror.zju.edu.cn): query (cache) "mirror.zju.edu.cn/A/IN" denied

      DNS伺服器關閉了遞歸查詢,不允許查詢緩存,僅允許查詢本域權威記錄

4 、slave named[xxxx]: transfer of '2.168.192.in-addr.arpa/IN' from 192.168.2.250#53: failed to connect: host unreachable

      無法連接配接到masterserver進行zone-transfer,推測masterserver系統防火牆iptables沒有放行來自slaveserver對TCP53端口的通路

5、slave named[xxxx]: dumping master file: tmp-XXXXXX: open: permission denied

      這個問題在網絡上有多種不靠譜的觀點,這裡僅對前三甲做介紹。排在第一位的觀點認為是SElinux某個Boolean配置問題,但在homelab.pub中SElinux是Disabled;排在第二位的觀點認為是目錄屬組權限問題,雖然log中有提示permission denied但經驗表明服務系統檔案權限配置錯誤基本無法正常運作;排在第三位的觀點認為是服務參數配置問題,建議在/etc/sysconfig/named檔案增加“ENABLE_ZONE_WRITE=yes” 參數,但BIND9已不正常參數。經深入研究,發現是Salve服務Zone配置檔案路徑錯誤,導緻服務讀取Zone檔案時無法讀取而報錯,但從Master同步過來的緩存資料是可以用于解析服務的,是以Client端并沒有感覺到Slave Server工作狀态有問題。

      在前一篇文章

SMB - DNS Server 域名伺服器配置與管理(三)

 0x2 Slave Server部署章節談到建立homelab.pub域的服務配置named.homelab.pub.zones檔案如下:

zone "homelab.pub" IN {
	type slave;
	masters { 192.168.2.250; };
	file "homelab.pub.zone";
	allow-update { none; };
	};
	zone "2.168.192.in-addr.arpa"  IN {
	type slave;
	masters { 192.168.2.250; };
	file "homelab.pub.rr.zone";
	allow-update    { none; };
};           

       仔細分析得知檔案位置是錯誤的,目前路徑沒有這個檔案,Slave Server讀取的應該是從Master Server同步過來的檔案資訊,檢查服務目錄結構發現應該寫如到/var/named/chroot/var/named/data/目錄中,修改named.homelab.pub.zones檔案如下:

zone "homelab.pub" IN {
	type slave;
	masters { 192.168.2.250; };
	file "data/homelab.pub.zone";
	allow-update { none; };
	};
	zone "2.168.192.in-addr.arpa"  IN {
	type slave;
	masters { 192.168.2.250; };
	file "data/homelab.pub.rr.zone";
	allow-update    { none; };
};           

        然後重新開機named-chroot服務,檢查/var/log/messages發現相關錯誤日志資訊消失,并在/var/named/chroot/var/named/data/目錄發現homelab.pub.rr.zone和homelab.pub.zone兩個新資料檔案:

[root@slave ~]# ll /var/named/chroot/var/named/data/
總用量 220
-rw-r--r--  1 named named    862 6月  26 23:29 homelab.pub.rr.zone
-rw-r--r--  1 named named    740 6月  26 23:29 homelab.pub.zone
-rw-r--r--  1 named named  94525 6月  26 23:29 named.run
-rw-r--r--. 1 named named 116828 6月  24 03:21 named.run-20180624
[root@slave ~]# file /var/named/chroot/var/named/data/homelab.pub.zone 
/var/named/chroot/var/named/data/homelab.pub.zone: data           

繼續閱讀