如何在 Ubuntu Server 20 中使用 QEMU-KVM 和 Netplan 设置桥接路由?

如何在 Ubuntu Server 20 中使用 QEMU-KVM 和 Netplan 设置桥接路由?

这里是非常新的堆栈交换用户,所以如果我以任何方式破坏协议,请提前道歉。另外,我仍然是一个 Linux 和路由新手,所以请原谅我的无知。

基本问题是我无法让 qemu-kvm、libvirt 和 netplan 一起工作。对我来说,它们似乎破坏了彼此的网络配置,但我想提出这个问题,看看我是否可能没有正确使用它们。

安装 ubuntu 服务器 20.04.3 LTS 后,我的网络接口和路由如下所示(通过“ip 路由”):

在此输入图像描述

我成功安装了 qemu-kvm、libvirt-daemon-system、libvirt-clients 等。这会向系统添加虚拟桥和虚拟接口:

在此输入图像描述

接下来,我编辑 /etc/netplan/<default.yaml> 中的 netplan 配置文件。这是我的文件:

在此输入图像描述

它通过 sudo netplangenerate 成功编译,并通过 sudo netplan try“成功”应用,输入确认,但然后......什么也没有。我查看网络接口并看到以下内容:

在此输入图像描述

现有IP地址全部丢失。未创建桥接,未连接接口。

我查看路线并看到以下内容:

在此输入图像描述

除了到虚拟网桥的路由外,所有路由都消失了。回顾一下接口状态,看起来它们有一个工作的链路层,只是没有工作的路由。

为什么当我应用网络规划时,路由消失了?

我这样做正确吗?或者有人知道在 QEMU-KVM、libvirt 和 netplan 之间创建/管理网络接口和 ip 路由的任何当前问题吗?

仅供参考,我尝试重新安装和不同的安装顺序,成功创建并寻址 nic#2 上的桥,然后安装 qemu-kvm 和 libvirt。结果是 netplan 实现的网桥消失,kvm 虚拟接口和网桥出现,如上面的图片 4 所示,并且 netplan 能够应用,但没有做出可见的更改,并且所有路由都丢失。

感谢您对此的帮助!

更新:我现在通过创建启动脚本解决了这个问题。我无法通过 netplan 实例化桥,但如果我事先使用“ip link”手动创建它,它似乎可以工作:

sudo ip link add br0 type bridge
sudo ip link set eno1 up
sudo ip link set eno2 up
sudo ip link set eno2 master br0
sudo ip link set br0 up
sudo netplan apply
sudo dhclient -v -r

这是服务文件:

[Unit]
After=network.service
[Service]
ExecStart=/bin/bash /home/<username>/Scripts/netplanApply.sh
[Install]
WantedBy=default.target

我还有一个新的 netplan config.yaml 文件:

network:
    ethernets:
        eno1:
            dhcp4: true
            dhcp6: false
        eno2:
            dhcp4: false
            dhcp6: false
    bridges:
        br0:
            interfaces: [eno2]
            macaddress: 11:41:14:11:41:14
            dhcp4: true
            dhcp6: false
    version: 2
    renderer: networkd

在观察启动时的详细输出时,我想我可以看到“网络服务”服务无法启动(红色),但很难说。有没有办法将启动时的详细输出转储到文件中以供稍后检查?感觉 qemu-kvm 或 libvirt 安装正在破坏默认的网络配置,或者以某种方式干扰启动时的 netplan 实现。

相关内容