我的 VirtualBox 中有一台虚拟机,我想将其用作模板/映像,因此我克隆了它。然后我同时启动了原始虚拟机和克隆虚拟机(以模拟我正在处理的某项工作的服务器集群),但是,两个实例都分配了相同的 IP 地址。这可能是我们的 DHCP 中的一个错误吗?我认为 VirtualBox 使用它来获取 IP 地址?或者可能是我设置虚拟机的方式出了问题?无论如何,我最终想解决这个问题,以便我可以同时使用同一映像的两个虚拟机。
答案1
您可能还需要更改machine-id
:
适用于 Ubuntu(来宾虚拟机):
sudo rm -f /etc/machine-id
sudo dbus-uuidgen --ensure=/etc/machine-id
sudo rm /var/lib/dbus/machine-id
sudo dbus-uuidgen --ensure
reboot
您也可以在 Ubuntunetplan
配置文件中尝试此参数:
dhcp4: yes
dhcp-identifier: mac
答案2
这被称为 IP 冲突,可能会给网络带来严重问题。
您可以重新初始化克隆虚拟机的 MAC 地址;这仅意味着生成一个新的随机 MAC 地址。在克隆的虚拟机上,单击“设置”>>“网络”>>“高级”,然后单击两个圆形箭头以生成新的 MAC 地址。您的虚拟机需要关闭。启动时,您的 DHCP 服务器应为虚拟机分配不同的 IP 地址。
另请注意,当您克隆您的虚拟机时,您应该看到一个带有“重新初始化 MAC”字样的复选框,它会克隆虚拟机并生成一个新的 MAC,而不是克隆它。
如果您好奇的话,克隆虚拟机通常用于对虚拟机进行完整备份,在这种情况下,您需要 MAC 和 IP 相同,以防您必须使用备份。对于您克隆虚拟机以构建集群的情况,您需要在每次克隆时重新初始化 MAC。
更新 1 回复您 2013 年 10 月 8 日的评论。
确保 IP 地址不是静态设置的。您在问题中提到,虚拟机应该从 DHCP 获取其 IP。如果是这种情况,配置应该如下所示。对于基于 Debian 的系统,它将位于 /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
对于基于 Redhat 的系统,网络配置位于 /etc/sysconfig/network-scripts/ifcfg-eth0
您的第二条评论提到缺少 eth0。您有 eth1 吗?由于您的计算机更改了 mac 地址,操作系统会将原始 mac 保留为 eth0,并通常将 eth1 分配给新 mac。要重置 eth* 设备,以便您拥有 eth0 而不是 eth1,您需要清除 udev 网络规则。
处理网络可能会很麻烦。一种选择是删除克隆的虚拟机,再次克隆原始虚拟机并选中“重新初始化 mac”。我不确定这是否能解决您的问题,但也许可以。
答案3
答案4
我今天也遇到了同样的情况。我为我的 Solaris VM 使用 NAT 适配器和仅主机以太网适配器。当我刷新仅主机适配器的 MAC 地址时,克隆的 IP 发生了变化。