自動目錄
設定範例
網域 example.com
主機名稱 ddns
IP 163.17.40.100
# named -v
BIND 9.9.4-RedHat-9.9.4-51.el7 (Extended Support Version)
安裝
設定
# vi /etc/named.conf
假設要建立網域 example.com,在zone "." IN 下面加入
zone "example.com" {
type master;
file "data/example.com.static"; # 建立靜態的內容
allow-update {127.0.0.1;}; # 開放 127.0.0.1 進行動態更新
allow-transfer { none; }; # slave 主機,可能一部或多部,若無請寫 none
};
其中檔案 data/example.com.static
# vi /var/named/data/example.com.static
$TTL 43200 ; 12 hours
example.com. SOA ddns.example.com. root.dns.example.com. (
2017102704 ; serial
36000 ; refresh (10 hours)
7200 ; retry (2 hours)
36000 ; expire (10 hours)
43200 ; minimum (12 hours)
)
example.com. NS ddns.example.com.
ddns.example.com. A 163.17.40.100
重新啟動
建立腳本檔
# touch dns.script.txt
update add example.com. 10800 MX 10 ASPMX.L.GOOGLE.COM.
update add proxy.example.com. 10800 CNAME britannica
update add ceag.example.com. 10800 A 140.128.55.100
update add elesson.example.com. 10800 AAAA 2001:288:5400:4::1000
update add wges.example.com. 10800 TXT "google-site-verification=VHi9xhYVUM8IUicq8IRl7Tje-LKc"
send
上面的IP和記錄只是範例
執行你的腳本
-D 是進入 debug mode,執行時才知道大概哪行有問題
-v 是執行腳本檔,也可以省略
執行完後會多一個 example.com.static.jnl 檔:
1. 執行完就會生效,不必重啟
2. jnl 檔可以刪除,若named重啟restart時,jnl會把記錄寫到 example.com.static 中,但reload不會。
3. 未來若要刪除得使用指令
4. 重新啟動時,已加入記錄不會消失,得用nsupdate來刪除,除非這時沒有jnl檔
5. 重覆執行腳本檔不會怎樣,重覆加入不會怎樣
已知的困難
1. 沒辦法清掉設定上的記錄,就算重啟也一樣
2. 無法動態加上zone
指令錯誤訊息
1. 下指令send出現 couldn't get address for 'your.doamin.name': not found 錯誤
可能原因:忘記下 server 127.0.0.1 這個指令
2. 下指令send出現 update failed: NOTZONE 錯誤
可能原因:設定非該網域資料,例如設定的 zone是example.com,要新增example.com,則指令必需打完整的FQDN:
update add example.com 60 A 1.2.3.2
3. 新增的資料沒有出現
可能原因:忘了下達send指令。
4. update failed: NOTAUTH
你修改的網域並不屬於你,可能你在 named.conf中沒有加入這個網域
5. zone x.x.x/IN: journal rollforward failed: not exact
後面的序號比原來的序號小,例如動態增加記錄未寫到靜態檔卻又修改靜態檔
6. zone x.x.x/IN: journal rollforward failed: journal out of sync with zone
靜態檔和動態檔不一致,解決方法:把jnl刪掉放棄動態檔重新載入。
參考資料
[1] abelyang@TWNIC http://phorum.study-area.org/index.php?topic=40717.0