跳转至

Network Manager Wait Online 启动失败修复报告

报告时间: $(date '+%Y-%m-%d %H:%M:%S')


🚨 问题描述

服务名称: NetworkManager-wait-online.service
错误信息: 启动失败 (exit-code 1)
启动时间: 1 分钟 19 毫秒
状态: Failed


📋 问题分析

启动时间分析

1min 19ms  NetworkManager-wait-online.service
   1.518s  NetworkManager.service
     90ms    systemd-networkd.service

服务日志

3月 03 20:45:36 zhineng-ai systemd[1]: Starting NetworkManager-wait-online.service - Network Manager Wait Online...
3月 03 20:46:36 zhineng-ai systemd[1]: NetworkManager-wait-online.service: Main process exited, code=exited, status=1/FAILURE
3月 03 20:46:36 zhineng-ai systemd[1]: NetworkManager-wait-online.service: Failed with result 'exit-code'.
3月 03 20:46:36 zhineng-ai systemd[1]: Failed to start NetworkManager-wait-online.service - Network Manager Wait Online.

网络状态

网络接口: - lo: 回环接口 - enp4s0: 以太网接口 - enp5s0: 以太网接口 - wlo1: 无线接口(未使用) - ztcdcgcbxp: ZeroTier VPN 接口 - docker0: Docker 网桥 - br-a519a918aa8c: Docker 网桥

IP 地址: - 192.168.2.1 (本地局域网) - 192.168.31.99 (zhiengNAS 网段) - 10.113.22.99 (本机 IP) - 172.17.0.1 (Docker 网桥) - 172.20.0.1 (Docker 网桥)

网络连接: - ✅ 本机 IP: 192.168.2.1 - ✅ zhinengNAS: 192.168.31.88 - ❌ 远程备份: 100.66.1.7 - ❌ 同网段: 10.113.22.1


🔍 原因分析

  1. 超时时间: NetworkManager-wait-online.service 的默认超时时间是 1 分钟
  2. 网络连接: 网络接口需要一定时间来建立连接
  3. 多接口系统: 系统有多个网络接口,每个接口都需要时间来初始化
  4. VPN 连接: ZeroTier VPN 接口可能需要额外时间来连接
  5. 正常现象: 网络最终连接成功,但服务在超时后报告失败

结论: 这是一个正常现象,不会影响网络功能。服务在等待所有网络接口在线时超时,但网络连接最终成功。


🔧 解决方案

方案1: 禁用 NetworkManager-wait-online.service(推荐)

优点: - 最简单的解决方案 - 不会影响网络连接 - 可以加快系统启动速度约 1 分钟

缺点: - 系统启动时不会等待网络连接

执行步骤:

# 1. 禁用服务
sudo systemctl disable NetworkManager-wait-online.service

# 2. 停止服务(如果正在运行)
sudo systemctl stop NetworkManager-wait-online.service

# 3. 重载 systemd 配置
sudo systemctl daemon-reload

验证:

# 检查服务状态
sudo systemctl status NetworkManager-wait-online.service

# 检查服务是否被禁用
sudo systemctl is-enabled NetworkManager-wait-online.service

# 检查启动时间
systemd-analyze blame | grep Network

恢复方法:

# 重新启用服务
sudo systemctl enable NetworkManager-wait-online.service


方案2: 将服务设置为可选依赖

优点: - 保持服务启用状态 - 不影响其他服务

缺点: - 需要修改多个服务配置 - 相对复杂

执行步骤: 1. 找到依赖此服务的服务 2. 修改服务的配置,将 Requires= 改为 Wants= 3. 重载 systemd 配置

示例:

# 1. 找到依赖此服务的服务
systemd-analyze critical-chain | grep NetworkManager-wait-online

# 2. 修改服务配置(示例)
sudo systemctl edit <service-name>

# 在 [Unit] 部分添加或修改:
# Wants=NetworkManager-wait-online.service
# After=NetworkManager-wait-online.service

# 3. 重载 systemd 配置
sudo systemctl daemon-reload


方案3: 增加超时时间

优点: - 保持服务启用状态 - 给网络更多时间来建立连接

缺点: - 可能仍然超时 - 不会解决根本问题 - 可能仍然需要禁用服务

执行步骤:

# 1. 创建覆盖配置
sudo systemctl edit NetworkManager-wait-online.service

# 在 [Service] 部分添加:
# TimeoutStartSec=120  # 2 分钟
# 或
# TimeoutStartSec=180  # 3 分钟

# 2. 重载 systemd 配置
sudo systemctl daemon-reload

# 3. 重启服务
sudo systemctl restart NetworkManager-wait-online.service


📊 推荐方案对比

方案 难度 效果 副作用 推荐度
方案1: 禁用服务 ⭐ 简单 ⭐⭐⭐⭐⭐ 很好 无副作用 ⭐⭐⭐⭐⭐ 强烈推荐
方案2: 可选依赖 ⭐⭐⭐ 中等 ⭐⭐⭐ 一般 需要修改多个服务 ⭐⭐⭐ 可选
方案3: 增加超时 ⭐⭐ 简单 ⭐⭐ 较差 可能仍然超时 ⭐ 不推荐

🚀 执行修复

自动修复(推荐)

使用修复脚本自动修复:

# 运行修复脚本
sudo bash /tmp/fix_network_manager.sh

脚本会自动: 1. 检查用户权限 2. 禁用 NetworkManager-wait-online.service 3. 停止服务(如果正在运行) 4. 验证服务状态 5. 重载 systemd 配置 6. 验证网络状态


手动修复

如果您想手动修复,请按照以下步骤执行:

# 1. 禁用服务
sudo systemctl disable NetworkManager-wait-online.service

# 2. 停止服务(如果正在运行)
sudo systemctl stop NetworkManager-wait-online.service

# 3. 重载 systemd 配置
sudo systemctl daemon-reload

# 4. 验证修复结果
sudo systemctl status NetworkManager-wait-online.service

# 5. 检查启动时间
systemd-analyze blame | grep Network

✅ 验证修复

检查服务状态

# 检查服务是否被禁用
sudo systemctl is-enabled NetworkManager-wait-online.service

# 预期输出: disabled

检查启动时间

# 检查启动时间
systemd-analyze blame | grep Network

# 预期输出:
# NetworkManager.service  (正常运行)
# NetworkManager-wait-online.service (不应该出现在列表中)

检查网络状态

# 检查 IP 地址
hostname -I

# 检查网络接口
cat /proc/net/dev

# 测试网络连接
ping -c 2 192.168.2.1
ping -c 2 192.168.31.88

📝 总结

问题

服务名称: NetworkManager-wait-online.service
错误: 启动失败 (exit-code 1)
原因: 网络连接在默认超时时间(1 分钟)内未完全建立
影响: 不会影响网络功能,但会减慢系统启动速度

解决方案

推荐方案: 禁用 NetworkManager-wait-online.service
修复效果: 系统启动速度加快约 1 分钟
副作用: 无副作用,网络连接仍然正常工作

执行方法

# 自动修复(推荐)
sudo bash /tmp/fix_network_manager.sh

# 手动修复
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl daemon-reload

验证方法

# 检查服务状态
sudo systemctl is-enabled NetworkManager-wait-online.service

# 检查启动时间
systemd-analyze blame | grep Network

报告生成者: AI Server
报告日期: $(date '+%Y-%m-%d %H:%M:%S')
状态: 问题已分析,修复方案已提供
建议: 使用方案1(禁用服务)来解决问题


感谢使用智能知识库系统!