![[扩展] Linux 网卡双网卡绑定](/assets/1788603379987-______________________________-______-______.jpg)
伴乐 [扩展] Linux 网卡双网卡绑定
0:00 / 0:00
对于 RPM 系发行版
对于基于 RPM 包的 Linux 发行版,可以直接使用 nmcli 网络管理工具,在命令行下配置 bond0
bond 模式
对于 bond,在配置时可以指定不同的模式以满足实际需求:
| mode number | mode name | decribe |
|---|---|---|
| 0 | balance-rr | 轮询模式,在该模式下,数据会通过该 bond 下的第一个网卡开始,依次发送和接收。 |
| 1 | backup | 主备模式,在该模式下,bond 只有一个活动网卡工作,只有当前活动网卡故障时,才会使用另一个绑定的备用网卡 |
| 2 | balance-xor | 异或(XOR) 模式,该模式下,接口会通过奇异或方式计算 MAC地址,并将得到 MAC 地址与 bond 中绑定网卡的 MAC 地址进行匹配。建立连接后,数据会匹配的网卡发送/接收 |
| 3 | broadcast | 广播模式,该模式下,bond 中所有网卡全部参与数据的发送和接收。 |
| 4 | 802.3ad | 设置 IEEE 802.3ad 动态链路聚合策略。 创建共享相同速度和双工设置的聚合组。 在活动聚合器中的所有成员上同时进行发送和接收。需要支持 802.3ad 标准的交换机。 |
| 5 | balance-tlb | 设置传输负载均衡(TLB)策略,以实现容错和负载均衡。 出站流量根据各成员接口的当前负载进行分配。入站流量由当前成员网卡接收。 如果接收成员发生故障,另一成员将接管故障成员的 MAC 地址。 |
| 6 | balance-alb | 设置主动负载均衡(ALB)策略,以实现容错和负载均衡。 包括针对 IPv4 流量的发送和接收负载均衡。 通过 ARP 协商实现接收负载均衡。 |
配置
- 第一步,首先检查系统支持 bond 功能。
[root@shibo ~]$ lsmod | grep bonding
bonding 274432 0
tls 159744 1 bonding
命令返回如上结果则表明系统以及载入 bonding 模块并且支持bond 功能。如执行后无输出,则需要手动载入 bonding 模块
[root@shibo ~]$ sudo modprobe bonding
若未出现报错,则表示以及载入模块,并且继续接下来的步骤。
第二步:查看当前系统中的网卡设备
nmcli device DEVICE TYPE STATE CONNECTION enp1s0 ethernet connected enp1s0 lo loopback connected (externally) lo enp7s0 ethernet disconnected --第三步:删除当前已连接的网络:
nmcli connection delete enp1s0第四步:添加 bond 网卡
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"第五步:将现有网卡添加到 bond0 中。
# 使用 ip addr show 命令查看当前系统下网卡名称 [root@shibo ~]$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:39:39:fd brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.15.128/24 brd 192.168.15.255 scope global dynamic noprefixroute ens160 valid_lft 1750sec preferred_lft 1750sec inet6 fe80::20c:29ff:fe39:39fd/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens161: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:39:39:1b brd ff:ff:ff:ff:ff:ff altname enp4s0 inet 100.1.1.3/32 scope global noprefixroute ens161 valid_lft forever preferred_lft forever inet 192.168.188.128/24 brd 192.168.188.255 scope global dynamic noprefixroute ens161 valid_lft 1750sec preferred_lft 1750sec inet6 fe80::bbb4:2efe:89b6:2910/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: ens224: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 00:0c:29:39:39:07 brd ff:ff:ff:ff:ff:ff altname enp19s0 5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 00:0c:29:39:39:07 brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:39:39:11 altname enp27s0 # 这里我们添加 ens224 和 ens256 网卡到 bond0 中 # 添加 ens224 网卡到 bond0 中 nmcli connection add type ethernet con-name ens224 ifname ens224 master bond0 # 添加 ens256 网卡到 bond0 中。 nmcli connection add type ethernet con-name ens256 ifname ens256 master bond0 # 查看当前网络设备 nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet connected ens160 ens161 ethernet connected ens161 bond0 bond connected bond0 ens224 ethernet connected ens224 ens256 ethernet connected ens56 lo loopback connected (externally) lo第六步:设置 bond 网卡的IP 地址,dns , 网关等信息。
[root@shibo ~]$ nmcli connection modify bond0 connection.autoconnect yes \ ipv4.method manual \ ipv4.address 192.168.10.114 \ ipv4.gateway 192.168.10.1 \ ipv4.dns 114.114.114.114 # 配置 DNS 搜索域,如果有多个,需用空格分开 [root@shibo ~]$ nmcli connection modify bond0 ipv4.dns-search "srv.world" # 如果网卡未启动,使用 up 命令启动 bond0 网卡 [root@shibo ~]$ nmcli connection up bond0 # 重启系统: [root@shibo ~]$ reboot # 重启后可查看绑定状态 [root@shibo ~]$ cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v5.14.0-427.42.1.el9_4.x86_64 Bonding Mode: load balancing (round-robin) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: ens224 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:39:39:07 Slave queue ID: 0 Slave Interface: ens256 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:39:39:11 Slave queue ID: 0 # 显示网卡 IP [root@shibo ~]$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:39:39:fd brd ff:ff:ff:ff:ff:ff altname enp3s0 inet 192.168.15.128/24 brd 192.168.15.255 scope global dynamic noprefixroute ens160 valid_lft 1016sec preferred_lft 1016sec inet6 fe80::20c:29ff:fe39:39fd/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens161: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:39:39:1b brd ff:ff:ff:ff:ff:ff altname enp4s0 inet 100.1.1.3/32 scope global noprefixroute ens161 valid_lft forever preferred_lft forever inet 192.168.188.128/24 brd 192.168.188.255 scope global dynamic noprefixroute ens161 valid_lft 1016sec preferred_lft 1016sec inet6 fe80::bbb4:2efe:89b6:2910/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: ens224: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 00:0c:29:39:39:07 brd ff:ff:ff:ff:ff:ff altname enp19s0 5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000 link/ether 00:0c:29:39:39:07 brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:39:39:11 altname enp27s0 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:39:39:07 brd ff:ff:ff:ff:ff:ff inet 192.168.10.114/32 scope global noprefixroute bond0 valid_lft forever preferred_lft forever inet6 fe80::af1:77db:9625:9fc4/64 scope link noprefixroute valid_lft forever preferred_lft forever 配置文件存放位置: [root@shibo /]$ ll /etc/NetworkManager/system-connections/ total 20 -rw-------. 1 root root 253 Feb 4 15:47 bond0.nmconnection -rw-------. 1 root root 229 Jul 30 2024 ens160.nmconnection -rw-------. 1 root root 206 Sep 25 2024 ens161.nmconnection -rw-------. 1 root root 195 Feb 4 15:41 ens224.nmconnection -rw-------. 1 root root 194 Feb 4 15:42 ens56.nmconnection