qemu/kvm 中的虚拟接口名称

qemu/kvm 中的虚拟接口名称

我有一个安装了 debian-squeeze 的映像,并且我使用它创建了两个覆盖映像来启动两个(几乎相同的)虚拟机。

当我单独启动它们(将它们连接到 vde-switch 并在 qemu/kvm 命令行中指定 mac 地址)时,一切都按我预期的方式工作。

然而,当我同时运行它们时,发生了一些奇怪的事情:

第一台启动的机器按预期工作并创建“eth0”接口,但第二台机器没有创建“eth0”而是创建了“eth1”。

有人可以解释一下这种行为吗?

确保所有虚拟机中的虚拟网络接口具有相同名称的最佳方法是什么?

非常感谢!

答案1

大多数Linux系统使用udev将接口名称与特定 MAC 地址绑定(以便具有多个 NIC 的计算机在启动时具有一致的接口名称)。但是,当 MAC 地址确实发生变化(例如在具有不同 MAC 地址集的 VM 中启动时)但您不想分配新的接口名称时,这会导致此问题。要清除这些映射,请删除 中的相应文件/etc/udev/rules.d/(通常名为70-persistent-net.rules)并重新启动。对于您来说,您需要在创建主映像时执行此操作。

答案2

它们是否在同一台机器上启动?它们如何与外界沟通?您是否在主机上使用任何桥接接口(如 br0)?您可以粘贴启动两个虚拟机时使用的 qemu 命令吗?

答案3

如果您的客户是 Debian 10,您可以轻松地重命名界面/etc/network/interfaces

rename enp1s0=mynw0
auto mynw0
iface mynw0 inet dhcp

接下来激活它:

ifup mynw0

您可以使用任何您喜欢的名字。

相关内容