当前位置: 首页 > ai >正文

链路聚合与软件网桥

链路聚合与软件网桥

在 CentOS 7 中,链路聚合(以team模式为例)和软件网桥均是网络配置中的重要技术,分别用于提升网络可靠性 / 吞吐量和实现二层网络互联,具体简述如下:

一、链路聚合(Team)

链路聚合是将多个物理网络接口(NIC)通过逻辑方式组合为一个 “组队接口”(如team0),实现故障转移或提高吞吐量,由teamd服务管理,具备模块化设计和灵活扩展性

核心特点:
  • 工作模式:通过

    teamd
    

    支持多种聚合策略,常见包括:

    • activebackup(主备模式):仅主接口工作,备接口在主接口故障时自动切换,保障冗余
    • roundrobin(轮询模式):数据包通过所有接口轮询传输,提升吞吐量
    • loadbalance(负载均衡):基于流量和哈希函数分配数据包,均衡接口负载
    • broadcast(广播模式):通过所有接口广播数据包,实现容错
  • 典型应用:服务器双网卡冗余(主备模式避免单点故障)、高带宽场景下的多网卡流量聚合

关键配置逻辑:
  1. 创建组队接口(如team0)并指定模式(如主备)
  2. 为组队接口配置 IP 地址
  3. 将物理网卡(如ens38ens39)作为 “从接口” 加入组队
  4. 激活接口后,可通过teamdctl team0 state查看组队状态,验证故障切换等功能

二、软件网桥

软件网桥是通过软件模拟的二层网络设备,基于 MAC 地址转发数据包,用于连接多个网络接口(物理或虚拟),实现同一广播域内的设备互通

核心功能:
  • MAC 地址学习:记录数据包来源 MAC 地址与对应接口的映射关系,构建 “转发表”
  • 报文转发:根据数据包的目的 MAC 地址,查询转发表并从对应接口转发,未匹配时广播转发
典型应用:
  • 虚拟化场景(如 KVM):将虚拟机虚拟网卡与物理网卡通过网桥连接,实现虚拟机与物理网络的互通
  • 多接口二层互联:将多个物理网卡接入网桥,使连接不同网卡的设备处于同一网段,直接通信
关键配置逻辑:
  1. 创建网桥接口(如bridge0
  2. (可选)为网桥配置 IP 地址(用于管理或作为网关)
  3. 将物理 / 虚拟网卡(如ens40ens41)作为 “从接口” 加入网桥
  4. 激活网桥后,接口间通过 MAC 地址自动转发数据包;若需网桥实现跨网段路由,需开启 IP 转发(net.ipv4.ip_forward = 1

演示:

两台主机都添加了两块网卡:

在这里插入图片描述

在这里插入图片描述

使用ifconfig查看添加的网卡ens36和ens37都没有相应的IP

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.200.129  netmask 255.255.255.0  broadcast 192.168.200.255inet6 fe80::135:4bc3:c1b1:efaf  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:e4:65:28  txqueuelen 1000  (Ethernet)RX packets 68  bytes 13231 (12.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 34  bytes 5201 (5.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.200.130  netmask 255.255.255.0  broadcast 192.168.200.255inet6 fe80::7c42:9496:9572:3664  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:e4:65:32  txqueuelen 1000  (Ethernet)RX packets 51  bytes 9404 (9.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 32  bytes 5021 (4.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

删除ens36和ens37对应的网络连接

[root@syf ~]# nmcli connection show 
NAME                UUID                                  TYPE  
ens33               1b997c48-8eff-4fa9-be0d-5e2acd617368  ethern
virbr0              26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge
Wired connection 1  5d0b9ad8-d21e-344a-8a1f-5207b018d317  ethern
Wired connection 2  967b7884-0a51-392d-90a5-aabb110453a9  ethern
[root@syf ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (5d0b9ad8-d21e-344a-8a1f-5207b018d317) successfully deleted.
[root@syf ~]# nmcli connection delete Wired\ connection\ 2
Connection 'Wired connection 2' (967b7884-0a51-392d-90a5-aabb110453a9) successfully deleted.
[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    virbr0 
[root@syf ~]# nmcli connection show 
NAME                UUID                                  TYPE  
ens33               1b997c48-8eff-4fa9-be0d-5e2acd617368  ethern
virbr0              26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge
Wired connection 1  5d0b9ad8-d21e-344a-8a1f-5207b018d317  ethern
Wired connection 2  967b7884-0a51-392d-90a5-aabb110453a9  ethern
[root@syf ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (5d0b9ad8-d21e-344a-8a1f-5207b018d317) successfully deleted.
[root@syf ~]# nmcli connection delete Wired\ connection\ 2
Connection 'Wired connection 2' (967b7884-0a51-392d-90a5-aabb110453a9) successfully deleted.
[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    virbr0 

现在创建一个逻辑上的组,把两张网卡添加到逻辑上的组来

[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    virbr0 
[root@syf ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}'
Connection 'team0' (f1996105-4695-42c9-b8b9-73b0c5b1a86e) successfully added.
[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    virbr0 
team0   f1996105-4695-42c9-b8b9-73b0c5b1a86e  team      team0  
[root@syf ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.10/24 ipv4.method manual connection.autoconnect yes
[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    virbr0 
team0   f1996105-4695-42c9-b8b9-73b0c5b1a86e  team      team0  
[root@syf ~]# nmcli connection add con-name team0-ens36 ifname ens36 type team-slave master team0
Connection 'team0-ens36' (13778e94-1b60-4c3b-87f4-4d106237007a) successfully added.
[root@syf ~]# nmcli connection add con-name team0-ens37 ifname ens37 type team-slave master team0
Connection 'team0-ens37' (7d37afc4-bcd1-41c8-9e7a-18a2e1fb8eb0) successfully added.
[root@syf ~]# nmcli connection show 
NAME         UUID                                  TYPE      DEV
ens33        1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens
team0        f1996105-4695-42c9-b8b9-73b0c5b1a86e  team      tea
team0-ens36  13778e94-1b60-4c3b-87f4-4d106237007a  ethernet  ens
team0-ens37  7d37afc4-bcd1-41c8-9e7a-18a2e1fb8eb0  ethernet  ens
virbr0       26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    vir
[root@syf ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@syf ~]# nmcli connection show 
NAME         UUID                                  TYPE      DEV
ens33        1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens
team0        f1996105-4695-42c9-b8b9-73b0c5b1a86e  team      tea
team0-ens36  13778e94-1b60-4c3b-87f4-4d106237007a  ethernet  ens
team0-ens37  7d37afc4-bcd1-41c8-9e7a-18a2e1fb8eb0  ethernet  ens
virbr0       26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    vir
[root@syf ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:1e brd ff:ff:ff:ff:ff:ffinet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::cfb5:ab2f:e08d:cbd2/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ff
7: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ffinet 192.168.200.10/24 brd 192.168.200.255 scope global noprefixroute team0valid_lft forever preferred_lft foreverinet6 fe80::96a2:39b4:bf4a:d74e/64 scope link noprefixroute valid_lft forever preferred_lft forever

ens36与ens37MAC地址和team0是一样的MAC地址,一个组队共用一个MAC地址

状态信息:

哪一块网卡先添加进来,就先在工作

[root@syf ~]# teamdctl team0 state
setup:runner: activebackup
ports:ens36link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0ens37link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0
runner:active port: ens36

另一边主机先添加ens37:

[root@syf2 ~]# nmcli connection show 
NAME                UUID                                  TYPE     
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet 
virbr0              740a3db6-0814-49c0-8c40-d9edfce76e83  bridge   
Wired connection 1  29967413-4a94-318d-a665-b7e12f6c3f43  ethernet 
Wired connection 2  5d95aa12-ceda-3f5a-89df-59c733112a7a  ethernet 
[root@syf2 ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (29967413-4a94-318d-a665-b7e12f6c3f43) successfully deleted.
[root@syf2 ~]# nmcli connection delete Wired\ connection\ 2
Connection 'Wired connection 2' (5d95aa12-ceda-3f5a-89df-59c733112a7a) successfully deleted.
[root@syf2 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0  740a3db6-0814-49c0-8c40-d9edfce76e83  bridge    virbr0 
[root@syf2 ~]# 
[root@syf2 ~]# nmcli connection shio
Error: argument 'shio' not understood. Try passing --help instead.
[root@syf2 ~]# 
[root@syf2 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0  740a3db6-0814-49c0-8c40-d9edfce76e83  bridge    virbr0 
[root@syf2 ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}'
Connection 'team0' (c3e9603f-6859-478a-a598-3c07dfa1aae8) successfully added.
[root@syf2 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0  740a3db6-0814-49c0-8c40-d9edfce76e83  bridge    virbr0 
team0   c3e9603f-6859-478a-a598-3c07dfa1aae8  team      team0  
[root@syf2 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.20/24 ipv4.method manual connection.autoconnect yes
[root@syf2 ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@syf2 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0  740a3db6-0814-49c0-8c40-d9edfce76e83  bridge    virbr0 
team0   c3e9603f-6859-478a-a598-3c07dfa1aae8  team      team0  
[root@syf2 ~]# nmcli connection add con-name team0-ens37 ifname ens37 type team-slave master team0
Connection 'team0-ens37' (a4c6d381-8898-4b44-b275-db85aa75e64c) successfully added.
[root@syf2 ~]# nmcli connection add con-name team0-ens36 ifname ens36 type team-slave master team0
Connection 'team0-ens36' (645de175-ccc5-414c-bfab-325180e89d39) successfully added.
[root@syf2 ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@syf2 ~]# nmcli connection show 
NAME         UUID                                  TYPE      DEVICE
ens33        c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33 
team0        c3e9603f-6859-478a-a598-3c07dfa1aae8  team      team0 
team0-ens36  645de175-ccc5-414c-bfab-325180e89d39  ethernet  ens36 
team0-ens37  a4c6d381-8898-4b44-b275-db85aa75e64c  ethernet  ens37 
virbr0       740a3db6-0814-49c0-8c40-d9edfce76e83  bridge    virbr0
[root@syf2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:86:4f:27 brd ff:ff:ff:ff:ff:ffinet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::ba2e:aa59:b30d:be33/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP group default qlen 1000link/ether 00:0c:29:86:4f:3b brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP group default qlen 1000link/ether 00:0c:29:86:4f:3b brd ff:ff:ff:ff:ff:ff
7: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:86:4f:3b brd ff:ff:ff:ff:ff:ffinet 192.168.200.20/24 brd 192.168.200.255 scope global noprefixroute team0valid_lft forever preferred_lft foreverinet6 fe80::321b:aa4d:55da:f4c9/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@syf2 ~]# teamdctl team0 state
setup:runner: activebackup
ports:ens36link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0ens37link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0
runner:active port: ens37

两边可以进行通信:

[root@syf ~]# ping 192.168.200.20
PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.
64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.468 ms
64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.573 ms
64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.583 ms
64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=1.74 ms
^C
--- 192.168.200.20 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.468/0.842/1.747/0.525 ms

此时ens36正在工作,我们现在给ens36,down掉

[root@syf ~]# nmcli connection down team0-ens36
Connection 'team0-ens36' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@syf ~]# nmcli connection show 
NAME         UUID                                  TYPE      DEV
ens33        1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens
team0        f1996105-4695-42c9-b8b9-73b0c5b1a86e  team      tea
team0-ens37  7d37afc4-bcd1-41c8-9e7a-18a2e1fb8eb0  ethernet  ens
virbr0       26736ee7-52ac-4b22-8226-1ff3a13cfe76  bridge    vir
team0-ens36  13778e94-1b60-4c3b-87f4-4d106237007a  ethernet  -- 

然后再来ping

[root@syf ~]# ping 192.168.200.20
PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.
64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.468 ms
64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.573 ms
64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.583 ms
64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=1.74 ms
^C
--- 192.168.200.20 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.468/0.842/1.747/0.525 ms

因为此时是ens37在工作了

[root@syf ~]# teamdctl team0 state
setup:runner: activebackup
ports:ens37link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0
runner:active port: ens37

软件网桥:

我们两台主机各添加两块网卡:

在这里插入图片描述

在这里插入图片描述

ens36与ens37的连接删掉

主机1:

[root@syf ~]# nmcli connection show 
NAME                UUID                                  TYPE  
ens33               1b997c48-8eff-4fa9-be0d-5e2acd617368  ethern
virbr0              ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge
Wired connection 2  967b7884-0a51-392d-90a5-aabb110453a9  ethern
Wired connection 1  5d0b9ad8-d21e-344a-8a1f-5207b018d317  ethern
[root@syf ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (5d0b9ad8-d21e-344a-8a1f-5207b018d317) successfully deleted.
[root@syf ~]# nmcli connection delete Wired\ connection\ 2
Connection 'Wired connection 2' (967b7884-0a51-392d-90a5-aabb110453a9) successfully deleted.

主机2:

[root@syf2 ~]# nmcli connection show 
NAME                UUID                                  TYPE     
ens33               c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet 
virbr0              70ef9413-78bc-4240-8627-cd8b76f181e7  bridge   
Wired connection 2  5d95aa12-ceda-3f5a-89df-59c733112a7a  ethernet 
Wired connection 1  29967413-4a94-318d-a665-b7e12f6c3f43  ethernet 
[root@syf2 ~]# nmcli connection delete Wired\ connection\ 1
Connection 'Wired connection 1' (29967413-4a94-318d-a665-b7e12f6c3f43) successfully deleted.
[root@syf2 ~]# nmcli connection delete Wired\ connection\ 2
Connection 'Wired connection 2' (5d95aa12-ceda-3f5a-89df-59c733112a7a) successfully deleted.

涉及到转发,两边开启IP转发功能:

[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    virbr0 
[root@syf ~]# vim /etc/sysctl.conf
...
net.ipv4.ip_forward = 1    //
~                                                               
~  
[root@syf ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@syf2 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  ens33  
virbr0  70ef9413-78bc-4240-8627-cd8b76f181e7  bridge    virbr0 
[root@syf2 ~]# vim /etc/sysctl.conf 
...
net.ipv4.ip_forward = 1
~                                                                  
~  
[root@syf2 ~]# sysctl -p
net.ipv4.ip_forward = 1

添加网桥的组队:

[root@syf ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
ens33   1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0  ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    virbr0 
[root@syf ~]# nmcli connection add con-name bridge0 ifname bridge0 type bridge 
Connection 'bridge0' (f0d724e1-9993-4854-a86d-5a1c485c56c4) successfully added.
[root@syf ~]# nmcli connection show 
NAME     UUID                                  TYPE      DEVICE 
ens33    1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0   ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    virbr0 
bridge0  f0d724e1-9993-4854-a86d-5a1c485c56c4  bridge    bridge0
[root@syf ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:1e brd ff:ff:ff:ff:ff:ffinet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::cfb5:ab2f:e08d:cbd2/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:32 brd ff:ff:ff:ff:ff:ff
7: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether b2:3d:57:bf:c5:6c brd ff:ff:ff:ff:ff:ff

ens36 00:0c:29:e4:65:28

ens37 00:0c:29:e4:65:32

br0 b2:3d:57:bf:c5:6c

给网桥添加IP地址:

[root@syf ~]# nmcli connection show 
NAME     UUID                                  TYPE      DEVICE 
ens33    1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0   ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    virbr0 
bridge0  f0d724e1-9993-4854-a86d-5a1c485c56c4  bridge    bridge0
[root@syf ~]# nmcli connection modify bridge0 ipv4.addresses 192.168.200.30/24 ipv4.method manual connection.autoconnect yes
[root@syf ~]# nmcli connection up bridge0 
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@syf ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:1e brd ff:ff:ff:ff:ff:ffinet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::cfb5:ab2f:e08d:cbd2/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:32 brd ff:ff:ff:ff:ff:ff
7: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether b2:3d:57:bf:c5:6c brd ff:ff:ff:ff:ff:ffinet 192.168.200.30/24 brd 192.168.200.255 scope global noprefixroute bridge0valid_lft forever preferred_lft forever

MAC地址没变,已有IP

ens36与ens37加入到网桥:

[root@syf ~]# nmcli connection show 
NAME     UUID                                  TYPE      DEVICE 
bridge0  f0d724e1-9993-4854-a86d-5a1c485c56c4  bridge    bridge0
ens33    1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  ens33  
virbr0   ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    virbr0 
[root@syf ~]# nmcli connection add con-name bridge0-ens36 ifname ens36 type bridge-slave master bridge0 
Connection 'bridge0-ens36' (8d5f4d17-dc5c-4d3a-8452-609bc04be58d) successfully added.
[root@syf ~]# nmcli connection add con-name bridge0-ens37 ifname ens37 type bridge-slave master bridge0 
Connection 'bridge0-ens37' (87032e14-7586-46b8-89a0-2e1132f8ad11) successfully added.
[root@syf ~]# nmcli connection up bridge0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
[root@syf ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e4:65:1e brd ff:ff:ff:ff:ff:ffinet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::cfb5:ab2f:e08d:cbd2/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge0 state UP group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ff
6: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge0 state UP group default qlen 1000link/ether 00:0c:29:e4:65:32 brd ff:ff:ff:ff:ff:ff
7: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 00:0c:29:e4:65:28 brd ff:ff:ff:ff:ff:ffinet 192.168.200.30/24 brd 192.168.200.255 scope global noprefixroute bridge0valid_lft forever preferred_lft forever

ens36 00:0c:29:e4:65:28 一样

ens37 00:0c:29:e4:65:32

br0 00:0c:29:e4:65:28 一样

用哪个网卡,br0的MAC地址就共享哪个网卡,现在用的就是ens36的

[root@syf ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
bridge0		8000.000c29e46528	yes		ens36ens37
virbr0		8000.525400f160ee	yes		virbr0-nic

另一边主机先添加37:

[root@syf2 ~]# nmcli connection add con-name bridge0 ifname bridge0 type bridge 
Connection 'bridge0' (61f84834-6dd5-46e4-85bf-56df064a447e) successfully added.
[root@syf2 ~]# nmcli connection modify bridge0 ipv4.addresses 192.169.200.40/24 ipv4.method manual connection.autoconnect yes
[root@syf2 ~]# nmcli connection up bridge0 
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@syf2 ~]# nmcli connection add con-name bridge0-ens37 ifname ens37 type bridge-slave master bridge0 
Connection 'bridge0-ens37' (1f057022-e8d5-47b4-83b5-fb27463b7245) successfully added.
[root@syf2 ~]# nmcli connection add con-name bridge0-ens36 ifname ens36 type bridge-slave master bridge0 
Connection 'bridge0-ens36' (8295336b-340d-43e1-88e8-dc4f5a9e9623) successfully added.
[root@syf2 ~]# brctl show    //先添加37,但是36在工作
bridge name	bridge id		STP enabled	interfaces
bridge0		8000.000c29864f31	yes		ens36ens37
virbr0		8000.525400f160ee	yes		virbr0-nic

因为STP生成树选举,先看优先级,优先级相同,看MAC地址,再看IP

根据MAC地址不同进行选举

现在把ens36停掉

[root@syf ~]# nmcli connection show 
NAME           UUID                                  TYPE      D
bridge0        f0d724e1-9993-4854-a86d-5a1c485c56c4  bridge    b
bridge0-ens36  8d5f4d17-dc5c-4d3a-8452-609bc04be58d  ethernet  e
bridge0-ens37  87032e14-7586-46b8-89a0-2e1132f8ad11  ethernet  e
ens33          1b997c48-8eff-4fa9-be0d-5e2acd617368  ethernet  e
virbr0         ddddbbcf-0f6b-47f1-bfaa-d609620f8f79  bridge    v
[root@syf ~]# nmcli connection down bridge0-ens36
Connection 'bridge0-ens36' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/23)
[root@syf ~]# nmcli connection up bridge0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/29)
[root@syf ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
bridge0		8000.000c29e46532	yes		ens37
virbr0		8000.525400f160ee	yes		virbr0-nic
http://www.xdnf.cn/news/18003.html

相关文章:

  • Android面试指南(二)
  • 记SpringBoot3.x + Thymeleaf 项目实现(MVC架构模式)
  • 校园综合数据分析可视化大屏 -Vue纯前端静态页面项目
  • Ugit使用记录
  • Git 入门指南:核心概念与常用命令全解析
  • Docker-14.项目部署-DockerCompose
  • 【Jenkins】02 - 自动化部署配置
  • 【Linux系列】如何在 Linux 服务器上快速获取公网
  • PAT 1068 Find More Coins
  • 补充:用信号量实现前驱关系
  • 【架构师干货】数据库管理系统
  • JavaWeb前端(HTML,CSS具体案例)
  • 火狐(Mozilla Firefox)浏览器离线安装包下载
  • 【JavaEE】多线程 -- 单例模式
  • 2025:AI狂飙下的焦虑与追问
  • SWE-bench:真实世界软件工程任务的“试金石”
  • GANs生成对抗网络生成手写数字的Pytorch实现
  • 原型和原型链的问题
  • mac电脑开发嵌入式基于Clion(stm32CubeMX)
  • ThinkPHP8学习篇(三):控制器
  • 《解构WebSocket断网重连:指数退避算法的前端工业级实践指南》
  • pair之于vector、queue(vector<pair<int,int>>)
  • Yolov模型的演变
  • K8S集群环境搭建
  • 【LeetCode 热题 100】(八)二叉树
  • 数据结构——栈和队列oj练习
  • 深度解析 Spring Bean 生命周期
  • 【网络安全】Webshell的绕过——绕过动态检测引擎WAF-缓存绕过(Hash碰撞)
  • 《P4180 [BJWC2010] 严格次小生成树》
  • MySQL 插入数据提示字段超出范围?一招解决 DECIMAL 类型踩坑