Linux network启动报错 && nmcli的使用详解

 更新时间:2026年04月07日 09:45:14   作者:yj_xqj  
本文描述了一台虚拟机服务器在网络启动时报错的问题,原因是同时启用了NetworkManager和Network两种网络管理服务,导致冲突,通过停止并禁用NetworkManager服务,重启Network服务解决了问题,文章还介绍了NetworkManager和nmcli的使用方法及常用命令

Linux network启动报错

报错现象

测试环境虚拟机测试的时候,发现有一台服务器重启之后,网络连接不上,通过控制台登录到服务器里面手动重启了network服务,发现提示报错无法启动。

通过journactl -u network -f可以看到network启动报错原因是因为两张网卡设备,找不到

排查过程

在发现启动network失败之后,尝试过使用if up 设备名的命令启动指定网卡

报错现象还是如上

查看网卡配置文件

网卡配置文件正常

查看NetworkMmanager 服务

通过与ai查询报错信息,发现服务器在重启之后启动了NetworkMmanager 这个服务

NetworkManager 是 Linux 系统中用于动态管理和控制网络连接的守护进程服务,是较新版本的Linux系统中统一使用的网络管理器。

由于目前使用的Linux系统还是centos 7.5的,默认是使用network对网络配置进行管理的。

没有对NetworkMmanager 服务的使用需求。所以就将NetworkMmanager 直接关闭了。

处理方案

停止NetworkMmanager 服务并禁用

systemctl disable --now NetworkManager

重启network服务

将NetworkMmanager 禁用之后,再重启network服务之后正常

故障原因

NetworkMmanager 和network 都是对Linux进行网络配置的管理器,但是如果两个服务同时启用的话,可能会导致冲突,网络服务异常,这个时候需要停止network或者是NetworkMmanager 。

一般来说我们直接使用系统安装时候默认自带的网络管理服务即可。因为当前使用的服务器版本是centos 7.5 默认自带的网络管理是network,所以就将NetworkMmanager 禁用,这个根据实际服务器版本决定使用那个,例如像openeuler和Kyline、Ubuntu 24这些较高的Linux版本,默认使用的网络管理服务就是NetworkMmanager。

nmcli 的使用

nmcli 是 NetworkManager Command Line Interface 的缩写,是 Linux 系统中用于控制和管理 NetworkManager 服务的官方命令行工具。

NetworkManager 是后台运行的“网络管家”(守护进程),nmcli 是你与这个管家对话的“遥控器”(命令行客户端)

nmcli的常用命令

nmcli device status (列出所有物理/虚拟网卡及其当前状态(是否被托管、是否已连接))

[root@localhost ~]# nmcli  device status
DEVICE  TYPE      STATE         CONNECTION
ens36   ethernet  connected     ens36
ens33   ethernet  disconnected  --
lo      loopback  unmanaged     --

看所有服务于网卡接口的连接,connection指一组关于网卡的配置信息,对于一个单一的网卡设备可以有多个连接,并且可以在多个连接之间切换,但一个网卡接口一次只能对应一个连接生效

列名英文全称含义说明示例解读
DEVICEDevice Name物理/虚拟网卡名称,由内核识别ens36 和 ens33 是两张网卡
TYPEDevice Type设备类型,如 ethernet、wifi、bridge 等两张都是有线以太网网卡
STATEDevice State设备当前运行状态(最关键!)ens36 已连网,ens33 未连网
CONNECTIONActive Connection当前激活的连接配置名称ens36 绑定了同名配置,ens33 未绑定任何配置

nmcli connection show(显示所有已保存的连接配置文件(包含名称、类型、绑定的设备))

[root@localhost ~]# nmcli connection show
NAME   UUID                                  TYPE      DEVICE
ens36  346751c5-0779-3722-b19a-8fde14fccdc5  ethernet  ens36

激活/停用某个连接(修改配置后必须执行此步才会生效)

  • nmcli connection up 设备名 激活连接
  • nmcli connection down 设备名 停止连接

配置网卡开机自启

  • nmcli connection modify 设备名 connection.autoconnect yes 实际修改的是网卡配置文件ONBOOT=yes
[root@localhost ~]# nmcli connection modify ens36 connection.autoconnect yes

修改现有连接的 IP 地址(仅改配置,不立即生效)

nmcli connection modify 设备名 ipv4.addresses IP地址/掩码位数
nmcli connection modify 设备名 ipv4.method manual ipv4.addresses IP地址/掩码位数

ipv4.method manual 表示设置网卡获取IP的方式手动指定

直接让某个物理网卡自动连网(NM 会自动匹配或创建配置)

  • nmcli device connect 设备名 执行了该命令之后,NM会创建一个网卡配置文件。
  • 不过该网卡配置文件获取IP地址的方式是dhcp

修改网关

nmcli connection modify 设备名 ipv4.gateway 网关IP地址

修改DNS

nmcli connection modify 设备名 ipv4.DNS DNS定制

nmcli高级应用

单网卡设置多连接

添加连接 

nmcli connection show 列出 NetworkManager 中所有已保存的网络连接配置文件

当前我的ens36的这张网卡只有一个连接,可以再创建一个连接并配置IP地址

[root@localhost yum.repos.d]# nmcli connection  show
NAME   UUID                                  TYPE      DEVICE
ens36  346751c5-0779-3722-b19a-8fde14fccdc5  ethernet  ens36
[root@localhost yum.repos.d]# nmcli connection  add  con-name  test  type ethernet  ifname ens36
Connection 'test' (0284eb11-1c98-472b-9c0c-e271445facdd) successfully added.
[root@localhost yum.repos.d]# nmcli connection  show
NAME   UUID                                  TYPE      DEVICE
ens36  346751c5-0779-3722-b19a-8fde14fccdc5  ethernet  ens36
test   0284eb11-1c98-472b-9c0c-e271445facdd  ethernet  --

上图创建一个新的test的连接,指向了ens36的网卡设备,现在可以给test的连接创建IP地址。

网卡连接切换命令:nmcli connection up 连接名 设备名

# 设置新链接test的IP地址,网关、dns
[root@localhost yum.repos.d]# nmcli connection  modify test ipv4.method manual  ipv4.addresses 		10.201.9.199/24 ipv4.gateway 10.201.9.1 ipv4.dns 8.8.8.8  connection.autoconnect  no
# 激活test的网卡连接,即可切换到test所配置的IP地址
[root@localhost yum.repos.d]# nmcli connection  up test ens36

删除连接

nmcli connection delete 连接名的UUID

[root@localhost ~]# nmcli  connection  show
NAME   UUID                                  TYPE      DEVICE
ens36  346751c5-0779-3722-b19a-8fde14fccdc5  ethernet  ens36
test   0284eb11-1c98-472b-9c0c-e271445facdd  ethernet  --
[root@localhost ~]#
[root@localhost ~]# nmcli connection  delete  0284eb11-1c98-472b-9c0c-e271445facdd
Connection 'test' (0284eb11-1c98-472b-9c0c-e271445facdd) successfully deleted.
[root@localhost ~]# nmcli connection  show
NAME   UUID                                  TYPE      DEVICE
ens36  346751c5-0779-3722-b19a-8fde14fccdc5  ethernet  ens36

新网卡添加连接

给虚拟机添加一张新的网卡,针对ens37的网卡创建一个连接,并配置IP地址

[root@localhost ~]# nmcli connection  add  con-name   ens37   type ethernet  ifname ens37
Connection 'ens37' (341fa9d4-d0f3-4cad-b353-61a6d6d041f8) successfully added.
[root@localhost ~]# nmcli connection  modify ens37 ipv4.method manual  ipv4.addresses 10.201.9.199/24 ipv4.gateway 10.201.9.1 ipv4.dns 8.8.8.8  connection.autoconnect  no
[root@localhost ~]# nmcli connection  up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25)
[root@localhost ~]# ip ad
4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3d:02:dc brd ff:ff:ff:ff:ff:ff
    inet 10.201.9.199/24 brd 10.201.9.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::101a:fe5b:e9d5:34b2/64 scope link noprefixroute
       valid_lft forever preferred_lft forever=

使用 nmcli connection add con-name ens37 type ethernet ifname ens37 创建完连接之后可以看到在/etc/sysconfig/network-scripts/目录下面就会生成一个ens37连接名的配置文件。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在CentOS上安装搭建PHP+Apache+Mysql的服务器环境

    在CentOS上安装搭建PHP+Apache+Mysql的服务器环境

    今天小编就为大家分享一篇关于在CentOS上安装搭建PHP+Apache+Mysql的服务器环境,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux Samba服务器超详细安装配置(附问题解决)

    Linux Samba服务器超详细安装配置(附问题解决)

    在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,本文详细的介绍一下Linux Samba服务器安装配置,感兴趣的可以了解一下
    2021-08-08
  • Xshell连接不上虚拟机的解决办法

    Xshell连接不上虚拟机的解决办法

    本文主要介绍了Xshell连接不上虚拟机的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • 移植新内核到Linux系统上的操作步骤

    移植新内核到Linux系统上的操作步骤

    今天小编就为大家分享一篇关于移植新内核到Linux系统上的操作步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详细介绍通过配置Apache实现404页面替换

    详细介绍通过配置Apache实现404页面替换

    这篇文章主要介绍了详细介绍通过配置Apache实现404页面替换的相关资料,这里提供实现方法,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • Centos7安装JDK11全过程

    Centos7安装JDK11全过程

    文章详细介绍了如何在Linux系统上下载、卸载和安装JDK 11,包括查看当前JDK版本、卸载旧版本、解压安装包、配置环境变量等步骤
    2026-03-03
  • Apache2.2以上版本与Tomcat整合配置及负载均衡实现

    Apache2.2以上版本与Tomcat整合配置及负载均衡实现

    今天技术总监叫实现Apache和Tomacat整合,结果找了很多的资料,发现最方便的还是本文啊.apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便,感兴趣的朋友可以了解下啊
    2013-01-01
  • Linux下监视NVIDIA的GPU使用情况详解

    Linux下监视NVIDIA的GPU使用情况详解

    这篇文章主要介绍了Linux下监视NVIDIA的GPU使用情况详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 虚拟机安装Linux rhel7.3操作系统(具体步骤)

    虚拟机安装Linux rhel7.3操作系统(具体步骤)

    这篇文章主要介绍了虚拟机安装Linux rhel7.3操作系统(具体步骤),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • linux新文件权限设置之umask的深入理解

    linux新文件权限设置之umask的深入理解

    这篇文章主要给大家介绍了关于linux新文件权限设置之umask的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03

最新评论