強制更新BIND之DDNS jnl檔至zone

強制更新BIND之DDNS jnl檔至zone

有時設定好BIND提供的DDNS功能時,卻想要立即看到它的結果不等它在設定時間更新時需要怎麼做?經過許多資料的參考後有些心得提供給大家及自已往後參考,

這篇文章之前,Danny也是DNS Server的門外漢,大部分都是由網路文章中取得的知識,在讀此篇之前必需要了解如何啟用BIND之DDNS動態域名更新功能此篇才可能對您有幫助,提供個人看過的網站:

雖然有些文章是舊文,但主要是觀念正確就能完成利用BIND來架DDNS,當然此中也有安全性問題必需要克服的,一旦你提供此功能對外接口也會造成一些網路”特殊”人事的觀注,安全性討論可以參考:

使用此功能主要一開始想要利用Synology NAS提供操作性極佳的DDNS設定介面,再利寫好的的Script去執行Synology提供的nsupdate更新自行架設的DNS Server,並且在Synology上新增一個自定DDNS更新的服務供應商,如此一來本來使用在動態IP的NAS就能有固定的網域名稱來使用:

以上如果具備BIND的DDNS架設技巧後會知道在更新網域的IP時都會有個暫存檔副檔名為.jnl,設定的更新時間一到會自動將更新內容回寫至zone,如果你需要立即更新的話,除了將BIND重新啟動外,還有另一個方式立即更新,就是使用rndc,在此之前要先建立RNDC key,參考:

建立好後就能利用rndc命令加上建好的key與DNS Server溝通,BIND 9開始使用此方式來控制DNS Server,所以使用時必需要先建立好RDNC key,更詳細的說明參考:

以上再次強調,對此Danny只是初學者,將自已建立成功的經驗分享,以上資訊觀念有誤歡迎來信指教。

接下來才是關鍵,單純執行rdnc命令會列出參數使用方式,要來利用其中兩個參數:

freeze  Suspend updates to all dynamic zones.
thaw        Enable updates to all dynamic zones and reload them.


  • freeze 暫停所有動態更新的zones

  • thaw 致能所有動態更新的內容及重新載入內容

利用這兩個命令可以讓所有的動態zones回存至原本的zones設定檔,當然如果你只想單獨只對某個zone操作可以改用指定的方式:

freeze zone [class [view]]
thaw zone [class [view]]

下面要操作的也是只對某個zone操作,並且指定rndc key的檔案名稱:

rndc -k rndc key freeze 網域名稱
rndc -k rndc key thaw 網域名稱

範例: 網域名稱:abc.org rndc key:rndc.key

rndc -k /etc/bind/rndc.key freeze abc.org
rndc -k /etc/bind/rndc.key thaw abc.org

連續執行完後會看到訊息:

A zone reload and thaw was started.
Check the logs to see the result.

表示已經更新完成,此時可以去cat一下你的zone file查看ip是否有更新正確即完成。