我使用的是 Fedora 25,内核为 4.11.9,安装了 kvm 和 bridge-utils。我按照http://www.linux-kvm.org/page/Networking#Public_Bridge,以获取公共网桥。我的机器上还安装了 Docker(它会创建自己的网桥和虚拟接口)。
当我运行 时ip link add br0 type bridge
,一切都正常。但之后,当我运行ip link set eth0 master br0
我的网络时,它停止工作。接口 eth0 是我用来访问本地网络并退出互联网的接口。
可能出了什么问题?我该如何解决此问题?
答案1
当您将以太网接口添加到网桥时,您还需要将 ipv4 设置从 eth0 移至 br0。因此,首先清除 eth0 设置,然后将 ipv4/6 地址/网关/等提供给 br0。
我个人认为使用 NetworkManager 的 GUI(或 TUI)来执行此任务很方便。
答案2
这个方法对我有用(使用 NetworkManager CLI):
https://gist.github.com/plembo/f7abd2d9b6f76e7afdece02dae7e5097
以 root 身份执行以下步骤:
> nmcli con show
Ethernet 1 e923bc3e-d77f-4f68-8b33-eaa9955f437d ethernet eth0
识别以太网连接和物理设备。从现在开始,作为示例,它们分别是“以太网 1”和“eth0”。现在创建一个桥接网络:
> nmcli con add ifname br0 type bridge con-name 'Bridge 1'
并将物理设备添加为该新连接的从属设备:
> nmcli con add type bridge-slave ifname eth0 master 'Bridge 1'
现在,事情会表现如下:
> nmcli con show
Ethernet 1 e923bc3e-d77f-4f68-8b33-eaa9955f437d ethernet eth0
Bridge 1 c2a4218f-70b8-488e-83a6-49530ad79d7c bridge br0
bridge-slave-eth0 92fab279-110a-48ec-9e55-f240353f4fb2 ethernet --
如果您使用 DHCP:
> nmcli con mod 'Bridge 1' ipv4.method auto
如果不,
> nmcli con mod 'Bridge 1' ipv4.method manual
> nmcli con mod 'Bridge 1' ipv4.addresses 10.1.1.16/24
> nmcli con mod 'Bridge 1' ipv4.gateway 10.1.1.1
> nmcli con mod 'Bridge 1' ipv4.dns '10.1.1.1,8.8.8.8,8.8.4'
此外,不需要 STP,因此请禁用它:
> nmcli con mod 'Bridge 1' bridge.stp no
现在关闭以太网连接并打开桥接:
> nmcli con down 'Ethernet 1'
> nmcli con up 'Bridge 1'
目前,当您重新启动计算机时,以太网 1 连接会继续绑定到 eth0 设备,但我们不希望出现这种情况。为了让网桥从属设备可以绑定到物理设备,这最后一个设备必须是空闲的,因此您必须禁用以太网连接的自动连接标志:
> nmcli con mod 'Ethernet 1' connection.autoconnect no
其他步骤:
- 此外,您可能需要打开 NetworkManager GUI,并编辑 bridge-slave-eth0 连接以将其限制为 eth0 物理设备。
- 此时,eth0 物理设备可能被锁定到“以太网 1”连接,您可能需要重新启动。