第 6 章 配置网络桥接
网络桥接是一个链路层设备,它可根据 MAC 地址列表转发网络间的流量。网桥通过侦听网络流量并了解连接到每个网络的主机来构建 MAC 地址表。例如,您可以使用 Red Hat Enterprise Linux 主机上的软件桥接模拟硬件桥接或在虚拟化环境中,将虚拟机(VM)集成到与主机相同的网络中。
桥接需要在桥接应该连接的每个网络中有一个网络设备。当您配置网桥时,网桥被称为 controller
,其使用的设备为 ports
。
您可以在不同类型的设备中创建桥接,例如:
- 物理和虚拟以太网设备
- 网络绑定
- 网络团队(team)
- VLAN 设备
由于 IEEE 802.11 标准指定在 Wi-Fi 中使用 3 个地址帧以便有效地使用随机时间,您无法通过 Ad-Hoc 或者 Infrastructure 模式中的 Wi-Fi 网络配置网桥。
6.1. 使用 nmcli
配置网络桥接
要在命令行中配置网络桥接,请使用 nmcli
实用程序。
先决条件
- 在服务器中安装两个或者两个以上物理或者虚拟网络设备。
- 要将以太网设备用作网桥的端口,必须在服务器中安装物理或者虚拟以太网设备。
要使用 team、bond 或 VLAN 设备作为网桥的端口,您可以在创建桥接时创建这些设备,或者预先创建它们,如:
步骤
创建网桥接口:
# nmcli connection add type bridge con-name bridge0 ifname bridge0
这个命令会创建一个名为
bridge0
的网桥,输入:显示网络接口,并记录您要添加到网桥中的接口名称:
# nmcli device status DEVICE TYPE STATE CONNECTION enp7s0 ethernet disconnected -- enp8s0 ethernet disconnected -- bond0 bond connected bond0 bond1 bond connected bond1 ...
在本例中:
-
没有配置
enp7s0
和enp8s0
。要将这些设备用作端口,请在下一步中添加连接配置集。 -
bond0
和bond1
已有连接配置文件。要将这些设备用作端口,请在下一步中修改其配置集。
-
没有配置
将接口分配给网桥。
如果没有配置您要分配给网桥的接口,为其创建新的连接配置集:
# nmcli connection add type ethernet slave-type bridge con-name bridge0-port1 ifname enp7s0 master bridge0 # nmcli connection add type ethernet slave-type bridge con-name bridge0-port2 ifname enp8s0 master bridge0
这些命令为
enp7s0
和enp8s0
创建配置文件,并将它们添加到bridge0
连接中。如果要为网桥分配现有连接配置集:
将这些连接的
master
参数设置为bridge0
:# nmcli connection modify bond0 master bridge0 # nmcli connection modify bond1 master bridge0
这些命令将名为
bond0
和bond1
的现有连接配置文件分配给bridge0
连接。重新激活连接:
# nmcli connection up bond0 # nmcli connection up bond1
配置 IPv4 设置:
要将这个网桥设备用作其它设备的端口,请输入:
# nmcli connection modify bridge0 ipv4.method disabled
- 要使用 DHCP,不需要任何操作。
要为
bridge0
连接设置静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:# nmcli connection modify bridge0 ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253' ipv4.dns-search 'example.com' ipv4.method manual
配置 IPv6 设置:
要将这个网桥设备用作其它设备的端口,请输入:
# nmcli connection modify bridge0 ipv6.method disabled
- 要使用无状态地址自动配置(SLAAC),不需要任何操作。
要为
bridge0
连接设置静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器设置,请输入:# nmcli connection modify bridge0 ipv6.addresses '2001:db8:1::1/64' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd' ipv6.dns-search 'example.com' ipv6.method manual
可选:配置网桥的其他属性。例如,要将
bridge0
的生成树协议(STP)优先级设为16384
,请输入:# nmcli connection modify bridge0 bridge.priority '16384'
默认情况下启用 STP。
激活连接:
# nmcli connection up bridge0
验证端口是否已连接,并且
CONNECTION
列是否显示端口的连接名称:# nmcli device DEVICE TYPE STATE CONNECTION ... enp7s0 ethernet connected bridge0-port1 enp8s0 ethernet connected bridge0-port2
当您激活连接的任何端口时,NetworkManager 也会激活网桥,但不会激活它的其它端口。您可以配置 Red Hat Enterprise Linux 在启用桥接时自动启用所有端口:
启用网桥连接的
connection.autoconnect-slaves
参数:# nmcli connection modify bridge0 connection.autoconnect-slaves 1
重新激活桥接:
# nmcli connection up bridge0
验证
使用
ip
工具来显示作为特定网桥端口的以太网设备的链接状态:# ip link show master bridge0 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:62:61:0e brd ff:ff:ff:ff:ff:ff 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:9e:f1:ce brd ff:ff:ff:ff:ff:ff
使用
bridge
工具来显示作为任意网桥设备端口的以太网设备状态:# bridge link show 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100 5: enp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state forwarding priority 32 cost 100 6: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge1 state blocking priority 32 cost 100 ...
要显示特定以太网设备的状态,请使用
bridge link show dev < ethernet_device_name>
命令。
其他资源
-
nm-settings(5)
手册页 -
bridge(8)
手册页 - 重启 NetworkManager 服务后NetworkManager 会复制连接
- 如何配置具有 VLAN 信息的网桥?