ISC-DHCP-服务器从 DNS 服务器中删除错误的动态 DNS 名称

ISC-DHCP-服务器从 DNS 服务器中删除错误的动态 DNS 名称

我正在使用 Debian Bullseye 来运行具有两个来宾的 KVM(基于内核的虚拟机)vdeb02-10-basevdeb03-10-base.两台客户机都安装了 Debian Buster。出于测试目的,vdeb03-10-base只是 的克隆vdeb02-10-base,使用该virt-clone实用程序来确保它具有唯一的系统参数,如 mac 地址等。在我使用的所有设备(主机、访客)上systemd-networkd

如果我开始vdeb02-10-base启用 DHCP 以从 ISC-DHCP 服务器获取 IP 地址,则一切正常,如 DHCP 服务器日志所示:

Oct 05 18:43:49 vnetsvr30-10 dhcpd[1534]: DHCPDISCOVER from 52:54:00:ee:f5:0a via ens1
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: DHCPOFFER on 192.168.30.104 to 52:54:00:ee:f5:0a (vdeb02-10-base) via ens1
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: DHCPREQUEST for 192.168.30.104 (192.168.30.10) from 52:54:00:ee:f5:0a (vdeb02-10-base) via ens1
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: Wrote 56 leases to leases file.
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: DHCPACK on 192.168.30.104 to 52:54:00:ee:f5:0a (vdeb02-10-base) via ens1
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: Added new forward map from vdeb02-10-base.home.hoeft-online.de. to 192.168.30.104
Oct 05 18:43:50 vnetsvr30-10 dhcpd[1534]: Added reverse map from 104.30.168.192.in-addr.arpa. to vdeb02-10-base.home.hoeft-online.de.

动态 DNS 名称已映射到 DNS 服务器,因此我可以使用以下命令查询它:

~$ dig +search +noall +answer vdeb02-10-base
vdeb02-10-base.home.hoeft-online.de. 3600 IN A  192.168.30.104

如果我启动,vdeb03-10-baseDHCP 服务器日志会显示以下内容:

Oct 05 18:44:55 vnetsvr30-10 dhcpd[1534]: DHCPDISCOVER from 52:54:00:ed:c5:df (vdeb02-10-base) via ens1
Oct 05 18:44:55 vnetsvr30-10 dhcpd[1534]: ICMP Echo reply while lease 192.168.30.104 valid.
Oct 05 18:44:55 vnetsvr30-10 dhcpd[1534]: Abandoning IP address 192.168.30.104: pinged before offer
Oct 05 18:44:55 vnetsvr30-10 dhcpd[1534]: Removed forward map from vdeb02-10-base.home.hoeft-online.de. to 192.168.30.104
Oct 05 18:44:55 vnetsvr30-10 dhcpd[1534]: Removed reverse map on 104.30.168.192.in-addr.arpa.
Oct 05 18:44:57 vnetsvr30-10 dhcpd[1534]: DHCPDISCOVER from 52:54:00:ed:c5:df via ens1
Oct 05 18:44:58 vnetsvr30-10 dhcpd[1534]: DHCPOFFER on 192.168.30.95 to 52:54:00:ed:c5:df (vdeb03-10-base) via ens1
Oct 05 18:44:58 vnetsvr30-10 dhcpd[1534]: DHCPREQUEST for 192.168.30.95 (192.168.30.10) from 52:54:00:ed:c5:df (vdeb03-10-base) via ens1
Oct 05 18:44:58 vnetsvr30-10 dhcpd[1534]: DHCPACK on 192.168.30.95 to 52:54:00:ed:c5:df (vdeb03-10-base) via ens1
Oct 05 18:44:58 vnetsvr30-10 dhcpd[1534]: Added new forward map from vdeb03-10-base.home.hoeft-online.de. to 192.168.30.95
Oct 05 18:44:58 vnetsvr30-10 dhcpd[1534]: Added reverse map from 95.30.168.192.in-addr.arpa. to vdeb03-10-base.home.hoeft-online.de.

为什么 DHCP-Server 表示来自DHCPDISCOVERvdeb02-10-base不是来自vdeb03-10-base? Mac 地址和主机名不同。当然,DHCP 服务器使用 ping 测试意味着网络上存在 IP 地址冲突。然后它会删除 的 DNS 映射vdeb02-10-base并将其替换为 的映射,vdeb03-10-base结果我无法vdeb02-10-base再解析其名称。

这里发生了什么?为什么 DHCP 服务器要替换 DNS 服务器上的主机名,而不是仅添加第二个来宾的名称?问题可能出在哪里?在客户机上,或者在带有标准网桥的主机上,或者在 DHCP 服务器上,或者使用 systemd-networkd?也许有一个选项可以用在/etc/dhcp/dhcpd.conf

答案1

从 DHCP 服务器的日志来看,它似乎无法区分两个不同的设备,尽管它们具有不同的名称和 MAC 地址。显然这不用于识别网络上的设备。因为vdeb03-10-base是克隆,vdeb02-10-base肯定有克隆后没有改变的不同标识(名字和mac地址都变了)。

看看man systemd.network这可能是什么,我发现ClientIdentifier=可以设置为“苹果“ 或者 ”杜伊德如果将此设置为mac两个设备名称都会动态正确映射到 DNS 服务器,但这并不能解决问题的根源。必须有一个 DUID 在两个设备上仍然相同,并且可能会导致其他问题。

我发现可以设置DHCP的DUID,/etc/systemd/networkd.conf但下一个问题是如何计算它?在man networkd.conf我发现:

如果“DUIDType=vendor”,则将使用“43793”作为供应商标识符 (systemd) 和 machine-id(5) 的哈希内容生成 DUID 值。如果未指定 DUIDType=,则这是默认值。

所以问题的根源在于机器 ID两位客人都是一样的。

但改起来有一些麻烦。如何做到这一点我发现:更改/etc/machine-id 可以吗?。简而言之,你必须这样做:

~$ sudo rm -f /etc/machine-id
~$ sudo dbus-uuidgen --ensure=/etc/machine-id
~$ sudo rm /var/lib/dbus/machine-id
~$ sudo dbus-uuidgen --ensure

相关内容