ubuntu 22.04桌面版设置网卡动态聚合
Greetingsyi 工厂拧螺丝大师

Ubuntu桌面版默认使用NetworkManager管理网络,需要禁用NetworkManager,使用systemd-netwokd来管理网络。注意,禁用NetworkManager后,图形界面的网络管理会失效,需要使用命令行来配置网络。

禁用NetworkManager

1
2
3
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl mask NetworkManager

启用systemd-networkd

1
2
3
sudo systemctl unmask systemd-networkd.service
sudo systemctl enable systemd-networkd.service
sudo systemctl start systemd-networkd.servic

检查bonding模块

ubuntu desktop默认没有bonding模块,需要安装ifenslave

安装ifenslave

sudo apt install ifenslave -y

加载bonding模块

modprobe bonding

加载完成输出结果

lsmod | grep bonding

1
2
3
root@node1:/home/supervisor# lsmod|grep bonding
bonding 249856 0
tls 155648 1 bonding

可以使用modinfo bond验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
root@node1:/home/supervisor# modinfo bonding
filename: /lib/modules/6.8.0-52-generic/kernel/drivers/net/bonding/bonding.ko
author: Thomas Davis, tadavis@lbl.gov and many others
description: Ethernet Channel Bonding Driver
license: GPL
alias: rtnl-link-bond
srcversion: 6A19278EA2049E1DA14091B
depends: tls
retpoline: Y
intree: Y
name: bonding
vermagic: 6.8.0-52-generic SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 2C:68:EE:35:C6:57:43:98:C1:44:A9:70:A2:C2:42:7C:C2:28:BA:D4
sig_hashalgo: sha512
signature: 40:A1:83:76:E2:CD:E0:16:01:3A:6D:B0:37:8E:62:99:30:95:FE:24:
DC:C8:46:36:67:1F:5B:68:33:E5:B2:71:61:52:A3:1F:9A:76:51:EC:
E9:96:B1:62:A6:A2:31:B1:E2:4D:AA:8D:B3:06:DE:76:46:9D:CD:D5:
87:58:76:D7:F5:2B:AC:68:C8:9E:1B:A9:B0:3D:CE:B3:08:E6:BF:C2:
8B:D0:51:DB:1D:64:10:8A:F4:88:8A:0B:4D:E6:DC:57:7D:11:88:83:
E4:EB:3B:18:01:82:FC:57:35:9F:0D:10:6F:82:5C:96:D7:7A:24:52:
D6:80:2B:9B:3F:F3:A1:D7:BD:42:CB:9D:34:14:16:E3:32:52:7A:44:
C0:F2:61:60:03:5D:85:26:98:66:F4:50:F1:0C:B3:92:E6:ED:63:10:
06:5C:A6:A9:BA:EE:7C:2B:8E:0B:03:A6:D7:1F:C5:C6:55:AE:B9:A3:
0C:76:B2:B4:54:EC:A4:A9:E2:74:C9:27:E8:C8:68:B0:93:D2:17:F9:
D7:CE:21:69:7C:C2:08:C3:CF:45:18:77:0F:08:F3:70:53:B4:C5:63:
E0:49:DA:6F:25:CB:4A:08:78:94:77:5D:4E:E1:12:6E:7D:E7:D4:D4:
8B:A8:56:FF:89:4C:88:84:C6:B8:C2:40:6F:AD:48:E9:CF:8D:D3:5D:
C3:F0:12:69:E6:7F:B3:94:F8:AA:17:61:C7:52:7F:6D:D8:D0:15:DA:
E4:49:BD:B9:44:6B:45:93:15:99:AF:80:90:CD:0F:A8:FA:9F:EE:67:
60:8D:39:E5:13:EF:23:56:FD:3A:6F:51:13:52:C4:E3:50:E7:34:2F:
A2:B6:F0:4F:F6:D3:E0:AA:CB:25:A3:B1:D4:A8:18:FE:55:7E:C5:98:
62:D3:F8:2D:4D:4B:DA:7A:50:F9:B9:C6:50:AA:DB:93:63:E5:11:A0:
2B:AF:69:39:A9:14:AD:8D:D4:B8:74:63:01:1E:32:EE:59:43:15:C7:
B8:28:38:7D:94:6B:9D:4E:BA:FC:58:06:4C:D7:1C:0C:BC:B7:DE:4C:
9B:D2:2F:56:AA:FC:29:59:51:5A:06:BE:18:93:6A:EA:96:16:93:5D:
B5:56:3E:59:FE:68:BB:E7:C5:E4:51:FA:C9:6B:DF:A1:67:DA:88:F1:
04:8F:53:4D:99:6F:49:2B:DE:D3:EA:82:D8:FD:05:BA:5D:E1:A6:9D:
0C:34:4F:DF:94:D6:3C:EE:70:CD:E0:26:BE:25:D5:CE:DB:12:A3:E1:
B6:56:EA:4D:9C:10:F8:F6:F0:C7:CE:7B:41:5B:15:EE:2A:0E:37:EE:
52:35:89:5E:9D:F5:41:BB:EF:82:64:10
parm: max_bonds:Max number of bonded devices (int)
parm: tx_queues:Max number of transmit queues (default = 16) (int)
parm: num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int)
parm: num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int)
parm: miimon:Link check interval in milliseconds (int)
parm: updelay:Delay before considering link up, in milliseconds (int)
parm: downdelay:Delay before considering link down, in milliseconds (int)
parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm: mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm: primary:Primary network device to use (charp)
parm: primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
parm: ad_select:802.3ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
parm: min_links:Minimum number of available links before turning on carrier (int)
parm: xmit_hash_policy:balance-alb, balance-tlb, balance-xor, 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4, 5 for vlan+srcmac (charp)
parm: arp_interval:arp interval in milliseconds (int)
parm: arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm: arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
parm: arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp)
parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
parm: all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int)
parm: resend_igmp:Number of IGMP membership reports to send on link failure (int)
parm: packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int)
parm: lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)

修改网络配置文件创建bond

按实机情况修改配置文件

nano /etc/netplan/01-network-manager-all.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: networkd #将NetworkManager修改为networkd
ethernets:
eno1np0: #非bond网卡配置静态IP
addresses:
- 192.168.14.25/24 #静态地址
routes:
- to: 192.168.14.0/24 #to参数应该为需要访问的网段
via: 192.168.14.250 #默认网关
nameservers:
addresses:
- 223.5.5.5
- 8.8.8.8 #dns
eno2np1: #未使用
dhcp4: true
eno3np2: #需要创建bond的网卡,不需要配置IP
addresses: []
dhcp4: false
eno4np3: #需要创建bond的网卡,不需要配置IP
addresses: []
dhcp4: false

bonds:
bond0: #创建bond0虚拟网卡
interfaces:
- eno3np2 #创建聚合的网口
- eno4np3
addresses:
- 192.168.12.25/24 #配置聚合IP
routes:
- to: 192.168.12.0/24
via: 192.168.12.249 #默认网关
nameservers:
addresses:
- 223.5.5.5 #DNS
- 8.8.8.8
parameters:
mode: 802.3ad #聚合模式,802.3ad未bond4,按需创建
lacp-rate: fast #LACP时序
mii-monitor-interval: 100 #监测时间

netplan的配置文件检测缩进来生成配置,格式不对netplan try不会通过,需要检查好配置文件缩进和空格有没有问题。

检查配置

netplan try

应用配置

netplan apply