使用 NetworkManager 在 Linux 上添加网桥接口的步骤如下:

  1. 打开终端
  2. 获取当前连接状态: nmcli con show
  3. 添加新的网桥: nmcli con add type bridge ifname br0
  4. 创建子网卡: nmcli con add type bridge-slave ifname eno1 master br0
  5. 打开 br0: nmcli con up br0

让我们从细节层面看看如何创建一个名为 br0 的网桥。

获取当前网络配置

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  1e8a0670-7e49-3304-bb9e-b5787ef9bd5a  ethernet  ens33

这里显示我有一个使用 ens33 网卡的有线连接。我将要创建一个名为 br0 的网桥,连接到 ens33

创建一个名为 br0 的网桥

$ sudo nmcli con add ifname br0 type bridge con-name br0
Connection 'br0' (8a7724d7-4925-415e-ab20-2400ff367775) successfully added.
 
$ sudo nmcli con add type bridge-slave ifname ens33 master br0 # 注意改设备名称
Connection 'bridge-slave-ens33' (5faf78e8-92f2-424f-a7c3-95b83a1bf572) successfully added.
 
$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
br0                 8a7724d7-4925-415e-ab20-2400ff367775  bridge    br0
Wired connection 1  1e8a0670-7e49-3304-bb9e-b5787ef9bd5a  ethernet  ens33
bridge-slave-ens33  5faf78e8-92f2-424f-a7c3-95b83a1bf572  ethernet  --

我们可以禁用 STP:

$ sudo nmcli con modify br0 bridge.stp no
$ nmcli con show
$ nmcli -f bridge con show br0

最后一条命令展示了网桥参数:

bridge.mac-address:                     --
bridge.stp:                             no
bridge.priority:                        32768
bridge.forward-delay:                   15
bridge.hello-time:                      2
bridge.max-age:                         20
bridge.ageing-time:                     300
bridge.group-forward-mask:              0
bridge.multicast-snooping:              yes
bridge.vlan-filtering:                  no
bridge.vlan-default-pvid:               1
bridge.vlans:                           --

如何打开网桥

你必须先关闭 Wired connection 1(也就是网桥连接的网络),然后打开 br0:

$ sudo nmcli con down "Wired connection 1"
$ sudo nmcli con up br0
$ nmcli con show

使用 ip 命令来查看 IP 信息:

$ ip a s
$ ip a s br0

参考资料