我有一個可用的 dns+dhcp 伺服器。當客戶端從 dhcpd 伺服器收到 IP 時,它會將主機名稱傳送到 dhcpd+dns 伺服器並且運作正常。但只有一個問題:假設一個名為nagios1.myzone.com 的客戶端,由於某種原因我將其刪除並替換為另一個同名但不同的Linux 發行版,當然還有不同的DHCID(dhcp 客戶端id )的客戶端。 dns+dhcp 伺服器傳回此錯誤:
client @0x6g12280f2z00 192.168.0.4#48193/key dhcp.myzone.com: updating zone 'myzone.com/IN': update unsuccessful: nagios1.myzone.com: 'name not in use' prerequisite not satisfied (YXDOMAIN)
Nov 26 20:38:11 dns1 named[1541]: client @0x6g12280f2z00 192.168.0.4#37309/key dhcp.myzone.com: updating zone '.myzone.com/IN': update unsuccessful: nagios1..myzone.com/TXT: 'RRset exists (value dependent)' prerequisite not satisfied (NXRRSET)
Nov 26 20:38:11 dns1 dhcpd[1548]: Forward map from nagios1..myzone.com to 192.168.0.110 FAILED: Has an address record but no DHCID, not mine.
我有一個解決方法,只需刪除包含這些行的 TXT 記錄
vim file.txt
zone myzone.com.
server dns1.myzone.com
update del nagios1.myzone.com. 600 IN A 192.168.0.110
send
zone myzone.com.
server dns1.myzone.com
update del nagios1.myzone.com. 600 IN TXT "3147358c8b5523979cfecd8d67f26b6678"
send
zone 0.168.192.in-addr.arpa.
server dns1.myzone.com.
update del 110.0.168.192.in-addr.arpa. 600 IN PTR nagios1.myzone.com.
send
然後使用指令 nsupdate file.txt
我的問題是:是否可以強製或建立 DHCID/TXT 記錄的動態更新?我已經使用這些設定配置了 dns
zone "myzone.com." IN {
type master;
file "/var/named/data/myzone.zone";
update-policy {
grant dhcp.myzone.com. wildcard * A TXT SRV CNAME MX DHCID;
};
動態更新適用於所有經過測試的 A 和 PTR,為什麼不適用於 TXT/DHCID?
答案1
DHCID 記錄是識別哪個用戶端目前持有對應的其他同名動態更新 DNS 記錄的方案的一部分;看RFC 4701。
TXT 記錄是用於相同目的的舊方案:如果您使用 ISCdhcpd
作為 DHCP 伺服器並且已設置,ddns-update-style standard;
則將使用 DHCID 記錄。如果您已設置,ddns-update-style interim;
則將使用 TXT 記錄。
如果您希望 DHCP 用戶端始終能夠覆蓋其目前持有的 IP 位址的 DNS 記錄,而不管 DHCID/TXT 記錄如何,您需要設定您的DHCP伺服器with update-conflict-detection off;
(或 ISC 以外的 DHCP 伺服器的等效項dhcpd
)。這將使其僅刪除舊記錄並建立新記錄,即使存在不同的客戶端 ID 記錄也是如此。
如果只允許 DHCP 伺服器(和管理員)進行 DDNS 更新,這可能是可以接受的。如果允許用戶端將自己的 DDNS 更新直接傳送到 DNS 伺服器,則停用衝突偵測可能會允許惡意用戶端冒充區域中的其他用戶端或重要伺服器,具體取決於 DNS 伺服器允許的更新類型。