![为什么我克隆的 Linux 虚拟机会争夺相同的 IP](https://linux22.com/image/126306/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%85%8B%E9%9A%86%E7%9A%84%20Linux%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BC%9A%E4%BA%89%E5%A4%BA%E7%9B%B8%E5%90%8C%E7%9A%84%20IP.png)
我已从 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.