nmcli命令网络配置详解

06-01 1065阅读

文章目录

  • nmcli命令,由软件 NetworkManager 提供的命令
    • 基本格式:
    • 常用选项
    • 相关系统指令
    • 常用命令及简写命令使用举例
    • 常用操作对象及命令
      • nmcli networking
      • nmcli general
      • nmcli connection
        • modify 修改连接
          • 修改连接常用示例
          • add 新增连接
            • 示例
            • 重载配置文件
              • 网络配置文件说明
              • nmcli device

                nmcli命令,由软件 NetworkManager 提供的命令

                • 说明:

                  用nmcli配置之前,不要对接口执行"ip addr"操作,不然会冲突,配置失败。

                  nmcli主要是解决并发操作ifconfig/ipaddr的问题,主要被gui tool调用。

                  服务器环境需要自启动接口,还是手动修改在/etc/sysconfig/network-script下的ifc-xxx文件

                  使用nmcli命令配置的网络配置可以立即生效且系统重启后配置也不会丢失。使用 nmcli 命令时,必须确保 NetworkManager 为运行状态。

                • 介绍:nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置由NetworkManager管理网络连接的方法(nm 代表 NetworkManager,cli 代表 Command-Line)。

                  基本格式:

                  nmcli [OPTIONS] OBJECT { COMMAND | help }
                  # 例如
                  nmcli help # 获取详细介绍
                  
                  • OPTIONS:选项,用于指定命令的行为或输出格式。
                  • OBJECT:操作对象,如general(一般信息)、device(网络设备)、connection(网络连接)等。
                  • COMMAND:对指定的操作对象执行的操作命令,如status(显示状态)、show(显示信息)、up(启用连接)、down(禁用连接)等。

                    常用选项

                    -t 或 --terse:以简洁格式显示输出,不包括表头等信息。

                    -f 或 --fields:指定要显示的字段,以逗号分隔。

                    -p 或 --pretty:以更美观的格式显示输出,包括表头和分隔线。

                    -v 或 --verbose:显示详细输出,包括额外的信息和调试信息。

                    -h 或 --help:显示命令的帮助信息。

                    相关系统指令

                    注意:NetworkManager 中开头的 N 和中间的 M 必须大写。

                    # 查看状态
                    systemctl status NetworkManager
                    # 启动
                    systemctl start NetworkManager
                    # 重启
                    systemctl restart NetworkManager
                    # 关闭
                    systemctl stop NetworkManager
                    # 查看是否开机启动
                    systemctl is-enabled NetworkManager
                    # 开机启动
                    systemctl enable NetworkManager
                    # 禁止开机启动
                    systemctl disable NetworkManager
                    

                    常用命令及简写命令使用举例

                    status 是 general 的默认项,可以省略不写。

                    # 显示 NetworkManager 是否接管网络设置
                    nmcli networking
                    # 显示NetworkManager状态
                    nmcli general status
                    nmcli g
                    # 显示所有连接
                    nmcli connection show
                    nmcli c s
                    # 只显示当前活动连接,如下所示添加 -a, --active
                    nmcli connection show --active
                    nmcli c s -a
                    # 显示由NetworkManager识别到的设备及其状态
                    nmcli device status
                    nmcli d
                    # 使用nmcli工具启动和停止网络接口,在root权限下执行如下命令(enp3s0为接口名称,需要根据实际情况进行更改)
                    sudo nmcli connection up id enp3s0
                    sudo nmcli device disconnect enp3s0
                    

                    常用操作对象及命令

                    nmcli networking

                    网络连接状态(CONNECTIVITY)共有五种:full、limited(连网,但无法上网)、portal(连网,但需要登陆认证后才能上网)、none(没连网)和 unknown。

                    networking 可以简写为 n、ne、net、netw

                    # 显示 NetworkManager 是否接管网络设置
                    nmcli networking
                    # 查看网络连接状态
                    nmcli n connectivity
                    # 开启网络连接
                    nmcli n on
                    # 关闭网络连接
                    nmcli n off
                    

                    nmcli general

                    STATE 显示网络是否连接;

                    CONNECTIVITY 与前面介绍的 nmcli n c 相同;

                    WIFI-HW 表示 WIFI 硬件开关、WIFI 表示 WIFI 软件开关;

                    nmcli命令网络配置详解
                    (图片来源网络,侵删)

                    WWAN-HW 表示 WWAN 硬件开关、WWAN 表示 WWAN 软件开关。

                    general 可以简写为 g、ge、gen、gene

                    nmcli命令网络配置详解
                    (图片来源网络,侵删)
                    # 显示系统网络状态
                    nmcli general status
                    nmcli g
                    # 显示主机名
                    nmcli g hostname
                    nmcli g h
                    # 更改主机名,NEW_HOST_NAME 是你设置的新主机名。主机名存放在 /etc/hostname 文件中。
                    # 修改主机名后,需要重启 NetworkManager。
                    nmcli g hostname newHostName
                    nmcli g h NEW_HOST_NAME
                    # 显示或修改NetworkManager的访问控制权限。
                    nmcli general permissions
                    nmcli g p
                    

                    nmcli connection

                    connection 可以简写为 c、co、con、conn

                    # 显示所有网络连接的信息
                    nmcli connection show # 可以显示每个网络的uuid
                    # nmcli connection show 有一个 --active 参数,可以只显示当前启动的连接
                    nmcli c s --active
                    nmcli c s -a        # 因为 show 后面有参数项,所以此时的 show 不能省
                    # 显示某一特定连接的详细信息(以 接口为ens33 为例)
                    nmcli c s ens33 # 在ubuntu 18.04上这个命令无效,需要把ens33换成ens33的uuid
                    # 启动指定连接,如果 ens33 本来就出于连接状态,那此命令会重启 ens33
                    nmcli c up ens33
                    # 关闭指定连接,关闭连接后,执行"nmcli c"命令,DEVICE 项将显示为 --
                    nmcli c down ens33
                    # 删除指定连接(ens33)
                    nmcli c delete ens33
                    nmcli c de ens33      # delete 不可简写为 d,否则与 down 冲突,但可以简写为 de
                    
                    modify 修改连接

                    例如:

                    nmcli命令网络配置详解
                    (图片来源网络,侵删)
                    nmcli c modify ens33  [ + | - ]选项 选项值
                    nmcli c m ens33  [ + | - ]选项 选项值
                    
                    修改连接常用示例

                    注意:必须先修改 ipv4.address,然后才能修改 ipv4.method!

                    nmcli c m ens33 ipv4.address 192.168.80.10/24  # 修改 IP 地址和子网掩码
                    nmcli c m ens33 +ipv4.addresses 192.168.80.100/24 # 添加一个 IP 地址和子网掩码
                    nmcli c m ens33 ipv4.method manual             # 修改为静态配置,默认是 auto
                    nmcli c m ens33 ipv4.gateway 192.168.80.2      # 修改默认网关
                    nmcli c m ens33 ipv4.dns 192.168.80.2          # 修改 DNS
                    nmcli c m ens33 +ipv4.dns 223.5.5.5            # 添加一个 DNS
                    nmcli c m ens33 ipv6.method ignored            # 将 IPv6 禁用,针对CentOS8,三个可选项:disabled、auto、manual
                    nmcli c m ens33 connection.autoconnect yes     # 开机启动
                    
                    • 用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例)
                      nmcli c m ens33 ipv4.method ""
                      
                      • 修改链接选项有很多,详细信息可以通过以下命令查看。可以主要看里面 connection setting 和 ipv4 setting 部分。
                        man 5 nm-settings-nmcli
                        
                        add 新增连接
                        nmcli c add tyep 连接类型 选项 选项值
                        nmcli c a tyep 连接类型 选项 选项值
                        

                        type 为必选项,我们通常用到的是 802-3-ethernet(别名 ethernet)。

                        • 选项与前面介绍的“修改连接”中的选项一样,其中重要的几个选项:

                          connection.id(别名 con-name):连接名;

                          connection.interface-name(别名 ifname):设备名;

                          connection.autoconnect(别名 autoconnect):是否开机自启,其值只能是 yes 或 no,默认 yes。

                          示例
                          • 添加一个新的以太网连接配置:
                            nmcli c a type ethernet con-name ens36 ifname ens36 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
                            

                            注意:

                            如果网络接口名称或连接名称已经存在,则可能需要先删除现有的连接或更改名称以避免冲突

                            在修改网络配置后,你可能需要重新启动 NetworkManager 或重启系统来应用更改

                            nmcli:这是 NetworkManager 的命令行界面工具。

                            c a:这是 connection add 的缩写,表示添加一个新的连接。

                            type ethernet:指定连接的类型为以太网。

                            con-name ens36:设置连接的名称(或配置文件名)为 ens36。

                            ifname ens36:指定这个连接将使用的网络接口名称为 ens36。

                            ipv4.addresses 192.168.1.100/24:设置静态 IP 地址为 192.168.1.100,子网掩码为 255.255.255.0(等同于 /24)。

                            ipv4.gateway 192.168.1.1:设置默认网关为 192.168.1.1。

                            ipv4.dns “8.8.8.8 8.8.4.4”:设置 DNS 服务器为 8.8.8.8 和 8.8.4.4。

                            ipv4.method manual:指定 IPv4 配置方法为手动(即静态 IP)。

                            • 上方的命令可以拆分为
                              nmcli c a type ethernet con-name ens36 ifname ens36
                              # 为刚刚创建的连接配置 IPv4 地址。
                              nmcli c mod ens36 ipv4.addresses 192.168.1.100/24
                              # 设置 DNS 服务器地址。
                              nmcli c mod ens36 ipv4.dns "8.8.8.8 8.8.4.4"
                              # 指定 IPv4 配置方法为手动,这意味着不会使用 DHCP 来获取 IP 地址。
                              nmcli c mod ens36 ipv4.method manual
                              # 最后,激活连接以使配置生效。
                              nmcli c up ens36
                              
                              重载配置文件

                              建议使用 nmcli 命令来设置网络参数,不要直接修改此文件。

                              # 重载所有连接的配置文件
                              nmcli c reload
                              nmcli c r
                              # 重载某一指定连接的配置文件
                              nmcli c load ifcfg-ens33
                              nmcli c l ifcfg-ens33
                              

                              注意:

                              网络配置文件默认保存在 /etc/sysconfig/network-scripts/ 路径下,如果配置文件在其它位置,则需要填写完整路径。

                              网络配置文件的命名方式就是ifcfg-连接名,例如 ens33 的配置文件名为ifcfg-ens33。

                              rocky9的话,配置文件路径变了,在 /etc/NetworkManage/SystemConnection/

                              网络配置文件说明
                              TYPE=Ethernet           # 以太网
                              PROXY_METHOD=none
                              BROWSER_ONLY=no
                              BOOTPROTO=none          # 静态配置,等同于 ipv4.method manual
                              DEFROUTE=yes
                              IPV4_FAILURE_FATAL=no
                              IPV6INIT=no
                              NAME=ens33              # 连接名
                              UUID=16862343-b55e-4248-b05d-a3ea662a84a4
                              DEVICE=ens33            # 设备名
                              ONBOOT=yes              # 开机自启
                              IPADDR=192.168.80.10    # IP 地址
                              IPADDR1=192.168.80.100
                              PREFIX=24               # 子网掩码
                              PREFIX1=24
                              GATEWAY=192.168.80.2    # 网关
                              DNS1=192.168.80.2       # DNS1
                              DNS2=114.114.114.114    # DNS2
                              

                              nmcli device

                              device 可以简写为 d、de、dev

                              # 显示所有网络接口设备的状态
                              nmcli device status
                              nmcli d
                              # 显示所有设备的详细信息
                              nmcli d show
                              nmcli d sh    # show 不可简写为 s,否则与 status 冲突,但可以简写为 sh
                              # 显示某一特定设备的详细信息
                              nmcli d sh ens33
                              # 连接设备,如果 ens33 本来就处于连接状态,那此命令会重启 ens33,并且触发重新生成 ifcfg文件
                              nmcli d connect ens33
                              nmcli d c ens33
                              # 断开设备
                              nmcli d disconnect ens33
                              nmcli d d ens33
                              # 更新设备信息(只有在设备处于连接状态,才可以更新设备;更新设备也会重启连接)
                              nmcli d reapply ens33
                              nmcli d r ens33
                              # 显示附近的无线网络设备的详细信息。
                              nmcli device wifi list
                              # 连接到指定的无线网络,需要指定SSID和密码。
                              nmcli device wifi connect "SSID" password "password"
                              # 断开当前的无线网络连接。
                              nmcli device wifi disconnect
                              
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码