DNS slave 要怎麼更新zone,和zone更新有關的指令。

URL Link //n.sfs.tw/16559

2025-11-11 16:38:29 By 張○○

zone 傳輸(AXFR / IXFR) 有關的指令為 rndc。

 

確認 slave 的狀態

在slave的主機中

sudo rndc status

# rndc status
version: 9.9.4-RedHat-9.9.4-61.el7_5.1 <id:8f9657aa>
CPUs found: 8
worker threads: 8
UDP listeners per interface: 8
number of zones: 834
debug level: 0   <== 見下面說明
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 25/0/1000
tcp clients: 4/100  <== 連線中/最大 連線tcp用戶數
server is up and running

debug level: 0

0:表示沒有開除錯模式(預設值)。

如果你用 rndc trace 或 rndc trace N(例如 rndc trace 3)開啟除錯層級,這個值就會變高。

可以用 rndc notrace 關閉除錯。

xfers running: 0

xfers = zone transfers(區域傳輸)。這表示目前正在進行的 zone 傳輸數量。

0 → 沒有正在同步的 zone。

如果 slave 正在從 master 抓 zone(AXFR / IXFR),這個數字會暫時變成 1 或更多。

可用 rndc status 觀察同步是否卡住。

xfers deferred: 0

這表示等待中的 zone 傳輸數量。

有時候同時要同步的 zone 太多,或 transfers-in 限制太低(見 named.conf),

其他 zone 傳輸就會被「暫緩(deferred)」。

0 表示目前沒有等待的 zone 傳輸。

若看到非 0(例如 3),就代表有 3 個 zone 正在排隊等待同步。

可以在 options 區塊調整:

options {

    transfers-in 10;   // 預設是 10

};

recursive clients: 25/0/1000

格式:目前遞迴查詢數 / 被拒絕的遞迴請求 / 最大可容許的遞迴查詢量

 

確認slave 單一個zone

使用 rndc zonestatus 指令來查看單一個zone的更新情況,很適合拿來糾錯,例如要查詢 example.com 這個網域目前情況。

這個指令可在 slave 或master下。

[MASTER]

# sudo rndc zonestatus example.com
name: example.com
type: primary
files: host/example.com.static
serial: 2022112751
nodes: 788
last loaded: Tue, 11 Nov 2025 03:53:29 GMT
secure: no
dynamic: yes
frozen: no
reconfigurable via modzone: no

[SLAVE]

# rndc zonestatus example.com
name: example.com
type: slave
files: slave/example.com.hosts
serial: 2022112751
nodes: 788
last loaded: Thu, 20 Nov 2025 05:03:32 GMT
next refresh: Tue, 09 Dec 2025 11:45:34 GMT
expires: Thu, 08 Jan 2026 02:39:42 GMT
secure: no
dynamic: no
reconfigurable via modzone: no

上面欄位的意思:

dynamic: yes/no

表示 這個 zone 是否允許動態更新(Dynamic DNS, DDNS)。

✔ dynamic = no

不允許 使用 nsupdate 或 DHCP 自動更新 DNS 記錄。

區域檔案是 靜態 zone file(例如 .hosts),只有手動修改 zone file + reload 才會更新。

不會產生 .jnl 日誌檔(journal file)。

✔ dynamic = yes

表示此 zone 是 動態區域。

允許以下方式修改 DNS:

 

frozen: yes/no

frozen: yes/no 是專門針對 dynamic zone(動態區域) 的狀態標記

frozen: no 時這個 zone 處於正常狀態,允許動態更新(如果 dynamic=yes)、允許寫入 .jnl 檔、zone file 可以被 BIND 自動更新。

也就是 正常可寫、可動態更新。

 

當 zone 變成 frozen(凍結)時:

凍結zone

rndc freeze example.com

解凍zone

rndc thaw example.com

reconfigurable via modzone: yes / no

表示這個 zone 是否能透過 named 自身的 “inline reconfiguration” 來修改 zone 設定。

這通常與 BIND 的 modzone API / Inline Signing / Dynamic Update 有關。

 

✔ reconfigurable via modzone = no

此 zone 的設定(如 master/slave, allow-update, options)

不能透過 rndc 或動態方式直接修改。

若要變更設定,你需要:

修改 named.conf

reload / restart named

 

✔ reconfigurable via modzone = yes

表示 zone 設定可以在 BIND 運作中修改,例如:

自動新增 NSEC/NSEC3 設定

inline signing 自動調整

動態套用某些 zone options

不需修改 named.conf

 

刪除 zone 快取再 reload

sudo rndc freeze example.com
sudo rm /var/named/slaves/db.example.com
sudo rndc thaw example.com

這是比較暴力但有效的方法。

freeze:暫停該 zone 的寫入活動。

thaw:解除 freeze 並重新讀取 zone(會觸發 zone 重新同步)。


 

其它指令

手動加入更新的排程

rndc refresh example.com

強制重抓 zone

rndc retransfer example.com

重新載入設定

rndc reload