我有一个可用的 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 记录是用于相同目的的旧方案:如果您使用 ISC
dhcpd
作为 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 服务器允许的更新类型。