链路聚合与软件网桥
链路聚合与软件网桥
在 CentOS 7 中,链路聚合(以team
模式为例)和软件网桥均是网络配置中的重要技术,分别用于提升网络可靠性 / 吞吐量和实现二层网络互联,具体简述如下:
一、链路聚合(Team)
链路聚合是将多个物理网络接口(NIC)通过逻辑方式组合为一个 “组队接口”(如team0
),实现故障转移或提高吞吐量,由teamd
服务管理,具备模块化设计和灵活扩展性
核心特点:
-
工作模式:通过
teamd
支持多种聚合策略,常见包括:
activebackup
(主备模式):仅主接口工作,备接口在主接口故障时自动切换,保障冗余roundrobin
(轮询模式):数据包通过所有接口轮询传输,提升吞吐量loadbalance
(负载均衡):基于流量和哈希函数分配数据包,均衡接口负载broadcast
(广播模式):通过所有接口广播数据包,实现容错
-
典型应用:服务器双网卡冗余(主备模式避免单点故障)、高带宽场景下的多网卡流量聚合
关键配置逻辑:
- 创建组队接口(如
team0
)并指定模式(如主备) - 为组队接口配置 IP 地址
- 将物理网卡(如
ens38
、ens39
)作为 “从接口” 加入组队 - 激活接口后,可通过
teamdctl team0 state
查看组队状态,验证故障切换等功能
二、软件网桥
软件网桥是通过软件模拟的二层网络设备,基于 MAC 地址转发数据包,用于连接多个网络接口(物理或虚拟),实现同一广播域内的设备互通
核心功能:
- MAC 地址学习:记录数据包来源 MAC 地址与对应接口的映射关系,构建 “转发表”
- 报文转发:根据数据包的目的 MAC 地址,查询转发表并从对应接口转发,未匹配时广播转发
典型应用:
- 虚拟化场景(如 KVM):将虚拟机虚拟网卡与物理网卡通过网桥连接,实现虚拟机与物理网络的互通
- 多接口二层互联:将多个物理网卡接入网桥,使连接不同网卡的设备处于同一网段,直接通信
关键配置逻辑:
- 创建网桥接口(如
bridge0
) - (可选)为网桥配置 IP 地址(用于管理或作为网关)
- 将物理 / 虚拟网卡(如
ens40
、ens41
)作为 “从接口” 加入网桥 - 激活网桥后,接口间通过 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