两个并行运行的 VirtualBox VM 分配了相同的 IP

amp*_*ent 10 virtualbox dhcp ip virtual-machine

我的 VirtualBox 中有一个 VM,想将其用作模板/映像,因此我克隆了它。然后我同时启动了原始和克隆(为我正在处理的事情模拟服务器集群),但是,两个实例都分配了相同的 IP 地址。这可能是我们 DHCP 中的一个错误,我认为 VirtualBox 使用它来获取 IP 地址?或者也许是我设置虚拟机的方式?无论如何,我最终对解决此问题感兴趣,以便我可以同时使用同一映像的两个 VM。

tbe*_*nz9 13

这称为 IP 冲突,可能会导致网络出现严重问题。

可以重新初始化克隆虚拟机的MAC地址;这只是意味着生成一个新的随机一个。在克隆的 VM 上单击设置 >> 网络 >> 高级,然后单击两个圆形箭头以生成新的 MAC。您的虚拟机需要关闭。当它启动时,您的 DHCP 服务器应该为虚拟机分配一个不同的 IP 地址。

另外仅供参考,当您克隆 VM 时,您应该看到一个带有“重新初始化 MAC”字样的复选框,这将克隆 VM 并生成新的 MAC,而不是克隆它。

如果您好奇,克隆虚拟机通常用于对虚拟机进行完整备份,在这种情况下,您希望 MAC 和 IP 相同,以防您必须使用备份。对于克隆 VM 以构建集群的情况,您需要在每个克隆上重新初始化 MAC。在此处输入图片说明

更新 1 针对您在 2013 年10 月 8 日发表的评论。

确保 IP 地址不是静态设置的。您在问题中提到虚拟机应该从 DHCP 获取它的 IP。如果是这种情况,配置应如下所示。对于基于 debian 的系统,它可以在 /etc/network/interfaces 中找到

auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)

对于基于 redhat 的系统,网络配置位于 /etc/sysconfig/network-scripts/ifcfg-eth0

您的第二条评论提到缺少 eth0。你有eth1吗?由于您的计算机更改了mac地址,因此操作系统将原始mac保留为eth0,并且通常将eth1分配给新mac。要重置 eth* 设备以使您拥有 eth0 而不是 eth1,您需要清除 udev 网络规则。

与网络打交道可能会让人毛骨悚然。一种选择是删除您克隆的虚拟机并再次克隆原始虚拟机并选中“重新初始化 mac”。我不确定它会解决您的问题,但可能会。

  • 我这样做并重新启动了两个虚拟机,但它们仍然分配了相同的 IP :( (4认同)

t7e*_*t7e 7

这里还没有人提到它。

您可能还需要更改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

Run Code Online (Sandbox Code Playgroud)

你也可以在 Ubuntunetplan配置文件中试试这个参数:

      dhcp4: yes
      dhcp-identifier: mac
Run Code Online (Sandbox Code Playgroud)