GNU/Linux 配置桥接网卡与避坑(KVM桥接网卡)
本文最后更新于 64 天前。

虽然 KVM 提供了一个开箱即用的桥接网卡 virbr0 但这是给 NAT 网络的虚拟机用的,它分配的 IP 段特殊,使得外部无法访问虚拟机,据说连宿主机都无法访问(但是在我测试时,宿主机是可以访问的)。

所以需要配置桥接网卡,本文将以 Debian 11 为例,讲述 GNU/Linux 配置桥接网卡的注意事项。

提到桥接网卡,一般的教程都会告诉你这么做:

查看网络接口

$ ip a

/etc/network/interfaces 添加以下内容(以 eno1 为例)

auto br0
iface br0 inet static
bridge_ports eno1
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

或者

auto br0
iface br0 inet dhcp
bridge_ports eno1

重启网络服务

sudo systemctl restart networking.service

但实际上并没有什么卵用,配置完桥接网卡,要么重启网络服务时报错,要么直接无法上网。

我起初也是搞得一头雾水,直到后来在 Debian Wiki 上看了官方文档,才知道网络配置里还少了一下内容:

iface eno1 inet manual

因为根据官方文档描述,加入网桥的设备,不能获取 IP 地址。

你以为这样就完了?坑就在这里!实测发现,在 Debian 12 ,重启网络服务后,同样报错。这就需要我们先把 /etc/network/interfaces 先恢复为原来的配置以正常访问网络,然后安装 brctl(以 Debian 12 为例)。

$ sudo apt install brctl

此时再重启网络服务,就可以看到桥接网卡正常工作了。如果还是报错的话,试试 flush 一下加入网桥的设备和网桥再试试。

上一篇
下一篇