![qemu/kvm 中的虚拟接口名称](https://linux22.com/image/552371/qemu%2Fkvm%20%E4%B8%AD%E7%9A%84%E8%99%9A%E6%8B%9F%E6%8E%A5%E5%8F%A3%E5%90%8D%E7%A7%B0.png)
我有一个安装了 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
您可以使用任何您喜欢的名字。