为什么我克隆的 Linux 虚拟机会争夺相同的 IP

为什么我克隆的 Linux 虚拟机会争夺相同的 IP

我已从 Ubuntu 17.10 模板克隆了两个 vSphere 虚拟机。启动后,它们都声明相同的 IP 并争夺它(当 IP 在它们之间切换时,ssh 连接会中断)。

两台机器的主机名和 MAC 地址不同。dhclient正确声明了两个单独的 IP,但使用的解析器是systemd-networkd.

答案1

systemd-networkd使用与 不同的方法来生成 DUID dhclientdhclient 默认使用链路层地址同时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.

相关内容