使 qemu VM 中的所有 Linux 网络接口(桥接)使用 dhcp

使 qemu VM 中的所有 Linux 网络接口(桥接)使用 dhcp

我有一个小应用程序,它接收内核代码并启动虚拟机。我一直用它来进行内核开发。当我想使用不同的内核代码启动虚拟机时,它非常有用且速度非常快。该应用程序使用 qemu,并根据给定的选项动态生成 qemu 命令。我面临的问题是网络接口名称不断变化。

初始设置是这样的,接口名称是ens*,我在配置中进行了以下配置以/etc/network/interfaces将它们配置为 dhcp

allow-hotplug ens3
iface ens3 inet dhcp

我设置了多个,以确保如果名称从 推送到ens3ens7可能是由于添加了 qcow 作为 scsi 设备),网络接口ens7仍会得到配置。它工作正常。

现在有了新的 Linux 内核 6.4-rc,我发现接口的名称显示为 enp0s*。现在我的/etc/network/interfaces配置不起作用了。我无法/etc/network/interfaces根据内核不断更改文件,因为这违背了简单地更改内核代码路径和启动虚拟机的目的。顺便说一句,这在 2 年内运行良好,适用于从 4.19 到 6.1 的内核(还没有测试过 6.2 和 6.3)

我的问题是,是否有一种默认的网络配置方法,以便所有网络接口都使用 dhcp。基本上,类似

allow-hotplug all
iface all inet dhcp

答案1

有多种方法可以做到这一点。

你可以

  • 在启动过程中生成 /etc/network/interfaces,使用指定的名称
  • 禁用设备重命名(最初分配的 eth0、eth1... 仍可通过net.ifnames=0在内核命令行上指定来使用
  • 使用 udev 规则根据 MA​​C 地址分配名称

相关内容