NetworkManager工具nmcli命令配置网络

1. NetworkManager 工具

nmcli(NetworkManager的命令行界面)命令行实用程序,用于控制NetworkManager和报告网络状态。它可以用作nm-applet或其他图形客户端的替代品。

nmcli用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
对于服务器,虚拟机,终端,nmcli可以直接控制NetworkManager,不需要GUI,包括创建,编辑,启动和停止网络连接,查看网络状态。

对于脚本,nmcli支持一种更适合脚本处理的简洁输出格式。它是统一配置网络工具,而不是手动管理网络连接。

1.1. nmcli命令基本格式

nmcli [选项] 对象 { 命令 | 帮助 }
其中对象可以是以下选项之一:general,networking,radio,connection,device,agent,和monitor。您可以在命令中使用这些选项的任何前缀。例如,nmclicon help,nmcli c help,nmcli connection help产生相同的输出。

注:以下配置文件/命令中的“enp1”“enp2”为测试环境网口名称,实际使用名称可能不同,需要通过ifconfig命令或者nmcli device命令查找网卡接口实际名称并替换。

1.2. 查看网卡设备

# 查看所有网卡设备信息
nmcli device show
#后跟网卡名是查看某个网卡的详细信息
nmcli device show eth2

1.3. 查看网络连接

nmcli connection show #查看所有连接
##同理 show 后跟上连接名可以查看连接的详细信息
nmcli connection show  -a # -a参数是仅显示活动的连接

home它的DEVICE选项为空,说明没有网卡绑定,所以并未生效。

1.4. 查看网络设备状态

nmcli device status
列出 NetworkManager 识别出的设备列表及他们的状态

1.5. 打印通用状态

nmcli general status
将 NetworkManager 的所有状态都打印出来

1.6. 修改网卡名称

在centos7中默认的网卡名变为了ens..,我们可以使用nmcli来改成我们熟悉的样子(更改配置文件名):

nmcli connection modify ens34 connection.id config.eth1

1.7. 创建网卡

nmcli connection add con-name config-eth0-1 ifname eth0 type ethernet

命令完成后会在/etc/sysconfig/network-scripts/目录下产生一个名为ifcfg-config-eth0-1的配置文件

1.8. 启动或禁用网卡

nmcli connection up config-eth0-1
nmcli connection down config-eth0-1
对创建好的配置文件我们可以用up,down来启用和禁用

1.9. 删除连接(删除的连接并未被启用)

nmcli connection delete config-eth0-1

删除连接(删除的连接并未被启用)

1.10. 创建网卡静态配置文件

nmcli connection add con-name eth0-1 type ethernet ifname eth1 autoconnect yes ip4 10.1.252.60/24 gw4 10.1.0.254

我们也可以使用nmcli来创建一个静态IP网络连接配置,这里的autoconnect 为开机是否自启,yes为开机自启

1.11. 修改配置

nmcli connection modify eth0-1 +ipv4.address 2.2.2.2/24
nmcli con mod ifcfg-*文件
ipv4.method manual BOOTPROTO=none
ipv4.method auto BOOTPROTO=dhcp
ipv4.address "192.0.2.1/24 192.10.2.254" IPADDR0=192.0.2.1 PREFIX0=24 GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com
ipv4.ignore-auto-dns true PEERDNS=no
connection.autoconnect yes ONBOOT=yes
connection.id eth0 NAME=eth0
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address HWADDR=...

1.12. 修改连接配置后我们要重新加载才能生效

nmcli connection reload
nmcli connection down eth0-1
nmcli connection up eth0-1

1.13. 添加固化路由

# 其中目的cidr为10.246.112.0/24, 网关/下一跳ip为10.246.116.254
nmcli connection modify bond0.199 +ipv4.routes "10.246.112.0/24 10.246.116.254"
nmcli connection up bond0.199
#ip route 查看路由项

2. bond简介

管理员将多个网络接口绑定到一个单独的、绑定的通道中。通道绑定可以使两个或多个网络接口同时作为一个网络接口使用,在增加带宽的同时提供冗余。

2.1. bond使用场景建议

虽然bond支持7种模式,但是最常用的还是循环策略(bond0)、主备模式(bond1);
如果有网络工程师配合,建议选择聚合模式(bond4);
如果对可靠性要求特别高,建议选广播策略(bond3)。

2.2. 交换机配置要求

总的来讲,根据bonding模式的不同,上行交换机需要进行如下配置

Bonding 模式 上行交换机配置
0 balance-rr 需要启用聚合口(非lacp协商),表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
1 active-backup 不需要交换机端的设置,表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
2 balance-xor 需要启用聚合口(非lacp协商),表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
3 broadcast 需要启用聚合口(非lacp协商),表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。
4 802.3ad 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)。需要启用lacp协商的聚合口,建议主动模式
5 balance-tlb 不需要交换机端的设置,是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
6 balance-alb 不需要交换机端的设置,在5的tlb基础上增加了rlb。

2.3. 部署注意事项

配置前需要检查是否已安装 Bonding 内核模块

系统中默认载入 bonding 模块。可作为 root 运行以下命令载入该模块:

modprobe bonding
lsmod | grep bonding
echo "bonding" >>/etc/modules

2.4. 轮询策略 [bond0]

此模式需要交换机配置为链路聚合(非ldap)

  • 添加bond

    nmcli connection add con-name bond0 type bond ifname bond0 mode balance-rr
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond0 
  • 添加slave2

    nmcli connection add type bond-slave ifname enp2 master bond0 
  • 给bond0添加ip

    nmcli connection modify bond0 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore
  • 启动bond0

    nmcli connection up bond0

2.5. 主备模式 [bond1]

  • 添加bond

    nmcli connection add con-name bond1 type bond ifname bond1 mode active-backup
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond1 
  • 添加slave2

    nmcli connection add type bond-slave ifname enp3 master bond1 
  • 给bond1添加ip

    nmcli connection modify bond1 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond1

    nmcli connection up bond1

2.6. 平衡策略 [bond2]

此模式需要交换机配置为链路聚合(非ldap)

  • 添加bond

    nmcli connection add con-name bond2 type bond ifname bond2 mode balance-xor
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond2 
  • 添加slave2

    nmcli connection add type bond-slave ifname enp3 master bond2 
  • 给bond1添加ip

    nmcli connection modify bond2 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond2

    nmcli connection up bond2

2.7. 广播策略[bond3]

此模式需要交换机配置为链路聚合(非ldap)

  • 添加bond

    nmcli connection add con-name bond3 type bond ifname bond3 mode broadcast
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond3
  • 添加slave2

    nmcli connection add type bond-slave ifname enp2 master bond3
  • 给bond3添加ip

    nmcli connection modify bond3 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond3

    nmcli connection up bond3

2.8. 动态链接聚合[bond4]

此模式需要交换机配置为链路聚合(ldap协议)

  • 添加bond

    nmcli connection add con-name bond4 type bond ifname bond4 mode  802.3ad
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond4
  • 添加slave2

    nmcli connection add type bond-slave ifname enp2 master bond4
  • 给bond4添加ip

    nmcli connection modify bond4 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond4

    nmcli connection up bond4

2.9. 适配器传输负载均衡[bond5]

此模式无需交换机配置为链路聚合

  • 添加bond

    nmcli connection add con-name bond5 type bond ifname bond5 mode  balance-tlb
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond5
  • 添加slave2

    nmcli connection add type bond-slave ifname enp2 master bond5
  • 给bond5添加ip

    nmcli connection modify bond5 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond5

    nmcli connection up bond5

2.10. 适配器适应性负载均衡[bond6]

此模式无需交换机配置为链路聚合

  • 添加bond

    nmcli connection add con-name bond6 type bond ifname bond6 mode  balance-alb
  • 添加slave1

    nmcli connection add type bond-slave ifname enp1 master bond6
  • 添加slave2

    nmcli connection add type bond-slave ifname enp2 master bond6
  • 给bond6添加ip

    nmcli connection modify bond6 ipv4.method manual ipv4.addresses 10.10.10.10/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv6.method ignore 
  • 启动bond6

    nmcli connection up bond6

3. bond 创建和删除

  1. 创建bond,并设置相应模式:
    nmcli connection add type bond ifname bond0 mode balance-rr
    #nmcli connection add con-name bond0 type bond ifname bond0 mode active-backup
  2. 为bond配置ip地址:
    nmcli connection modify bond-bond0 ipv4.method manual ipv4.addresses ip地址/掩码位数 ipv4.gateway 网关地址 ipv6.method ignore
  3. 将需要绑定的子网卡加入到bond:
    nmcli connection add type bond-slave ifname enpxxxx(网卡名称) master bond-bond0
  4. 将需要绑定的子网卡加入到bond:
    nmcli connection add type bond-slave ifname enpxxxx(网卡名称) master bond-bond0
  5. 激活bond子网卡1:
    nmcli connection up bond-slave-enpxxxxx
  6. 激活bond自网卡2:
    nmcli connection up bond-slave-enpxxxxx
    #nmcli connection down bond-slave-eth1
  7. 激活bond:
    nmcli connection up bond-bond0
  8. 查看bond配置:
    nmcli connection show
    cat /proc/net/bonding/bond0
  9. 删除bond
    # 删除bond
    nmcli connection delete bond-slave-enpxxxx
    nmcli connection delete bond-slave-enpxxxx
    nmcli connection delete bond-bond0

发表评论

邮箱地址不会被公开。 必填项已用*标注