Bug日记:Linux中systemctl restart network失败问题,网络故障

日期

2023年10月25日


问题描述

在尝试使用 systemctl restart network 重启网络服务时,出现以下错误:

bash 复制代码
Job for network.service failed because the control process exited with error code.
See "systemctl status network.service" and "journalctl -xe" for details.

环境信息
  • 操作系统:CentOS 7.9
  • 网络服务 :network.service(传统网络服务)
  • 冲突服务 :NetworkManager(现代网络管理工具)

错误日志
  1. 查看服务状态:

    bash 复制代码
    $ systemctl status network.service
    ● network.service - LSB: Bring up/down networking
       Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
       Active: failed (Result: exit-code) since Wed 2023-10-25 10:00:00 CST; 5min ago
  2. 查看详细日志:

    bash 复制代码
    $ journalctl -u network.service -xe
    Oct 25 10:00:00 localhost network[1234]: RTNETLINK answers: File exists
    Oct 25 10:00:00 localhost systemd[1]: network.service: control process exited, code=exited status=1

分析过程
  1. 初步猜测:

    • 网络配置文件错误(如IP冲突、接口名称不匹配)。
    • 服务冲突(network与NetworkManager同时运行)。
  2. 排查步骤:

    • 检查配置文件 :

      bash 复制代码
      cat /etc/sysconfig/network-scripts/ifcfg-eth0
      # 确认ONBOOT=yes,且接口名称与实际一致(如eth0、ens33)
    • 查看当前网络接口 :

      bash 复制代码
      ip a  # 发现实际接口为ens33,但配置文件中仍为eth0
    • 检查服务状态 :

      bash 复制代码
      systemctl is-active NetworkManager  # 发现NetworkManager正在运行
  3. 锁定原因:

    • NetworkManager与network服务同时运行,争夺网络接口控制权。
    • 配置文件中的接口名称(eth0)与实际接口名称(ens33)不一致。

解决方案
  1. 临时解决冲突:

    bash 复制代码
    # 停止NetworkManager服务
    sudo systemctl stop NetworkManager
    
    # 重启network服务
    sudo systemctl restart network
  2. 修复配置文件:

    bash 复制代码
    # 修改接口名称(将eth0改为ens33)
    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
  3. 永久禁用冲突服务(二选一):

    • 方案A :禁用NetworkManager(适合服务器环境)

      bash 复制代码
      sudo systemctl disable NetworkManager
      sudo systemctl enable network
    • 方案B :禁用network(适合桌面环境)

      bash 复制代码
      sudo systemctl disable network
      sudo systemctl enable NetworkManager

验证结果
  1. 确认服务状态 :

    bash 复制代码
    systemctl status network.service  # 显示active (running)
  2. 测试网络连接 :

    bash 复制代码
    ping 8.8.8.8  # 成功收到响应

预防措施
  1. 统一网络管理工具:

    • 服务器环境:使用network.service,禁用NetworkManager。
    • 桌面环境:使用NetworkManager,禁用network.service。
  2. 配置文件检查清单:

    • 接口名称与实际一致(使用ip a或nmcli device查看)。
    • 确保ONBOOT=yes,避免重启后网络未激活。
  3. 操作前备份:

    bash 复制代码
    cp /etc/sysconfig/network-scripts/ifcfg-ens33{,.bak}

相关参考资料

备注:下次遇到类似问题,优先检查服务冲突和接口名称一致性!

相关推荐
小豆庄20 分钟前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
NailiConveyor1 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
Lsetea1 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若1231 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
开开心心就好1 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
一枕槐安4872 小时前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算
西索斯coding2 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
箓维2 小时前
应用层协议基础_序列化与反序列化
linux
李纲明2 小时前
WordPress 白屏或提示「出现了严重错误」:先开 WP_DEBUG 抓致命错误,再二分插件与主题
运维·php·debug·wordpress·白屏·插件冲突·devdiy
wuminyu2 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++