dnsmasq 为不同的主机分配相同的 IPv4 地址

dnsmasq 为不同的主机分配相同的 IPv4 地址

我在 Linux 上使用 DHCP 服务器时遇到问题dnsmasq。我使用 Arch Linux 作为服务器和客户端的操作系统。如果重要的话,它们是虚拟机。问题是为dnsmasq具有不同主机名和 mac 地址的不同主机分配相同的 IPv4 地址。但我注意到位于的租约文件/var/lib/misc/dnsmasq.leases仅包含一行

1630202239 00:0c:29:83:86:01 10.30.1.124 host2 ff:bc:9a:4a:2d:00:02:00:00:ab:11:40:39:4e:16:5a:cf:77:e9

即使两个客户端已连接(但都具有相同的 IP)。我还注意到,在我重新连接任何客户端并更改时间戳、mac 和主机名后,该行会更新。因此,对于第二台主机,它将dnsmasq.leases如下所示:

1630202878 00:50:56:23:c1:94 10.30.1.124 host3 ff:bc:9a:4a:2d:00:02:00:00:ab:11:40:39:4e:16:5a:cf:77:e9

如您所见,时间戳、mac 地址和主机名不同,但最后一个参数(据我所知称为硬件地址或客户端标识符)对于两个主机是相同的。我猜可能是因为主机是相同的克隆虚拟机,只有主机名和 mac 地址不同。我还尝试了另一个带有另一个操作系统的虚拟机,它运行良好。此外,我可以为您提供dnsmasq服务日志:

Aug 28 09:57:09 host dnsmasq-dhcp[382]: DHCPDISCOVER(ens35) 00:50:56:23:c1:94
Aug 28 09:57:09 host dnsmasq-dhcp[382]: DHCPOFFER(ens35) 10.30.1.124 00:50:56:23:c1:94
Aug 28 09:57:09 host dnsmasq-dhcp[382]: DHCPREQUEST(ens35) 10.30.1.124 00:50:56:23:c1:94
Aug 28 09:57:09 host dnsmasq-dhcp[382]: DHCPACK(ens35) 10.30.1.124 00:50:56:23:c1:94 host3
Aug 28 09:57:19 host dnsmasq-dhcp[382]: DHCPDISCOVER(ens35) 00:0c:29:83:86:01
Aug 28 09:57:19 host dnsmasq-dhcp[382]: DHCPOFFER(ens35) 10.30.1.124 00:0c:29:83:86:01
Aug 28 09:57:19 host dnsmasq-dhcp[382]: DHCPREQUEST(ens35) 10.30.1.124 00:0c:29:83:86:01
Aug 28 09:57:19 host dnsmasq-dhcp[382]: DHCPACK(ens35) 10.30.1.124 00:0c:29:83:86:01 host2

如您所见,两个主机的 MAC 地址仍然不同,但分配的 IP 相同。顺便说一句,我尝试使用 ISC DHCPD dhcp 服务器,但遇到了同样的问题。希望得到您的帮助!提前致谢!

答案1

否,您的 DHCP 服务器工作正常 – 在 DHCP 中,客户端标识符选项始终优先于实际 MAC 地址。因此,就服务器而言,这些请求来自同一主机。

实际问题是,所有虚拟机都指定了相同的客户端 ID。就您而言,客户端 ID 的类型为 0xFF(“不透明”),这是“systemd-networkd”常用的类型,并且是从文件中生成的/etc/machine-id。因此,如果您从模板部署虚拟机,确保每个机器上的机器 ID 都已重置就像重置 SSH 主机密钥一样。

或者,您可以将 systemd-networkd 配置为使用传统的基于 MAC 地址的客户端标识符(类型 0x01“以太网”),如上一篇文章所述:Ubuntu 18.04 上 DHCP 客户端的 IP 地址错误

相关内容