[转帖]NetworkManager服务(nmcli)

networkmanager,服务,nmcli · 浏览次数 : 0

小编点评

**Bond0 IP Address Configuration:** * The script modifies the `bond-bond0` connection by adding the IP addresses `192.168.182.102/24`, `192.168.182.103/24`, and `192.168.100.103/24`. **Device Management Commands:** * The script allows you to manage the `bond-bond0` device using `nmcli` commands. * Some commonly used commands include: * `nmcli device status`: Shows the current device status. * `nmcli device show ens33`: Displays detailed information about the `ens33` interface. * `nmcli device set ifname ens33 autoconnect yes`: Sets the `autoconnect` flag for the `ens33` interface to `yes`. **Additional Commands:** * The script also allows you to monitor the device, disconnect it, delete it, and set its IP address. **Key Points:** * The script modifies the `bond-bond0` connection settings and allows you to manage it using `nmcli` commands. * It provides options for device management, including status, showing details, setting autoconnect, disconnection, and IP address configuration. * The script also allows you to monitor the device, disconnect it, and delete it. **Additional Notes:** * The script requires root privileges to modify the `bond-bond0` connection. * The `--complete-args` option is used to specify the input file for network configuration. * The script assumes that the network configuration files are located in the `/etc/sysconfig/network-scripts/` directory.

正文

一、简介

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
  • 1

二、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
                                                              
                                                              • 1

                                                              2)将NetwokManager服务关闭

                                                              $ systemctl stop NetworkManager
                                                              
                                                              • 1

                                                              3)重新启动一下network服务

                                                              $ systemctl restart network
                                                              
                                                              • 1

                                                              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
                                                              
                                                                文章知识点与官方知识档案匹配,可进一步学习相关知识
                                                                CS入门技能树Linux入门初识Linux23532 人正在系统学习中

                                                                与[转帖]NetworkManager服务(nmcli)相似的内容:

                                                                [转帖]NetworkManager服务(nmcli)

                                                                一、简介 NetworkManager服务是管理和监控网络设置的守护进程,是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。Centos7之前的版本都是通过network.service管理网络配置。到了Centos

                                                                [转帖]NetworkManager和network

                                                                一、 NetworkManager做了什么: NetworkManager确保网络连接正常。 当检测到系统中没有网络配置但有网络设备时,NetworkManager会创建临时连接以提供连接。 通过不同的工具(GUI,nmtui,nmcli)提供管理。 NetworkManager可以配置网络别名,I

                                                                [转帖]Linux下network与NetworkManager的和平共处

                                                                https://zhuanlan.zhihu.com/p/426926356 简介 我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManager并取消开机启动network就能正常启动。使用的Li

                                                                [转帖]Linux下network与NetworkManager的和平共处

                                                                https://zhuanlan.zhihu.com/p/426926356 简介 我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManager并取消开机启动network就能正常启动。使用的Li

                                                                [转帖]

                                                                Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

                                                                [转帖]

                                                                https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

                                                                [转帖]ISV 、OSV、 SIG 概念

                                                                ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

                                                                [转帖]Redis 7 参数 修改 说明

                                                                2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

                                                                [转帖]HTTPS中间人攻击原理

                                                                https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

                                                                [转帖]关于字节序(大小端)的一点想法

                                                                https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地