網絡聚合鏈路與軟件網橋配置指南
一、聚合鏈路(Team)
網絡組隊(聚合鏈路)是一種將多個網絡接口控制器(NIC,Network Interface Controller)以邏輯方式組合在一起的技術,通過這種方式可以實現故障轉移或提升網絡吞吐量。相比傳統方式,組隊具有更好的性能和可擴展性,其模塊化設計也使其更易于擴展。
二、teamd支持的聚合模式
teamd是實現聚合鏈路的工具,支持以下幾種常見模式:
- roundrobin(輪詢模式):以輪詢方式在所有端口傳輸數據包,均衡利用各接口帶寬。
- activebackup(主備模式):屬于故障遷移模式,會監控鏈路狀態變化,僅選擇活動端口進行數據傳輸,當主端口故障時自動切換到備用端口。
- loadbalance(負載均衡模式):通過監控網絡流量,使用哈希函數選擇傳輸端口,以實現流量的均衡分配。
- broadcast(廣播模式):具備容錯能力,設備會通過所有端口廣播傳輸數據包。
三、聚合鏈路配置(以activebackup主備模式為例)
Server1配置步驟:
#添加網卡后需要網絡連接的配置文件
[root@zhangyiwei3 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33
virbr0 4ab2a230-02bf-4d02-9ede-a083c3085a3e bridge virbr0
有線連接 1 3fd45fe7-dfb5-328a-a8d9-edc356ee0574 ethernet ens36
有線連接 2 44d47fa4-02f8-300c-9c96-870f2bd0fdc5 ethernet ens37
[root@zhangyiwei3 ~]# nmcli connection delete "有線連接 1"
成功刪除連接 '有線連接 1'(3fd45fe7-dfb5-328a-a8d9-edc356ee0574)。
[root@zhangyiwei3 ~]# nmcli connection delete "有線連接 2"
成功刪除連接 '有線連接 2'(44d47fa4-02f8-300c-9c96-870f2bd0fdc5)。
-
創建組接口
[root@zhangyiwei3 ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner": {"name": "activebackup"}}' 連接“team0”(e01bbbf9-1ac1-40be-93dc-8781f18e2923) 已成功添加。
con-name team0
:指定連接名稱為team0ifname team0
:指定接口名稱為team0
type team
:設置連接類型為teamconfig
:指定聚合模式為activebackup
- 為組接口配置靜態IP
[root@zhangyiwei3 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.30/24 ipv4.method manual connection.autoconnect yes
ipv4.addresses
:設置IP地址為192.168.0.1/24ipv4.method manual
:啟用手動配置IP
connection.autoconnect yes
:設置開機自動連接
-
添加端口接口到組接口
將ens36、ens37網絡接口加入team0組:[root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens36 ifname ens36 type team-slave master team0 連接“team0-ens36”(fc0093bb-763b-4bd4-8234-ef2cedf9c278) 已成功添加。 [root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens37 ifname ens37 type team-slave master team0 連接“team0-ens37”(034e9e55-6137-4401-ad08-fcee00d5eb13) 已成功添加。
- `type team-slave`:指定為組接口的從設備 - `master team0`:指定所屬的主組接口為team0 4. **激活組接口** ```bash[root@zhangyiwei3 ~]# nmcli connection up team0Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/47)
-
重啟網絡服務(建議)
[root@zhangyiwei3 ~]# systemctl restart network
-
查看組隊狀態
[root@zhangyiwei3 ~]# 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
該命令可顯示team0的當前狀態,包括活動端口、備用端口等信息。
Server2配置步驟:
配置步驟與Server1相同,僅需將team0的IP地址修改為192.168.0.2/24:
[root@zhangyiwei-2 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.20/24 ipv4.method manual connection.autoconnect yes
測試連通性
在Server1上ping Server2的team0接口IP,驗證是否連通:
[root@zhangyiwei3 ~]# 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.521 ms
64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms
64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms
64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms
^C
--- 192.168.200.20 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms
[root@zhangyiwei3 ~]# xxxxxxxxxx [root@zhangyiwei3 ~]# ping 192.168.200.20PING 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.521 ms64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms^C--- 192.168.200.20 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms[root@zhangyiwei3 ~]# ping 192.168.0.2bash
四、軟件網橋
網橋是工作在鏈路層的設備,通過MAC地址在網絡中轉發流量。它會學習主機的MAC地址并構建MAC地址表(轉發表),然后根據表中信息決定數據包的轉發端口。在Linux環境中,可通過軟件網橋仿真硬件網橋,其最常見的應用是在虛擬化場景中,用于讓多個虛擬NIC共享一個物理NIC。
軟件網橋功能:
- MAC學習:通過監聽接收和發送的數據包,記錄每個MAC地址對應的接入端口,逐步構建地址-端口對照表(轉發表)。
- 報文轉發:當收到數據包時,提取目的MAC地址,查詢轉發表以確定轉發端口,然后將數據包從對應端口發送出去。
軟件網橋配置步驟:
-
創建軟件網橋
[root@zhangyiwei-2 ~]# nmcli connection add con-name bridge0 ifname bridge0 type bridge 連接“bridge0”(f3badf92-da37-4069-9a0e-74a8e4494a88) 已成功添加。
con-name bridge0
:連接名稱為bridge0
ifname bridge0
:接口名稱為bridge0type bridge
:連接類型為網橋
-
配置網橋靜態IP(可選)
nmcli connection modify bridge0 ipv4.addresses 192.168.200.1/24 ipv4.method manual connection.autoconnect yes
-
添加網絡接口到網橋
將ens38、ens39 接口連接至bridge0:[root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens38 ifname ens38 type bridge-slave master bridge0 連接“bridge0-ens38”(747a1837-21e8-4e68-bf32-8a0ce9db49ee) 已成功添加。 [root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens39 ifname ens39 type bridge-slave master bridge0 連接“bridge0-ens39”(f6a36769-995f-4e13-a131-f8e22b160f73) 已成功添加。
- `type bridge-slave`:指定為網橋的從設備 - `master bridge0`:指定所屬網橋為bridge0 4. **激活網橋** ```bash[root@zhangyiwei3 ~]# nmcli connection up bridge0Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
-
重啟網絡服務(建議)
[root@zhangyiwei3 ~]# systemctl restart network
-
啟用IP轉發(如需實現路由功能)
編輯/etc/sysctl.conf
文件,添加IP轉發配置:
vim /etc/sysctl.conf加入以下內容:
[root@zhangyiwei3 ~]# vim /etc/sysctl.conf
加入以下內容:
net.ipv4.ip_forward = 1
使配置生效:
```bash
[root@zhangyiwei3 ~]# sysctl -p
測試
可通過brctl show
命令查看網橋狀態,或通過ping命令測試網橋連接的設備之間的連通性。
在server2 ping 軟件網橋的IP地址:
[root@zhangyiwei-2 ~]# ping 192.168.200.1
PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data.
64 bytes from 192.168.200.1: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 192.168.200.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 192.168.200.1: icmp_seq=3 ttl=64 time=0.055 ms
64 bytes from 192.168.200.1: icmp_seq=4 ttl=64 time=0.044 ms
^C
--- 192.168.200.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.043/0.047/0.055/0.009 ms
[root@zhangyiwei-2 ~]#