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
🔍 原因分析
- 超时时间: NetworkManager-wait-online.service 的默认超时时间是 1 分钟
- 网络连接: 网络接口需要一定时间来建立连接
- 多接口系统: 系统有多个网络接口,每个接口都需要时间来初始化
- VPN 连接: ZeroTier VPN 接口可能需要额外时间来连接
- 正常现象: 网络最终连接成功,但服务在超时后报告失败
结论: 这是一个正常现象,不会影响网络功能。服务在等待所有网络接口在线时超时,但网络连接最终成功。
🔧 解决方案
方案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
恢复方法:
方案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: 增加超时 | ⭐⭐ 简单 | ⭐⭐ 较差 | 可能仍然超时 | ⭐ 不推荐 |
🚀 执行修复
自动修复(推荐)
使用修复脚本自动修复:
脚本会自动: 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
✅ 验证修复
检查服务状态
检查启动时间
# 检查启动时间
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(禁用服务)来解决问题
感谢使用智能知识库系统!