我有一个可用的 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 服务器允许的更新类型。