Dns

dhcp 和 dns 動態更新,是否可以覆蓋/更新 DHCID 記錄?

  • November 26, 2019

我有一個可用的 dns+dhcp 伺服器。當客戶端從 dchpd 伺服器接收到 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?

DHCID 記錄是方案的一部分,用於辨識目前哪個客戶端擁有相應的其他動態更新的同名 DNS 記錄;參見RFC 4701

TXT 記錄是用於相同目的的舊方案:如果您使用 ISCdhcpd作為 DHCP 伺服器並已設置ddns-update-style standard;,則將使用 DHCID 記錄。如果您已設置ddns-update-style interim;,則將使用 TXT 記錄。

如果您希望 DHCP 客戶端始終能夠覆蓋其目前持有的 IP 地址的 DNS 記錄,無論 DHCID/TXT 記錄如何,您都需要為您的DHCP 伺服器配置update-conflict-detection off;(或等效於 DHCP 伺服器以外的國際標準委員會dhcpd)。這將使它只刪除舊記錄並創建新記錄,即使存在不同的客戶 ID 記錄。

如果只允許 DHCP 伺服器(和管理員)進行 DDNS 更新,這可能是可以接受的。如果您允許客戶端將自己的 DDNS 更新直接發送到 DNS 伺服器,禁用衝突檢測可能會允許惡意客戶端冒充該區域中的其他客戶端或重要伺服器,具體取決於 DNS 伺服器允許的更新類型。

引用自:https://unix.stackexchange.com/questions/554290