我已从 Ubuntu 17.10 模板克隆了两个 vSphere 虚拟机。启动后,它们都声明相同的 IP 并争夺它(当 IP 在它们之间切换时,ssh 连接会中断)。
两台机器的主机名和 MAC 地址不同。dhclient
正确声明了两个单独的 IP,但使用的解析器是systemd-networkd
.
答案1
systemd-networkd
使用与 不同的方法来生成 DUID dhclient
。dhclient
默认使用链路层地址同时systemd-networkd
使用的内容/etc/machine-id
。由于虚拟机已克隆,因此它们具有相同的 IP machine-id
,并且 DHCP 服务器为两者返回相同的 IP。
要修复,您需要生成一个新的/etc/machine-id
.根据更改/etc/machine-id 可以吗?,最好的方法是删除/etc/machine-id
并重新启动——大多数系统上的启动过程会/etc/machine-id
自动生成一个新的。感谢 JdeBP 和 Andy Fraley 提供的附加信息。
答案2
网络规划配置怎么样?有一个选项dhcp-configuration
可以使用如下(摘自网络规划示例):
network:
version: 2
ethernets:
enp3s0:
dhcp4: yes
dhcp-identifier: mac
默认情况下它使用 machine-id,但通过更改此功能,我们可以“强制”它不这样做。
dhcp-identifier (scalar)
When set to `mac'; pass that setting over to systemd-networkd to use the device's
MAC address as a unique identifier rather than a RFC4361-compliant Client ID. This
has no effect when NetworkManager is used as a renderer.