配置rndc實現對BIND的管理

rndc介紹:
rndc是BIND安裝包提供的一種控制域名服務運行的工具,可以實現在不重啓BIND的情況下對zone及解析記錄等配置進行更新。
軟件包安裝:
首先要安裝BIND軟件包才可以使用rndc工具,rndc和BIND可以不在同一台服務器上部署。

[root@localhost ~]# yum install -y bind

rndc配置部分:
生成rndc的通信密鑰及配置文件,/dev/urandom是Linux下用來生成隨機數的一個文件,這裏使用-r選項調用它是為了生成通信密鑰。

[root@localhost ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf

編輯剛剛生成的配置文件。

[root@localhost ~]# vim /etc/rndc.conf

轉到第9行,其定義了要管理的BIND服務器的地址,按照需求對其進行修改,本實驗中我的BIND服務器的地址是192.169.1.101.

default-server 192.168.1.101;

BIND配置部分:
使用vim打開rndc的配置文件,轉到第十四行,此行直到末尾都是要加入到/etc/named.conf文件中的,加入後可以按照自己的需求進行修改,比如説第21行的inet選項是用來定義監聽本服務器的哪些接口的(當然是監聽和rndc相連的接口啦),如果想監聽所有接口則將其改為0.0.0.0。第22行是定義此BIND服務器允許接受哪些rndc的管理,將127.0.0.1改成運行rndc的設備的IP地址就行。最後別忘了把註釋去掉,否則配置文件是不生效的。

14 # Use with the following in named.conf, adjusting the allow list as needed:
15 # key "rndc-key" {
16 # algorithm hmac-md5;
17 # secret "YAkaS9u8kADIcBMslszUaw==";
18 # };
19 #
20 # controls {
21 # inet 127.0.0.1 port 953
22 # allow { 127.0.0.1; } keys { "rndc-key"; };
23 # };
24 # End of named.conf

以下是我的/etc/named.conf文件的完整配置(第40行到末尾是新增的配置),僅供參考,切勿複製。
運行BIND的服務器的IP:192.168.1.101
運行rndc的服務器的IP:192.168.1.100

  1 //
  2 // named.conf
  3 //
  4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  5 // server as a caching only nameserver (as a localhost DNS resolver only).
  6 //
  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
  8 //
  9
 10 options {
 11 listen-on port 53 { any; };
 12 listen-on-v6 port 53 { ::1; };
 13 directory "/var/named";
 14 dump-file "/var/named/data/cache_dump.db";
 15 statistics-file "/var/named/data/named_stats.txt";
 16 memstatistics-file "/var/named/data/named_mem_stats.txt";
 17 allow-query { any; };
 18 recursion yes;
 19
 20 dnssec-enable yes;
 21 dnssec-validation yes;
 22 dnssec-lookaside auto;
 23
 24 /* Path to ISC DLV key */
 25 bindkeys-file "/etc/named.iscdlv.key";
 26
 27 managed-keys-directory "/var/named/dynamic";
 28 };
 29
 30 logging {
 31 channel default_debug {
 32 file "data/named.run";
 33 severity dynamic;
 34 };
 35 };
 36
 37 include "/etc/named.rfc1912.zones";
 38 include "/etc/named.root.key";
 39
 40 # Use with the following in named.conf, adjusting the allow list as needed:
 41 key "rndc-key" {
 42 algorithm hmac-md5;
 43 secret "YAkaS9u8kADIcBMslszUaw==";
 44 };
 45 #
 46 controls {
 47 inet 192.168.1.101 port 953
 48 allow { 192.168.1.100; } keys { "rndc-key"; };
 49 };
 50 # End of named.conf

保存後重啓named服務器

[root@localhost ~]# server named restart

使用rndc連接BIND並進行管理
在使用rndc連接BIND前一定要確保兩台Linux服務器的時間同步,否則會報錯(我做實驗的時候卡在這個坑裏整整一天)
可以手工修改系統時間也可以與NTP服務器同步,若你的實驗用機器無法鏈接外網,又不想手工配置時間,則可以參考下面這篇文章,將其中一台機器配置為NTP,供另一台機器同步。

CentOS 6下配置NTP網絡時間服務器


啓動rndc並連接BIND。

[root@localhost ~]# rndc status
WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 1
worker threads: 1
number of zones: 19
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

可以看到,上面的輸出信息中包含了一條警告,這個其實沒什麼影響的,如果你有強迫症可以使用下面這條命令開啓動rndc,這樣就不會看到那條警告了。

[root@localhost ~]# rndc -c /etc/rndc.conf status

rndc常用管理命令:

status                    #顯示bind服務器的工作狀態
reload                    #重新加載配置文件和區域文件
reload zone_name          #重新加載指定區域
reconfig                  #重讀配置文件並加載新增的區域
querylog                  #關閉或開啓查詢日誌
dumpdb                    #將高速緩存轉儲到轉儲文件 (named_dump.db)
freeze                    #暫停更新所有動態zone
freeze zone [class [view]]#暫停更新一個動態zone
flush [view]              #刷新服務器的所有高速緩存
flushname name            #為某一視圖刷新服務器的高速緩存
stats                     #將服務器統計信息寫入統計文件中
stop                      #將暫掛更新保存到主文件並停止服務器
halt                      #停止服務器,但不保存暫掛更新
trace                     #打開debug, debug有級別的概念,每執行一次提升一次級別
trace LEVEL               #指定 debug 的級別, trace 0 表示關閉debug
notrace                   #將調試級別設置為 0
restart                   #重新啓動服務器(尚未實現)
addzone zone [class [view]] { zone-options } #增加一個zone
delzone zone [class [view]]                  #刪除一個zone
tsig-delete keyname [view]#刪除一個TSIG key
tsig-list                 #查詢當前有效的TSIG列表
validation newstate [view]#開啓/關閉dnssec

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code