CentOS7之前的网络管理是通过ifcfg文件配置管理接口(device),而现在是通过NetworkManager服务管理连接(connection)。

一个接口(device)可以有多个连接(connection),但是同时只允许一个连接(connection)处于激活(active)状态。

简单理解就是,一个连接就是(connection)就是/etc/sysconfig/network-scripts/目录下的一个配置文件,接口(device)

是物理设备,一个物理设置可以拥有多个配置文件,但只能有一个配置文件属于使用(active)状态;配置文件的生成与使用

状态均由NetworkManager控制。

命令介绍:

[root@localhost ~]# nmcli -h    #查看帮助
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output #简洁的输出
  -p[retty]                                  pretty output  #漂亮的输出
  -m[ode] tabular|multiline                  output mode  #输出模式
  -c[olors] auto|yes|no                      whether to use colors in output #是否在输出中使用颜色
  -f[ields] <field1,field2,...>|all|common   specify fields to output #指定要输出的字段
  -e[scape] yes|no                           escape columns separators in values #值中的列分隔符
  -a[sk]                                     ask for missing parameters #询问缺少的参数
  -s[how-secrets]                            allow displaying passwords  #允许显示密码
  -w[ait] <seconds>                          set timeout waiting for finishing operations #设置超时等待完成操作
  -v[ersion]                                 show program version #显示程序版本
  -h[elp]                                    print this help #打印帮助

OBJECT
  g[eneral]       NetworkManager's general status and operations #网络管理的一般状况及操作
  n[etworking]    overall networking control #总体网络控制
  r[adio]         NetworkManager radio switches #安装无线电开关
  c[onnection]    NetworkManager's connections #网络连接管理
  d[evice]        devices managed by NetworkManager #设备管理
  a[gent]         NetworkManager secret agent or polkit agent #安装代理
  m[onitor]       monitor NetworkManager changes #监控网络管理器的变化

常用的object有:connection,device,general,可以分别缩写为con,dev,gen

nmcli其它使用方法请转到:使用 NETWORKMANAGER 命令行工具 NMCLI

1、nmcli general

[root@localhost ~]# nmcli general -h
用法:nmcli general { COMMAND | help }
COMMAND := { status | hostname | permissions | logging }
  status
  hostname [<hostname>]
  permissions
  logging [level <log level>] [domains <log domains>]

显示networkManager总体状态:

[root@localhost ~]# nmcli general status
状态    CONNECTIVITY  WIFI-HW  WIFI    WWAN-HW  WWAN   
连接的  全部          已启用   已启用  已启用   已启用

要控制NetworkManager日志记录:

[root@localhost ~]# nmcli general logging domains ip4
[root@localhost ~]# nmcli general logging domains team

修改主机名:

[root@localhost ~]# nmcli general hostname zhang

显示所有链接许可:

[root@localhost ~]# nmcli general permissions
PERMISSION                                                 VALUE 
org.freedesktop.NetworkManager.enable-disable-network      是    
org.freedesktop.NetworkManager.enable-disable-wifi         是    
org.freedesktop.NetworkManager.enable-disable-wwan         是    
org.freedesktop.NetworkManager.enable-disable-wimax        是    
org.freedesktop.NetworkManager.sleep-wake                  是    
org.freedesktop.NetworkManager.network-control             是    
org.freedesktop.NetworkManager.wifi.share.protected        是    
org.freedesktop.NetworkManager.wifi.share.open             是    
org.freedesktop.NetworkManager.settings.modify.system      是    
org.freedesktop.NetworkManager.settings.modify.own         是    
org.freedesktop.NetworkManager.settings.modify.hostname    是    
org.freedesktop.NetworkManager.settings.modify.global-dns  是    
org.freedesktop.NetworkManager.reload                      是    
org.freedesktop.NetworkManager.checkpoint-rollback         是    
org.freedesktop.NetworkManager.enable-disable-statistics   是

2、nmcli device  #对网卡设备接口的操作

[root@localhost ~]# nmcli device -h
Usage: nmcli device { COMMAND | help }

COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }

  status

  show [<ifname>]

  set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]

  connect <ifname>

  reapply <ifname>

  modify <ifname> ([+|-]<setting>.<property> <value>)+

  disconnect <ifname> ...

  delete <ifname> ...

  monitor <ifname> ...

  wifi [list [ifname <ifname>] [bssid <BSSID>]]

  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [ifname <ifname>]
                         [bssid <BSSID>] [name <name>] [private yes|no] [hidden yes|no]

  wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] [channel <channel>] [password <password>]

  wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]

  lldp [list [ifname <ifname>]]

3、nmcli connection  #对网络连接的操作

[root@localhost ~]# nmcli connection -h   #网络链接操作帮助
Usage: nmcli connection { COMMAND | help }

COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }

  show [--active] [--order <order spec>]
  show [--active] [id | uuid | path | apath] <ID> ...

  up [[id | uuid | path] <ID>] [ifname <ifname>] [ap <BSSID>] [passwd-file <file with passwords>]

  down [id | uuid | path | apath] <ID> ...

  add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]<setting>.<property> <value>)+]

  modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+

  clone [--temporary] [id | uuid | path ] <ID> <new name>

  edit [id | uuid | path] <ID>
  edit [type <new_con_type>] [con-name <new_con_name>]

  delete [id | uuid | path] <ID>

  monitor [id | uuid | path] <ID> ...

  reload

  load <filename> [ <filename>... ]

  import [--temporary] type <type> file <file to import>

  export [id | uuid | path] <ID> [<output file>]

nmcli命令选项解释:

[root@localhost ~]# nmcli connection add -h
用法:nmcli connection add { ARGUMENTS | help }

ARGUMENTS := COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]<setting>.<property> <value>)+]

  COMMON_OPTIONS:
                  type <type>
                  ifname <interface name> | "*"  #设备接口名称
                  [con-name <connection name>]   #连接名称
                  [autoconnect yes|no]   #是否自动连接
                  [save yes|no]   #是否为从
                  [master <master (ifname, or connection UUID or name)>]  #指定主设备接口名
                  [slave-type <master connection type>]  #从接口类型

  TYPE_SPECIFIC_OPTIONS:  type类型
    ethernet:     [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]

    wifi:         ssid <SSID>
                  [mac <MAC address>]
                  [cloned-mac <cloned MAC address>]
                  [mtu <MTU>]
                  [mode infrastructure|ap|adhoc]

    wimax:        [mac <MAC address>]
                  [nsp <NSP>]

    pppoe:        username <PPPoE username>
                  [password <PPPoE password>]
                  [service <PPPoE service name>]
                  [mtu <MTU>]
                  [mac <MAC address>]

    gsm:          apn <APN>
                  [user <username>]
                  [password <password>]

    cdma:         [user <username>]
                  [password <password>]

    infiniband:   [mac <MAC address>]
                  [mtu <MTU>]
                  [transport-mode datagram | connected]
                  [parent <ifname>]
                  [p-key <IPoIB P_Key>]

    bluetooth:    [addr <bluetooth address>]
                  [bt-type panu|dun-gsm|dun-cdma]

    vlan:         dev <parent device (connection UUID, ifname, or MAC)>
                  id <VLAN ID>
                  [flags <VLAN flags>]
                  [ingress <ingress priority mapping>]
                  [egress <egress priority mapping>]
                  [mtu <MTU>]

    bond:         [mode balance-rr (0) | active-backup (1) | balance-xor (2) | broadcast (3) |
                        802.3ad    (4) | balance-tlb   (5) | balance-alb (6)]
                  [primary <ifname>]
                  [miimon <num>]
                  [downdelay <num>]
                  [updelay <num>]
                  [arp-interval <num>]
                  [arp-ip-target <num>]
                  [lacp-rate slow (0) | fast (1)]

    bond-slave:   master <master (ifname, or connection UUID or name)>

    team:         [config <file>|<raw JSON data>]

    team-slave:   master <master (ifname, or connection UUID or name)>
                  [config <file>|<raw JSON data>]

    bridge:       [stp yes|no]
                  [priority <num>]
                  [forward-delay <2-30>]
                  [hello-time <1-10>]
                  [max-age <6-40>]
                  [ageing-time <0-1000000>]
                  [multicast-snooping yes|no]
                  [mac <MAC address>]

    bridge-slave: master <master (ifname, or connection UUID or name)>
                  [priority <0-63>]
                  [path-cost <1-65535>]
                  [hairpin yes|no]

    ***:          ***-type ***c|open***|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...
                  [user <username>]

    olpc-mesh:    ssid <SSID>
                  [channel <1-13>]
                  [dhcp-anycast <MAC address>]

    adsl:         username <username>
                  protocol pppoa|pppoe|ipoatm
                  [password <password>]
                  [encapsulation vcmux|llc]

    tun:          mode tun|tap
                  [owner <UID>]
                  [group <GID>]
                  [pi yes|no]
                  [vnet-hdr yes|no]
                  [multi-queue yes|no]

    ip-tunnel:    mode ipip|gre|sit|isatap|vti|ip6ip6|ipip6|ip6gre|vti6
                  remote <remote endpoint IP>
                  [local <local endpoint IP>]
                  [dev <parent device (ifname or connection UUID)>]

    macvlan:      dev <parent device (connection UUID, ifname, or MAC)>
                  mode vepa|bridge|private|passthru|source
                  [tap yes|no]

    vxlan:        id <VXLAN ID>
                  remote <IP of multicast group or remote address>
                  [local <source IP>]
                  [dev <parent device (ifname or connection UUID)>]
                  [source-port-min <0-65535>]
                  [source-port-max <0-65535>]
                  [destination-port <0-65535>]

  SLAVE_OPTIONS:   #从选项
    bridge:       [priority <0-63>]
                  [path-cost <1-65535>]
                  [hairpin yes|no]

    team:         [config <file>|<raw JSON data>]

  IP_OPTIONS:  #ip配置
                  [ip4 <IPv4 address>] [gw4 <IPv4 gateway>]
                  [ip6 <IPv6 address>] [gw6 <IPv6 gateway>]

查看接口设备信息:

# 简单信息
nmcli device status
# 详细的接口信息
nmcli device show
# 接口的详细信息
nmcli device show interface-name

查看连接(connection)的信息:

# 简单信息
nmcli connection show
# 详细的连接信息
nmcli connection show
# 某个连接的详细信息
nmcli connection show connection-name

启动和停止接口:

nmcli connection down connection-name
nmcli connection up connection-name
nmcli device disconnect interface-name
nmcli device connect interface-name
#建议使用device命令

创建连接:

nmcli connection add type ethernet con-name 链接名 ifname 设备名
nmcli connection add type ethernet con-name 链接名 ifname 设备名 ip4 IP地址 gw4 网关地址
激活链接:
nmcli connection up 链接名
实例配置IP链接:
[root@localhost network-scripts]# nmcli device status  #查看设备信息
设备   类型      状态    CONNECTION 
ens32  ethernet  连接的  ens32      
ens34  ethernet  已断开  --         
ens35  ethernet  已断开  --         
lo     loopback  未管理  -- 
#创建动态链接:
[root@localhost network-scripts]# nmcli con add type eth con-name dynamic-eth1 ifname ens34
成功添加的连接 'dynamic-eth1'(bca051ea-5aaf-45fb-9e08-5f673be25971)。
#type为ethernet,con-name链接名为dynamic-eth1,设备名ifname为ens34
[root@localhost network-scripts]# nmcli con up dynamic-eth1  #激活链接
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/26)
[root@localhost network-scripts]# nmcli con show  #查看连接
名称          UUID                                  类型            设备  
dynamic-eth1  bca051ea-5aaf-45fb-9e08-5f673be25971  802-3-ethernet  ens34 
ens32         152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
[root@localhost network-scripts]# nmcli device status  #查看设备状态
设备   类型      状态    CONNECTION    
ens32  ethernet  连接的  ens32        
ens34  ethernet  连接的  dynamic-eth1 
ens35  ethernet  已断开  --           
lo     loopback  未管理  --           
[root@localhost network-scripts]# nmcli device show ens34  #查看设备接口详细信息
GENERAL.设备:                           ens34
GENERAL.类型:                           ethernet
GENERAL.硬盘:                           00:0C:29:AF:76:B0
GENERAL.MTU:                            1500
GENERAL.状态:                           100 (连接的)
GENERAL.CONNECTION:                     dynamic-eth1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/26
WIRED-PROPERTIES.容器:                  开
IP4.地址[1]:                            10.0.1.179/24
IP4.网关:                               10.0.1.1
IP4.DNS[1]:                             202.106.0.20
IP4.DNS[2]:                             123.125.81.6
IP6.地址[1]:                            fe80::8249:699f:678e:d257/64
IP6.网关:

创建静态链接:

[root@localhost network-scripts]# nmcli con add type ethernet con-name static-eth2 ifname ens35 ip4 10.0.1.180/24 gw4 10.0.1.1
成功添加的连接 'static-eth2'(3c5f6321-c311-4938-af53-10c7b2a04461)。 #静态链接配置
[root@localhost network-scripts]# nmcli con up static-eth2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/28)
[root@localhost network-scripts]# nmcli con show
名称          UUID                                  类型            设备  
dynamic-eth1  bca051ea-5aaf-45fb-9e08-5f673be25971  802-3-ethernet  ens34 
ens32         152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
static-eth2   3c5f6321-c311-4938-af53-10c7b2a04461  802-3-ethernet  ens35 
[root@localhost network-scripts]# nmcli device status
设备   类型      状态    CONNECTION   
ens32  ethernet  连接的  ens32        
ens34  ethernet  连接的  dynamic-eth1 
ens35  ethernet  连接的  static-eth2  
lo     loopback  未管理  --           
[root@localhost network-scripts]# nmcli device show ens35
GENERAL.设备:                           ens35
GENERAL.类型:                           ethernet
GENERAL.硬盘:                           00:0C:29:AF:76:BA
GENERAL.MTU:                            1500
GENERAL.状态:                           100 (连接的)
GENERAL.CONNECTION:                     static-eth2
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/28
WIRED-PROPERTIES.容器:                  开
IP4.地址[1]:                            10.0.1.180/24
IP4.网关:                               10.0.1.1
IP6.地址[1]:                            fe80::e159:6735:3896:b9af/64
IP6.网关: 

#创建的两个链接配置文件
[root@localhost network-scripts]# cat ifcfg-dynamic-eth1 
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=dynamic-eth1   #链接名
UUID=bca051ea-5aaf-45fb-9e08-5f673be25971
DEVICE=ens34   #设备名
ONBOOT=yes
[root@localhost network-scripts]# cat ifcfg-static-eth2 
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.0.1.180
PREFIX=24
GATEWAY=10.0.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=static-eth2
UUID=3c5f6321-c311-4938-af53-10c7b2a04461
DEVICE=ens35
ONBOOT=yes


修改链接的IP地址:

nmcli connection show static-eht2  #查看可修改的属性

nmcli connection modify [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+

#查看接口IP
[root@localhost network-scripts]# ip addr|grep ens35
4: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.1.180/24 brd 10.0.1.255 scope global ens35
#修改链接IP
[root@localhost network-scripts]# nmcli connection modify static-eth2 ipv4.addr 10.0.1.182/24
#激活链接
[root@localhost network-scripts]# nmcli con up static-eth2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/29)
[root@localhost network-scripts]# ip addr|grep ens35
4: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.1.182/24 brd 10.0.1.255 scope global ens35

配置连接DNS:

[root@localhost ~]# nmcli connection modify static-eth2 ipv4.dns 202.106.0.20  #配置单个DNS
[root@localhost ~]# nmcli connection modify static-eth2 ipv4.dns "202.106.0.20 123.125.81.6" #配置多个DNS,会覆盖掉以前的配置
[root@localhost ~]# nmcli connection modify static-eth2 +ipv4.dns 202.106.0.20 #如不想覆盖,添加DNS需在前面用'+'
[root@localhost ~]# grep DNS /etc/sysconfig/network-scripts/ifcfg-static-eth2  #查看配置的DNS
DNS1=202.106.0.20
DNS2=123.125.81.6
IPV6_PEERDNS=yes
[root@localhost ~]# nmcli con up static-eth2 #需要重新激活,才能在DNS配置文件中生效
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 202.106.0.20
nameserver 123.125.81.6

可以使用交换模式配置连接:

[root@localhost ~]# nmcli con edit
无效连接类型:generic, 802-3-ethernet (ethernet), pppoe, 802-11-wireless (wifi), wimax, gsm, cdma, infiniband, adsl, bluetooth, ***, 802-11-olpc-mesh (olpc-mesh), vlan, bond, team, bridge, bond-slave, team-slave, bridge-slave, no-slave, tun, ip-tunnel, macvlan, vxlan
输入连接类型:team

===| nmcli interactive connection editor |===

添加新 'team' 连接

输入 'help' 或者 '?' 查看可用命令。
输入 'describe [<setting>.<prop>]' 查看详细的属性说明。

您可以编辑如下设置:connection, team, 802-3-ethernet (ethernet), ipv4, ipv6
nmcli> ?
------------------------------------------------------------------------------
---[ Main menu ]---
goto     [<setting> | <prop>]        :: go to a setting or property
remove   <setting>[.<prop>] | <prop> :: remove setting or reset property value
set      [<setting>.<prop> <value>]  :: set property value
describe [<setting>.<prop>]          :: describe property
print    [all | <setting>[.<prop>]]  :: print the connection
verify   [all | fix]                 :: verify the connection
save     [persistent|temporary]      :: save the connection
activate [<ifname>] [/<ap>|<nsp>]    :: activate the connection
back                                 :: go one level up (back)
help/?   [<command>]                 :: print this help
nmcli    <conf-option> <value>       :: nmcli configuration
quit                                 :: exit nmcli
------------------------------------------------------------------------------


4、用nmcli命令绑定多块网卡实例:

1、创建接口组
#查看可用的设备
[root@localhost ~]# nmcli dev status
设备   类型      状态    CONNECTION 
ens32  ethernet  连接的  ens32      
ens33  ethernet  连接的  有线连接 1 
ens34  ethernet  连接的  有线连接 2 
lo     loopback  未管理  --    
#使用ens33和ens34网卡在‘主动备份’模式下创建一个接口组。
#创建接口组语法:nmcli connection add type team con-name 连接名 ifname 接口名称 config JSON(JSON语法)
#json语法格式:{'runner':{'name':'METHOD'}}
#METHOD 是以下的其中一个:broadcast、activebackup、roundrobin、loadbalance 或者 lacp。
第一种模式:mod=0 ,即:(balance-rr)Round-robin policy(平衡抡循环策略)交换机配置Eth-Trunk
第二种模式:mod=1,即: (active-backup)Active-backup policy(主-备份策略)
第三种模式:mod=2,即:(balance-xor)XOR policy(平衡策略)
第四种模式:mod=3,即:broadcast(广播策略)
第五种模式:mod=4,即:(802.3ad)IEEE 802.3ad Dynamic link aggregation(IEEE802.3ad 动态链接聚合)
第六种模式:mod=5,即:(balance-tlb)Adaptive transmit load balancing(适配器传输负载均衡)
第七种模式:mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)
#创建接口组:
[root@localhost ~]# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
成功添加的连接 'team0'(8333f467-cf98-47c3-9c2b-f3b52b644f9d)。
#查看接口配置:
[root@localhost ~]# nmcli con show
名称        UUID                                  类型            设备  
ens32       152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
team0       8333f467-cf98-47c3-9c2b-f3b52b644f9d  team            team0 
有线连接 1  75e1a416-8c0c-3899-8211-858c91e911f2  802-3-ethernet  ens33 
有线连接 2  84b95abc-13be-35a5-bd05-ccc96108a09a  802-3-ethernet  ens34 
2、添加从设备到组接口:
#添加设备语法:
#nmcli con add type team-slave con-name 连接名 ifname 设备名 master 接口组名
#首先查看链接信息,发现ens33和ens34设备在连接中,正在使用,所以这里需要先把连接给删了。
[root@localhost ~]# nmcli con show
名称        UUID                                  类型            设备  
ens32       152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
team0       8333f467-cf98-47c3-9c2b-f3b52b644f9d  team            team0 
有线连接 1  75e1a416-8c0c-3899-8211-858c91e911f2  802-3-ethernet  ens33 
有线连接 2  84b95abc-13be-35a5-bd05-ccc96108a09a  802-3-ethernet  ens34 
[root@localhost ~]# nmcli con del "有线连接 1"  #这个属于默认连接配置
成功删除连接 '有线连接 1'(75e1a416-8c0c-3899-8211-858c91e911f2)。
[root@localhost ~]# nmcli con del "有线连接 2"
成功删除连接 '有线连接 2'(84b95abc-13be-35a5-bd05-ccc96108a09a)。
[root@localhost ~]# nmcli con show  #连接已删除
名称   UUID                                  类型            设备  
ens32  152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
team0  8333f467-cf98-47c3-9c2b-f3b52b644f9d  team            team0 
[root@localhost ~]# nmcli dev status  #查看可用设备,ens33,ens34未使用
设备   类型      状态                  CONNECTION 
ens32  ethernet  连接的                ens32      
team0  team      连接中(获得 IP 配置)  team0      
ens33  ethernet  已断开                --         
ens34  ethernet  已断开                --         
lo     loopback  未管理                --  
#现在开始添加从设备:
[root@localhost ~]# nmcli con add type team-slave con-name team0-p1 ifname ens33 master team0
成功添加的连接 'team0-p1'(22a90406-e8b1-4fb0-b21e-9e12558883e5)。
[root@localhost ~]# nmcli con add type team-slave con-name team0-p2 ifname ens34 master team0
成功添加的连接 'team0-p2'(750ecf69-6740-42be-830d-2daae44f5710)。
[root@localhost ~]# nmcli con show  #查看添加的从设备
名称      UUID                                  类型            设备  
ens32     152beb06-47c5-c5e8-95a9-385590654382  802-3-ethernet  ens32 
team0     8333f467-cf98-47c3-9c2b-f3b52b644f9d  team            team0 
team0-p1  22a90406-e8b1-4fb0-b21e-9e12558883e5  802-3-ethernet  ens33 
team0-p2  750ecf69-6740-42be-830d-2daae44f5710  802-3-ethernet  ens34 
3、为team0接口组配置静态ip地址,会修改ifcfg-team0配置文件:
[root@localhost network-scripts]# cat ifcfg-team0 #未配置IP之前
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=team0
UUID=8333f467-cf98-47c3-9c2b-f3b52b644f9d
ONBOOT=yes
DEVICETYPE=Team
#配置ip及网关地址:
[root@localhost network-scripts]# nmcli con mod team0 ipv4.addr 192.168.1.200/24 gw4 192.168.1.1
[root@localhost network-scripts]# cat ifcfg-team0  #添加了静态地址
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
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=team0
UUID=8333f467-cf98-47c3-9c2b-f3b52b644f9d
ONBOOT=yes
DEVICETYPE=Team
IPADDR=192.168.1.200 #添加了静态地址
PREFIX=24
GATEWAY=192.168.1.1
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
#现在我们修改BOOTPROTO模式为静态,也就是将它的值从dhcp改为none,不让它自动获取ip
[root@localhost network-scripts]# nmcli con mod team0 ipv4.method manual
[root@localhost network-scripts]# cat ifcfg-team0
DEVICE=team0
TEAM_CONFIG="{\"runner\":{\"name\":\"activebackup\"}}"
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
................................略
#激活接口组team0:
[root@localhost network-scripts]# nmcli con up team0
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
4、验证绑定
[root@localhost network-scripts]# ip add show team0  #查看组接口信息
5: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 00:0c:29:e6:ca:6a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/24 brd 192.168.1.255 scope global team0
       valid_lft forever preferred_lft forever
    inet6 fe80::f30b:560f:9c8:cff9/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost network-scripts]# teamdctl team0 state  #可以使用teamdctl命令检查网络组信息
setup:
  runner: activebackup   #显示模式
ports:   
  ens33   #物理接口状态
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens33    #显示活动中的从设备
  
#断开ens33接口,看能否激活被用设备ens34
[root@localhost network-scripts]# nmcli dev dis ens33
成功断开设备 'ens33'。
[root@localhost network-scripts]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens34   #活动链接改为了ens34备用从设备
  
  #查看ping连接,在切换过程中会有几个丢包产生:
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
请求超时。
请求超时。
请求超时。
请求超时。
来自 192.168.1.200 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
#当我们激活ens33连接后,它不会切换回ens33设备上,还会有少量丢包
[root@localhost network-scripts]# nmcli dev con ens33
成功用 'ens33' 激活了设备 '22a90406-e8b1-4fb0-b21e-9e12558883e5'。
[root@localhost network-scripts]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  ens33
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: ens34
#还可以用teamnl命令来查看组接口的端口等信息:
[root@localhost network-scripts]# teamnl team0 ports  #查看team0运行的端口
 3: ens33: up 1000Mbit FD 
 4: ens34: up 1000Mbit FD 
[root@localhost network-scripts]# teamnl team0 getoption activeport  #查看team0当前活动的端口
4
#到此绑定网卡的备份模式完成------------------------------------------end

5、配置使用broadcast模式,轮询模式:
[root@localhost network-scripts]# nmcli connection modify team0 config '{"runner":{"name":"broadcast"}}'
[root@localhost network-scripts]# nmcli con up team0
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/14)
[root@localhost network-scripts]# teamdctl team0 state
setup:
  runner: broadcast
ports:
  ens33
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
[root@localhost network-scripts]# teamnl team0 ports
 3: ens33: up 1000Mbit FD 
 4: ens34: up 1000Mbit FD
[root@localhost ~]# nmcli dev dis ens33  #断开一个设备,连接正常
成功断开设备 'ens33'。
[root@localhost ~]# teamdctl team0 state
setup:
  runner: broadcast
ports:
  ens34
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0

来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.200 的回复: 字节=32 时间<1ms TTL=64

------------------------------------------------------------------------------------end