什么是 Wake-on-LAN(WOL)
Wake-on-LAN(网络唤醒,简称WOL)是一项通过局域网远程将计算机从关机或待机状态唤醒至正常运作状态的行业标准技术。其核心机制基于AMD与Hewlett-Packard于1995年联合提出的Magic Packet技术(AMD白皮书编号#20213),由AMD PCnet II系列网卡首次实现。WOL工作在OSI模型的第二层(数据链路层),无需IP协议栈参与,因此可以在操作系统完全关闭的状态下触发。

在工业自动化场景中,WOL的应用价值尤为突出——无人值守站点的远程启动、定时唤醒配合批量管理、与NVR(网络视频录像机)或SCADA系统的联动节能策略,均可通过WOL以极低硬件成本实现。
Magic Packet 帧结构详解
Magic Packet是WOL的核心触发信号,其帧结构由以下部分组成:
- 同步前导码(Synchronization Stream):连续6字节的0xFF(十六进制FF FF FF FF FF FF),用于标识数据包为Magic Packet格式。
- 目标MAC地址(Target MAC):目标设备的48位MAC地址,连续重复16次(共96字节),确保接收端能够可靠识别。
- SecureOn密码(可选):4或6字节密码附加在MAC重复序列之后,提供基本的身份验证功能。密码在Magic Packet中以明文形式传输,安全性有限但能有效防止局域网内恶意唤醒。
Magic Packet的总长度(标识部分)为102字节(前导码6字节 + MAC重复96字节),加选密码后为106-108字节。接收端的网卡在低功耗状态下持续监听网络流量,通过硬件电路实时检测数据包中是否包含连续的6字节0xFF及随后的有效MAC地址重复序列。
Magic Packet检测是一个纯硬件层操作,不依赖操作系统或驱动——只要网卡和主板在待机时保持最小供电即可响应。
WOL 的封装方式与端口
Magic Packet可以通过以下方式封装传输:
- UDP端口9(Discard Protocol):最常用的封装方式,几乎所有WOL发送工具默认使用此端口。
- UDP端口7(Echo Protocol):常见替代方案。
- 直接以太网帧:EtherType设置为0x0842,绕过高层协议直接在数据链路层传输。
- TCP不适用于WOL,因为其面向连接的特性要求在发送数据前先建立连接——而此时目标设备处于关机状态。
由于UDP广播默认不跨路由器转发,标准WOL仅在目标设备所在的局域网子网内有效。
硬件要求与架构
WOL的硬件支持涉及主板芯片组、网卡和电源管理三个层面:
- 主板ACPI支持:需要主板BIOS支持ACPI(高级配置与电源管理接口),并在BIOS设置中开启PCIe设备唤醒(Wake on PCIe)选项。
- 网卡WOL支持:网卡芯片必须内置WOL功能。常见支持WOL的芯片包括Intel I210(I210-IT工业级-40°C至85°C,I210-AT/I211-AT商业级0°C至70°C)、I219、Realtek RTL8111H/RTL8169等。
- PCIe待机供电:网卡通过PCIe插槽的Vaux(辅助电源)引脚在系统关机后维持最小供电,持续监听网络。千兆网卡在WOL待机模式下通常降至10Mbit/s连接速率以降低功耗。
- ERP Lot 6/9认证限制:通过ERP Lot 6或Lot 9认证的节能电源可能在关机时完全切断Vaux供电,需要在BIOS中禁用ERP模式才能使WOL正常工作。
- 多端口网卡限制:多端口网卡通常仅Port 0支持WOL功能。
跨子网 WOL 方案
由于Magic Packet默认仅在局域网Layer 2广播域内有效,要实现跨子网唤醒需要以下技术方案:
- 子网定向广播(Subnet Directed Broadcast, SDB):配置路由器将UDP广播转发至目标子网的广播地址。此方案需路由器启用directed-broadcast功能,但出于安全考虑,多数现代网络设备默认禁用此特性。
- WOL网关/代理(推荐方案):在目标子网内部署一台常开设备(如树莓派、低功耗工控机)作为WOL代理,外部指令先发送至代理,再由代理在本地子网发送Magic Packet。这是目前最可靠、最安全的跨子网WOL方案。
- UDP端口转发:在路由器上将UDP端口7或9转发至目标设备的IP地址,但此方案需要目标设备在关机前已获取IP地址(通常DHCP租约仍有效),且部分路由器不支持转发Layer 2广播。
Linux 下的 WOL 配置
Linux下使用ethtool工具管理WOL设置:
# 查看当前WOL状态
ethtool eth0 | grep Wake-on
# 启用Magic Packet唤醒(g标志)
sudo ethtool -s eth0 wol g
# 禁用WOL
sudo ethtool -s eth0 wol d
ethtool WOL标志含义:d=禁用、p=PHY活动、u=单播帧、m=组播帧、b=广播帧、a=ARP、g=Magic Packet(WOL核心功能)。
持久化设置可以通过以下方式:写入/etc/rc.local、创建systemd service、或在netplan配置中添加wakeonlan: true。
常用的WOL发送工具:
# wol命令
wol 00:11:22:33:44:55
# etherwake
sudo etherwake -i eth0 00:11:22:33:44:55
# 跨互联网发送(需WOL网关代理)
wol -p 9 --host=remote-wol-proxy.example.com 00:11:22:33:44:55
Windows 下的 WOL 配置
Windows系统中WOL的设置涉及两个层面:
网卡驱动属性:在设备管理器中找到目标网卡,打开高级设置,确保"Wake on Magic Packet"(或"网络唤醒")已启用。电源管理选项卡中需要勾选"允许此设备唤醒计算机"。
Windows快速启动(Fast Startup)的影响:Windows默认启用快速启动功能,其混合关机模式(S4休眠+注销)会影响WOL从完全关机状态的触发效果。如WOL从关机状态无法生效,应在电源选项中关闭快速启动。
WOL 局限性
- 无发送确认:Magic Packet以无连接UDP方式发送,发送方无法确认数据包是否被目标接收。
- Wi-Fi不支持:标准WOL仅针对有线以太网设计,多数802.11无线网卡在低功耗状态下无法维持无线链路连接。无线唤醒需依赖WoWLAN(Wake on Wireless LAN)标准。
- 需要目标MAC地址:WOL工作在IP协议层之下,只能通过MAC地址寻址——不能使用主机名或DNS域名。
- 仅支持从S3/S4/S5状态唤醒:WOL无法从S2(主板待机)状态唤醒,也无法在S1状态生效。
- BIOS设置可能被覆盖:部分主板在更新BIOS或重置默认设置后会关闭PCIe设备唤醒。
工控场景应用实践
WOL在工业自动化中的典型应用场景包括:
- 无人值守远程启动/重启:部署在偏远站点的工控机出现宕机或需要系统更新后,通过WOL远程启动,无需人员到场操作。
- 定时唤醒与批量管理:通过计划任务在特定时间批量唤醒一组工控设备,配合PXE网络引导或远程管理平台完成固件升级后,再批量关机节约能耗。
- 配合IPMI/BMC的轻量级方案:在未部署带外管理(IPMI/BMC)的设备上,WOL可作为低成本的开机方案。对于已有IPMI的服务器级设备,WOL可作为补充策略。
值得注意的是,多端口工控网卡通常仅Port 0支持WOL功能,且部分双端口Intel I210卡(如PCIe x4双口千兆卡)的WOL支持因OEM设计而异,选型时需要确认具体规格。