• NetworkManager服务(nmcli)


    一、简介

    NetworkManager服务是管理和监控网络设置的守护进程,是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。Centos7之前的版本都是通过network.service管理网络配置。到了Centos7就同时支持network.service和NetworkManager.service(简称NM),相当于在Centos7的一个过渡,默认情况下这2个服务都有开启,但是因为NetworkManager.service当时的兼容性不好,大部分人都会将其关闭。在RHEL 8/Centos 8上已废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。

    NetworkManager的作用:

    NetworkManager主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。

    在RHEL 8/Centos 8有三种方法配置网络:

    • 通过nmcli connection add命令配置,会自动生成ifcfg文件。
    • 手动配置ifcfg文件,通过nmcli connection reload来加载生效。
    • 手动配置ifcfg文件,通过传统network.service来加载生效。
    NetworkManager在系统中的管理工具为nmcli
    

    二、nmcli简单使用

    2.1、nmcli命令的选项与参数

    语法:

    nmcli [OPTIONS] OBJECT { COMMAND | help }
    OPTIONS
          -a, --ask                ask for missing parameters
          -c, --colors auto|yes|no            whether to use colors in output
          -e, --escape yes|no            escape columns separators in values
          -f, --fields <field,...>|all|common        specify fields to output
          -g, --get-values <field,...>|all|common    shortcut for -m tabular -t -f
          -h, --help                print this help
          -m, --mode tabular|multiline        output mode
          -o, --overview                overview mode
          -p, --pretty                pretty output
          -s, --show-secrets            allow displaying passwords
          -t, --terse                terse output
          -v, --version                show program version
          -w, --wait <seconds>            set timeout waiting for finishing operations
    
    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
    
    2.1、general 常规选项

    命令格式:nmcli general {status|hostname|permissions|logging}
    命令描述:使用此命令可以显示网络管理器状态和权限,你可以获取和更改系统主机名,以及网络管理器日志记录级别和域。

    2.1.1、显示网络管理器的整体状态(status

    $ nmcli general status
    STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
    connected  full          enabled  enabled  enabled  enabled
    

    2.1.2、获取主机名或该更主机名(hostname

    # 查询主机名
    $ nmcli general hostname
    centos8-nat-168-182-152
    # 设置主机名
    $ nmcli general hostname centos8-nat-168-182-152-test
    $ hostname
    centos8-nat-168-182-152-test
    

    2.1.3、显示当前用户对网络管理器可允许的操作权限(permissions

    $ nmcli general permissions 
    PERMISSION                                                        VALUE 
    org.freedesktop.NetworkManager.checkpoint-rollback                yes   
    org.freedesktop.NetworkManager.enable-disable-connectivity-check  yes   
    org.freedesktop.NetworkManager.enable-disable-network             yes   
    org.freedesktop.NetworkManager.enable-disable-statistics          yes   
    org.freedesktop.NetworkManager.enable-disable-wifi                yes   
    org.freedesktop.NetworkManager.enable-disable-wimax               yes   
    org.freedesktop.NetworkManager.enable-disable-wwan                yes   
    org.freedesktop.NetworkManager.network-control                    yes   
    org.freedesktop.NetworkManager.reload                             yes   
    org.freedesktop.NetworkManager.settings.modify.global-dns         yes   
    org.freedesktop.NetworkManager.settings.modify.hostname           yes   
    org.freedesktop.NetworkManager.settings.modify.own                yes   
    org.freedesktop.NetworkManager.settings.modify.system             yes   
    org.freedesktop.NetworkManager.sleep-wake                         yes   
    org.freedesktop.NetworkManager.wifi.scan                          yes   
    org.freedesktop.NetworkManager.wifi.share.open                    yes   
    org.freedesktop.NetworkManager.wifi.share.protected               yes  
    

    2.1.4、获取和更改网络管理器日志记录级别和域,没有任何参数当前日志记录级别和域显示(loggin

    $ nmcli general logging
    LEVEL  DOMAINS                                                                                                                                                                                                                       
    INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY 
    
    2.2、networking 网络控制

    命令格式:nmcli networking {on|off|connectivity}
    命令描述:查询网络管理器网络状态,开启和关闭网络

    选项:

     - on: 禁用所有接口
     - off: 开启所有接口
     - connectivity:获取网络状态,可选参数checl告诉网络管理器重新检查连接性,否则显示最近已知的状态。而无需重新检查。(可能的状态如下所示)
    	- none: 主机为连接到任何网络
     	- portal: 无法到达完整的互联网
     	- limited: 主机已连接到网络,但无法访问互联网
     	- full: 主机连接到网络,并具有完全访问
     	- unknown: 无法找到连接状态
    

    2.2.1、获取网络状态

    $ nmcli networking connectivity
    full
    

    2.2.2、重启所有网络接口

    $ nmcli networking off && nmcli networking on
    
    2.3、radio 无线限传输控制

    命令格式:nmcli radio {all|wifi|wwan}
    显示无线开关状态,或启用和禁用开关

    2.3.1、显示无线状态

    $ nmcli radio all
    WIFI-HW  WIFI     WWAN-HW  WWAN    
    enabled  enabled  enabled  enabled 
    $ nmcli radio wifi
    enabled
    $ nmcli radio wwan
    enabled
    
    2.4、monitor 活动监视器

    活动监视器(ACTIVITY MONITOR)
    观察网络管理器活动。监视连接的变化状态、设备或连接配置文件。

    2.5、connection 连接管理

    命令格式:nmcli connection {show|up|down|modify|add|edit|clone|delete|monitor|reload|load|import|export}
    这是主要使用的一个功能。

    2.5.1、列出活动的连接,或进行排序(+-为升降序)

    # 查看所有连接状态
    $ nmcli connection show
    # 等同于nmcli connection show --order +active
    $ nmcli connection show --active
    # 以活动的连接进行排序
    $ nmcli connection show --order +active
    # 将所有连接以名称排序
    $ nmcli connection show --order +name
    # 将所有连接以类型排序(倒序)
    $ nmcli connection show --order -type
    

    2.5.2、查看指定连接的详细信息

    $ nmcli con show bond-bond0
    

    2.5.3、激活连接,提供连接名称或uuid进行激活,若未提供,则可以使用ifname指定设备名进行激活(up

    # 以连接名进行激活
    $ nmcli connection up bond-bond0
    # 以uuid进行激活
    $ nmcli connection up 3a538589-12b9-4a82-adda-fe3da844510c
    # 以设备接口名进行激活
    $ nmcli connection up ifname bond0
    

    2.5.4、停用连接,提供连接名或uuid进行停用,若未提供,则可以使用ifname指定设备名进行激活(down

    # 以连接名进行激活
    $ nmcli connection donw bond-bond0
    # 以uuid进行激活
    $ nmcli connection down 3a538589-12b9-4a82-adda-fe3da844510c
    # 以设备接口名进行激活
    $ nmcli connection donw ifname bond0
    

    2.5.5、【修改】这些属性可以用nmcli connection show bond-bond0进行获取,然后可以修改、添加或删除属性,若要设置属性,只需指定属性名称后跟值,空值将删除属性值,同一属性添加多个值使用+。同一属性删除指定值用-加索引(modify

    添加多个ip(+ipv4.addresses)

    # 添加三个ip
    $ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.102/24
    $ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.103/24
    $ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.104/24
    # 查看,查不到。
    $ nmcli -f IP4 connection show bond-bond0
    IP4.ADDRESS[1]:                         192.168.182.152/24
    IP4.GATEWAY:                            192.168.182.2
    IP4.ROUTE[1]:                           dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.182.2, mt = 300
    IP4.DNS[1]:                             8.8.8.8
    # 启用配置
    $ nmcli connection up bond-bond0
    # 再次查看,就可以查到刚才添加的三个ip
    $ nmcli -f IP4 connection show bond-bond0
    IP4.ADDRESS[1]:                         192.168.182.152/24
    IP4.ADDRESS[2]:                         192.168.182.102/24
    IP4.ADDRESS[3]:                         192.168.182.103/24
    IP4.ADDRESS[4]:                         192.168.182.104/24
    IP4.GATEWAY:                            192.168.182.2
    IP4.ROUTE[1]:                           dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[2]:                           dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[3]:                           dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[4]:                           dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[5]:                           dst = 0.0.0.0/0, nh = 192.168.182.2, mt = 300
    IP4.DNS[1]:                             8.8.8.8
    

    删除指定ip(-ipv4.addresses)

    # 删除刚刚添加的三个ip
    $ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.102/24
    $ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.103/24
    $ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.104/24
    # 启用配置
    $ nmcli connection up bond-bond0
    # 查看
    $ nmcli -f IP4 connection show bond-bond0
    

    2.5.5、【添加】这是创建一个新的连接,需要指定新创建连接的属性,语法与modify相同(add

    # 查看当前所有连接,c是connection的缩写
    $ nmcli c show
    $ nmcli con add con-name eth1 type ethernet  autoconnect yes ifname ens33
    $ nmcli c show
    # con-name     连接名称
    # type              连接类型
    # autoconnect 是否自动连接
    # ifname          连接到的设备名称
    

    2.5.6、克隆连接,克隆一个存在的连接,除了连接名称和uuid是新生成的,其他都是一样的(clone

    $ nmcli connection clone eth1 eth1_1
    

    2.5.7、【删除】删除连接,这将删除一个连接(delete),con 是connection的缩写

    $ nmcli con delete eth1_1
    

    2.5.8、从磁盘加载/重新加载一个或多个连接文件,例如你手动创建了一个/etc/sysconfig/network-scripts/ifcfg-ethx连接文件,你可以将其加载到网络管理器,以便管理。

    $ echo -e "TYPE=Ethernet\nNAME=ethx" > /etc/sysconfig/network-scripts/ifcfg-ethx
    $ nmcli con show
    $ nmcli con load /etc/sysconfig/network-scripts/ifcfg-ethx
    $ nmcli connection show
    

    2.5.9、监视连接配置文件活动(monitor)

    $ nmcli connection monitor bond-bond0
    
    2.6、device 设备管理

    命令格式:nmcli device {status|show|set|connect|reapply|modify|disconnect|delete|monitor|wifi|lldp}
    显示和管理设备接口。该选项有很多功能,例如连接wifi,创建热点,扫描无线,邻近发现等,下面仅列出常用选项。详细功能可使用nmcli device help查看。

    2.6.1、打印设备状态,如果没有将命令指定给nmcli device,则这是默认操作(status
    以下两条命令对等

    $ nmcli device status
    $ nmcli device
    

    2.6.2、显示所有设备接口的详细信息(show

    $ nmcli device show ens33
    

    2.6.3、设置设备属性(set

    $ nmcli device set ifname ens33 autoconnect yes
    

    2.6.4、连接设备(connection)。提供一个设备接口,网络管理器将尝试找到一个合适的连接, 将被激活。它还将考虑未设置为自动连接的连接。(默认超时为90s)

    $ nmcli dev connect ens33
    

    2.6.5、修改设备上处于活动的设备(modify),但该修改只是临时的,并不会写入文件。(语法与 nmcli connection modify 相同)

    $ nmcli device modify ens33 +ipv4.addresses 192.168.100.103/24
    

    2.6.6、断开当前连接的设备(disconnect),防止自动连接。但注意,断开意味着设备停止!但可用 connect 进行连接

    $ nmcli device disconnect ens33
    

    2.6.7、删除设备(delete),该命令从系统中删除接口。请注意, 这仅适用于诸如bonds, bridges, teams等软件设备。命令无法删除硬件设备 (如以太网)。超时时间为10秒

    $ nmcli device delete bond0
    

    2.6.8、 监视设备活动(monitor)。每当指定的设备更改状态时, 此命令都会打印一行

    $ nmcli device monitor bond0
    
    2.7、nmcli 返回状态码

    mcli 如果成功退出状态值为0,如果发生错误则返回大于0的值。

    0: 成功-指示操作已成功
    
    1: 位置或指定的错误
    
    2: 无效的用户输入,错误的nmcli调用
    
    3: 超时了(请参阅 --wait 选项)
    
    4: 连接激活失败
    
    5: 连接停用失败
    
    6: 断开设备失败
    
    7: 连接删除失败
    
    8: 网络管理器没有运行
    
    10: 连接、设备或接入点不存在
    
    65: 当使用 --complete-args 选项,文件名应遵循。
    

    三、network和NetworkManager之间的区别

    network:对网卡的配置
    NetworkManager:这个服务由几个部分组成;一个是管理系统网络连接;一个是允许用户管理网络连接的客户端程序,使用它可以更好的管理网络
    

    四、network和NetworkManager两个服务之间冲突解

    在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。

    1)将NetworkManager 服务设置开机不启动

    $ chkconfig NetworkManager off
    

    2)将NetwokManager服务关闭

    $ systemctl stop NetworkManager
    

    3)重新启动一下network服务

    $ systemctl restart network
    

    4)重新加载配置

    # 重新加载所有网卡配置
    nmcli c reload
    # 指定加载
    nmcli c reload /etc/sysconfig/network-scripts/ifcfg-ens33
    # 重新加载所有网卡配置(可靠,推荐)
    nmcli networking off && nmcli networking on
    ifdown ens33 && ifup ens33
    nmcli con down ens33 && nmcli con up ens33
    
  • 相关阅读:
    Hibernate4集成 Annotation使用教程
    搭建SSH入过的那些坑
    Tomcat配置虚拟目录
    java中类名.class、实例.getclass()区别
    nginx使用ssl模块配置HTTPS支持
    nginx安装配置域名转发
    RedHat安装DB2详细步骤(附卸载、备份恢复步骤)
    iOS学习笔记-084.粒子效果——路径移动
    iOS APP打包上传到AppStore的最新步骤
    git使用命令, 特别:git checkout -b a 与 git branch a区别
  • 原文地址:https://www.cnblogs.com/liugp/p/16398715.html
Copyright © 2020-2023  润新知