首页/系统/信创系统运维速查/network-online.target 与网络就绪等待
服务与运维65 条

network-online.target 与网络就绪等待

依赖网络的挂载与服务在开机早期启动会失败:让 NetworkManager-wait-online 或 systemd-networkd-wait-online 生效,服务用 Wants + After 依赖 network-online.target。

信创系统运维速查系统更新于 2026-10-13

开机顺序里的网络就绪

systemd 的 network.target 只表示网络管理服务已经启动,并不代表接口已经拿到地址;真正表示『地址可用』的是 network-online.target。依赖网络的挂载(NFS)与业务服务如果在开机早期启动,就会因为网卡还没起来而失败——典型现象是重启后服务报连不上远端,手动重启服务立刻恢复正常。

基本信息

就绪目标network-online.target
等待服务NetworkManager-wait-online 或 systemd-networkd-wait-online
服务侧写法[Unit] 段加 Wants=network-online.target 与 After=network-online.target
查看状态systemctl status NetworkManager-wait-online、is-active network-online.target
超时控制NetworkManager 侧 NM_ONLINE_TIMEOUT 环境变量
权限要求root 或 sudo

典型使用场景

  • NFS 或远程存储的挂载项在开机时失败
  • 业务服务启动时依赖数据库或注册中心地址,偶发启动失败
  • 带外监控上报类服务需要在网络就绪后再启动
  • 排查『重启后第一次失败、手工重启就正常』这类问题
  • 虚拟机与多网卡环境确认等待逻辑是否符合预期

检查与启用

检查与启用
systemctl status NetworkManager-wait-online --no-pager   # 看等待服务是否在跑
systemctl is-enabled NetworkManager-wait-online            # 是否开机自启
systemctl is-active network-online.target                  # 目标是否已达成
systemctl enable --now NetworkManager-wait-online.service  # 启用并立即生效
systemctl list-jobs | grep -i online                       # 开机动不动卡住时看是否有作业在等
journalctl -b -u NetworkManager --no-pager | tail -20       # 看网络就绪过程中的报错

服务单元写法

服务单元写法
[Unit]
Description=App depends on network
Wants=network-online.target          # 拉入等待服务,保证目标会被等待
After=network-online.target          # 在网络就绪之后再启动

[Service]
Type=simple
ExecStart=/opt/app/bin/start.sh
Restart=on-failure                   # 仍建议保留重启策略,兜住极端情况

[Install]
WantedBy=multi-user.target

目标与语义对照

目标含义是否满足依赖网络
network.target网络管理服务已启动不满足:接口可能还没地址
network-online.target网络已被认为可用满足:推荐写法
sysinit.target早期系统初始化完成与本场景无关
multi-user.target多用户文本模式可用顺序上通常晚于网络,但非保证
wait-online 服务具体实现等待逻辑未启用时 online.target 会立即达成
NM_ONLINE_TIMEOUT等待超时秒数设置不当会造成长时间等待
开启 wait-online 会拖慢开机:DHCP 慢或链路协商慢时等待时间成倍增加,只给确实需要网络的单元加依赖,不要全局统一强依赖。
多网卡或多连接环境下等待逻辑会关注所有连接是否就绪:某张网线未插时开机可能一直等到超时,应按需调整超时或使用连接级配置。

易错点

  • 只写 After=network.target,开机时接口还没有地址,服务连不上远端被 systemd 判定启动失败
  • 没有启用 wait-online 服务却在单元里依赖 network-online.target,目标会立即达成,等于没等
  • 为了稳妥给所有服务都加网络等待,开机时间明显拉长,链路慢的机器尤其明显
  • 某张网卡没插线导致等待超时,开机被卡住数十秒,现场误判为系统故障
  • 服务虽有网络依赖但没配重启策略,开机顺序问题时直接退出,需要人工干预才恢复

数据来源与参考

  • man 5 systemd.special(network-online.target)
  • 红帽系统管理指南(网络等待)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌