Ubuntu 24.04 配置 Wake-on-LAN(WOL)远程唤醒

📅 2026/7/8 9:50:28
Ubuntu 24.04 配置 Wake-on-LAN(WOL)远程唤醒
Ubuntu 24.04 配置 Wake-on-LANWOL远程唤醒问题背景同一台设备在 Windows 系统下可以通过 Wake-on-LAN 唤醒但更换为 Ubuntu 24.04 后无法唤醒。这类问题通常不是硬件不支持而是 Ubuntu 中网卡的 WOL 功能没有启用。Wake-on-LAN 能否正常工作需要同时满足以下条件主板支持 WOL。有线网卡支持 Magic Packet 唤醒。BIOS/UEFI 中允许网卡或 PCIe 设备唤醒主机。操作系统在关机前启用网卡的 WOL 功能。主机关机后网卡仍保留待机供电。本机在 Windows 下可以正常唤醒说明主板、网卡和供电链路基本没有问题。最终确认是 Ubuntu 默认没有启用网卡的 Magic Packet 唤醒功能。一、确认网卡名称执行ip-brlink本机输出lo UNKNOWN 00:00:00:00:00:00 LOOPBACK,UP,LOWER_UP enp6s0 UP 88:d7:f6:7c:23:52 BROADCAST,MULTICAST,UP,LOWER_UP其中网卡名称enp6s0网卡 MAC 地址88:d7:f6:7c:23:52后续发送 WOL 魔术包时需要使用这个 MAC 地址。二、安装 ethtoolUbuntu 中可以使用ethtool查看和配置网卡的 Wake-on-LAN 功能。执行sudoaptupdatesudoaptinstall-yethtool如果已经安装会显示类似ethtool is already the newest version三、检查网卡是否支持 WOL执行sudoethtoolenp6s0|grep-iwake本机初始输出Supports Wake-on: pumbg Wake-on: d含义如下Supports Wake-on中包含g表示网卡支持 Magic Packet 唤醒。Wake-on: d表示当前 WOL 功能处于禁用状态。Wake-on: g表示已经启用 Magic Packet 唤醒。常见标志含义标志含义d禁用 Wake-on-LANpPHY 活动唤醒u单播数据包唤醒m组播数据包唤醒b广播数据包唤醒gMagic Packet 唤醒从本机结果可以确认网卡硬件支持 WOL但 Ubuntu 当前没有启用。四、启用 Magic Packet 唤醒执行sudoethtool-senp6s0 wol g再次检查sudoethtoolenp6s0|grep-iwake配置后的输出Supports Wake-on: pumbg Wake-on: g这说明网卡已经允许通过 Magic Packet 唤醒。五、测试远程唤醒先正常关闭 Ubuntu 主机sudopoweroff然后在局域网内的其他设备上向目标网卡发送 WOL 魔术包。目标信息MAC 地址88:d7:f6:7c:23:52可以使用路由器自带的 WOL 功能也可以在其他 Linux 设备上安装wakeonlansudoaptinstall-ywakeonlan发送魔术包wakeonlan88:d7:f6:7c:23:52本机测试结果Ubuntu 主机成功被 Wake-on-LAN 唤醒。六、设置为永久生效直接执行sudoethtool-senp6s0 wol g通常只对当前运行周期有效。系统重启、网卡重新加载或 NetworkManager 重建连接后配置可能恢复为Wake-on: d因此建议将配置写入 NetworkManager。1. 查看网络连接名称执行nmcli connection show输出可能类似NAME UUID TYPE DEVICE Wired connection 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ethernet enp6s02. 设置 WOL 模式假设连接名称为Wired connection 1sudonmcli connection modifyWired connection 1\802-3-ethernet.wake-on-lan magic重新激活连接sudonmcli connection downWired connection 1sudonmcli connection upWired connection 1如果当前通过 SSH 操作执行connection down会导致 SSH 立即断开这是正常现象。更稳妥的方式是修改后直接重启sudoreboot重启后验证sudoethtoolenp6s0|grep-iwake期望输出Wake-on: g七、使用 systemd 强制设置 WOL如果 NetworkManager 配置后仍然无法保持可以创建一个 systemd 服务在每次启动时强制启用 WOL。创建服务文件sudonano/etc/systemd/system/wol.service写入[Unit] DescriptionEnable Wake-on-LAN for enp6s0 Afternetwork.target [Service] Typeoneshot ExecStart/usr/sbin/ethtool -s enp6s0 wol g RemainAfterExityes [Install] WantedBymulti-user.target启用并立即启动sudosystemctl daemon-reloadsudosystemctlenable--nowwol.service查看状态systemctl status wol.service再次验证sudoethtoolenp6s0|grep-iwake八、BIOS/UEFI 需要检查的选项如果 Ubuntu 中已经显示Wake-on: g但关机后仍然无法唤醒需要进入 BIOS/UEFI 检查以下选项。建议启用Wake on LANPower On By PCI-EResume By LANPME Event Wake UpWake From S5建议关闭ErPEuPDeep SleepS5 Maximum Power SavingErP或深度节能模式可能会在关机后切断网卡待机供电导致网卡无法继续监听 Magic Packet。一个简单的判断方法是主机关机后观察网口指示灯是否仍然亮起或闪烁。如果网口灯完全熄灭通常说明网卡待机供电被切断需要重点检查 BIOS 电源管理选项。九、Windows 可以唤醒Ubuntu 不可以的原因WOL 并不是只有硬件层面的功能。主板和网卡提供的是物理能力但操作系统和驱动需要在关机或休眠前告诉网卡进入哪一种待机唤醒模式。Windows 网卡驱动可能默认启用了Wake on Magic PacketShutdown Wake-On-LANAllow this device to wake the computerUbuntu 网卡驱动则可能默认显示Wake-on: d因此即使硬件完全相同不同操作系统的 WOL 行为也可能不同。本次问题的核心就是Supports Wake-on: pumbg Wake-on: d网卡支持 Magic Packet但 Ubuntu 默认将其关闭。执行sudoethtool-senp6s0 wol g后变为Wake-on: g随后成功完成远程唤醒。十、故障排查清单如果仍然不能唤醒可以按以下顺序检查确认发送的是有线网卡 MAC 地址而不是 Wi-Fi 地址。确认Supports Wake-on中包含g。确认当前为Wake-on: g。确认主机关机后网口仍有灯。确认 BIOS 中启用了 PCIe、LAN 或 PME 唤醒。关闭 BIOS 中的 ErP、EuP 或 Deep Sleep。先在同一局域网内发送魔术包测试。跨网段唤醒时确认路由器支持 WOL、中继或定向广播。确认交换机没有开启会影响广播包转发的隔离策略。重启后再次检查 WOL 是否被恢复成d。可以使用以下命令快速检查所有网卡fornicin/sys/class/net/*;dodev$(basename$nic)[$devlo]continueecho$devsudoethtool$dev2/dev/null|grep-iwakedone十一、SSH 登录时出现 readonly variable本次重新登录 Ubuntu 时还出现了以下提示-bash: RED: readonly variable -bash: GREEN: readonly variable -bash: YELLOW: readonly variable -bash: BLUE: readonly variable -bash: PURPLE: readonly variable -bash: CYAN: readonly variable -bash: WHITE: readonly variable -bash: NC: readonly variable这与 Wake-on-LAN 无关。一般是.bashrc、/etc/bash.bashrc或某个 Shell 脚本中重复定义了已经声明为只读的颜色变量。可以使用以下命令查找grep-Rreadonly.*RED\|RED\~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile /etc/profile.d2/dev/null删除重复定义或者不要对这些变量重复使用readonly即可。总结本次 Ubuntu 24.04 无法通过 WOL 唤醒并不是硬件不支持而是网卡在 Ubuntu 中默认未启用 Magic Packet 唤醒。关键检查结果Supports Wake-on: pumbg Wake-on: d关键配置命令sudoethtool-senp6s0 wol g配置后Supports Wake-on: pumbg Wake-on: g最终结果Ubuntu 24.04 主机成功通过 Wake-on-LAN 远程唤醒。建议最后再通过 NetworkManager 或 systemd 将配置持久化避免系统重启后失效。