欢迎转载,但请在开头或结尾注明原文出处【blog.chaosjohn.com】
在译文《通过 libvirt 和 KVM 使用桥接网络》(原文<How to use bridged networking with libvirt and KVM>)中,提到了如何用ip
命令创建桥接网卡br0,以及如何用virsh命令将br0同步给libvirt虚拟机知道。
1 | # 创建新网桥br0 |
1 | # 启用额外的物理网卡 |
这边我们需要注意,创建br0没啥问题,但是将物理网卡添加到br0,是需要引起注意的。原文中提到:
注意,在这种情况下,你不能使用你的主以太网接口,因为一旦它被添加到网桥,你就会失去连接,因为它将失去它的 IP 地址。在这种情况下,我们将使用一个额外的接口,enp0s29u1u1:这是一个由连接在我的机器上的以太网转USB适配器提供的接口。
所以,如果是单网卡的主板,且没有额外的网卡(USB或PICe),这样的配置是非常危险的,因为系统会立马断网,且无法自动恢复。
但也不用很担心系统挂了,因为配置没有持久化(持久化在原文中有写,但不适用于改用了netplan的Ubuntu),只需重启系统即可恢复。
那怎么办呢?
我想到我另一台rk3356的ARM单板,正运行着ProxmoxVE,单物理网卡但同时每台虚拟机/容器都是从上级路由器直接获取IP地址,就是通过vmbr0桥接了物理网卡
1 | $ cat /etc/network/interfaces |
参考这个方案改在Ubuntu上不适用,因为找不到/etc/network/interfaces
文件,Ubuntu 18.04 开始改用了netplan
经过几番搜索,在另一篇文章中《kvm单网卡桥接模式》,发现了适用于netplan的配置方式
1 | $ vim /etc/netplan/01-network-manager-all.yaml |
然后用新创建的br0给虚拟机定义一个新的“网络”
1 | # 任意路径创建文件 |
然后libvirt就能用这个br0桥接网卡,从上级路由器获取IP地址并且联网了,而不是NAT
模式。
参考资料:
通过 libvirt 和 KVM 使用桥接网络 / How to use bridged networking with libvirt and KVM
kvm单网卡桥接模式 ⇒ netplan
KVM虚拟机网络配置 Bridge方式,NAT方式 / linux中KVM桥接网卡br0 / Linux 下如何配置桥接网卡,可以实现主机与虚拟机互通?/ 转: Linux下单网卡多vlan多虚拟机 ⇒ /etc/sysconfig/network-scripts/ifcfg-br0
how to create sub-interface ⇒ netplan
KVM Bridged Network Not Working / OpenStack Neutron单网卡桥接模式访问外网 ⇒ /etc/network/interfaces
最后,如果该文对读者有些许帮助,考虑下给点捐助鼓励一下呗😊