本文演示了主流操作系统Ubuntu20.04(18.04配置方法一样,都是基于netplan)、CentOS7(这篇文章的草稿开了大概半年,结果把centos熬成了绝唱)、Windows Server 2019和思科、华为交换机的端口汇聚配置。都是一些挺基础的内容,没什么技术含量,当个手册看吧。

Ubuntu和CentOS既可以在进入系统后用手写配置文件的方式创建网卡汇聚,也可以直接在系统安装的时候借助引导界面来配置并创建汇聚。

Ubuntu安装过程中创建bonding

系统安装过程进入Network connections界面时,选择Create bond,并在弹出的窗口中指定成员网卡、bonding模式。确认以后即可在网络连接界面中看到新的bond0网卡。

需要注意的是,创建bond以后,网卡默认是disable状态,还要手工配置网络参数(DHCP或静态IP)将其启用。

CentOS7安装过程中创建bond

进入安装配置界面时,选择Network & Hostname,在接口列表下方,点击 + 按钮,选择接口类型为Bond,即可打开Bond添加界面。

添加bond slave时,选择Ethernet类型的接口(即本地网卡),并在bond slave详情界面指定具体的网卡。

Ubuntu进入系统后手动创建bond(netplan)

这个配置文件记不住找不到不明白都没关系,只要按上面的步骤,在安装系统的时候创建bond就会自动生成,然后到/etc/netplan目录下找就是。


# /etc/netplan/xxxx.yaml
# This is the network config written by 'subiquity'
network:
  bonds:
    bond0:
      dhcp4: true
      interfaces:
      - ens33
      - ens34
      parameters:
        mode: balance-alb
  ethernets:
    ens33: {}
    ens34: {}
  version: 2

CentOS7进入系统后手动创建bond

CentOS在安装的时候创建Bond会为每个成员网卡创建一个关联的slave接口,所以自动生成的配置文件的构成比较繁琐:

  • ifcfg-ens33
  • ifcfg-ens34
  • ifcfg-bond0_slave_1
  • ifcfg-bond0_slave_2
  • ifcfg-Bond_connection_1

[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ca18ffdc-3b56-4d86-ac8b-1b420d4c9a74
DEVICE=ens33
ONBOOT=no

[root@localhost network-scripts]# cat ifcfg-bond0_slave_1
HWADDR=00:0C:29:31:8B:1D
TYPE=Ethernet
NAME="bond0 slave 1"
UUID=dcae64ba-b24a-43d3-aa1c-e9998e651796
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@localhost network-scripts]# cat ifcfg-Bond_connection_1
BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0"
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_PRIVACY=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Bond connection 1"
UUID=d2eff1ca-8cd8-4ecd-95c0-e23b70227c18
DEVICE=bond0
ONBOOT=yes

手动创建bonding的时候,首先需要确保加载了bonding模块,如果没有,用modprobe bonding命令加载,然后创建bond接口,最后修改成员网口的配置文件添加bond信息即可。


DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=dhcp
ONBOOT=yes
BONDING_OPTS="mode=6"

# ifcfg-ens33/ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
NAME=ens34
UUID=c34874b1-f959-4cf0-b766-ffc30e6dd74a
DEVICE=ens34

ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

Windows Server

较早版本的windows中如果想做网卡聚合,必须借助网卡厂商的官方teaming软件进行配置方可,但是现在的windows server早已经自带了NIC组合功能,打开“服务器管理器”,查看“本地服务器”就可以找到这个功能的配置入口。

CISCO(二层ether-channel)

ether channel要求成员接口使用相同的工作模式(trunk/相同vlan的access mode)。此外,各版本对端口协商模式的支持程度也不一样。
配置命令非常简单,只有一句话,只要在成员接口的接口模式下运行就行了,实际配置的时候,把后边的mode改成实际的协商模式即可。

channel-group 1 mode <mode>

华为(eth-trunk)

先用int eth-trunk id创建一个端口组,然后到每个成员接口下面,把对应接口用eth-trunk id命令加入端口组即可跑起来一个最简单的汇聚


int eth-trunk 1
mode lacp
quit
int gx/x/x
eth 1

(* 实在不想装模拟器去演示了,就这样吧)