局域网唤醒电脑命令(Wake-on-LAN, WoL)是一种通过网络远程启动已关机但处于睡眠或关机状态计算机的技术,其核心原理是通过向目标计算机发送特定的“魔法数据包”(Magic Packet),该包包含目标设备的MAC地址,当主板和网卡支持WoL功能并正确配置时,网卡会检测到该数据包并触发主板启动电源,以下从技术原理、配置步骤、命令实现及常见问题等方面进行详细说明。

技术原理与前提条件
WoL的实现需满足三个核心前提:
- 硬件支持:主板、网卡(有线或无线)需支持WoL功能,多数现代主板和集成网卡默认开启,但部分独立网卡可能需手动启用。
- 电源管理配置:BIOS/UEFI中需启用“Wake on LAN”或“Power On by PCIe Device”选项;操作系统内(如Windows)需允许网卡唤醒计算机,且禁用节能策略对WoL的阻断。
- 网络环境:目标计算机与控制端需处于同一局域网(或通过路由器/VLAN可达的广播域),且目标计算机在关机前需获取正确的IP地址(或静态IP),以便广播包能准确送达。
配置步骤(以Windows为例)
BIOS/UEFI中启用WoL
重启计算机进入BIOS/UEFI(通常通过Del/F2键),在“Power Management”或“Advanced”选项中找到“Wake on LAN”或“Wake on PCIe Event”,设置为“Enabled”,部分主板需关闭“S5 Power State”或“Deep Sleep”模式,确保关机后网卡仍供电。
操作系统内配置网卡
-
Windows 10/11:
- 打开“设备管理器”,展开“网络适配器”,右键点击目标网卡(如“Intel(R) Ethernet Connection”),选择“属性”。
- 切换到“电源管理”选项卡,勾选“允许此设备唤醒计算机”和“只允许魔术包唤醒计算机”(避免其他信号误触发)。
- 若使用有线连接,需在“高级”选项卡中找到“Wake on Magic Packet”或“WoL”,设置为“Enabled”。
-
Linux(Ubuntu为例):
编辑/etc/network/interfaces
文件,在网卡配置中添加up ethtool -s eth0 wol g
(eth0替换为实际网卡名),或使用ethtool -s eth0 wol g
命令实时启用。(图片来源网络,侵删)
关机前确认网络状态
目标计算机关机前,需确保:
- 有线连接处于“已连接”状态(无线WoL支持较少,需特定网卡和驱动)。
- 通过
ipconfig /all
(Windows)或ip a
(Linux)记录MAC地址,后续唤醒命令需依赖此地址。
局域网唤醒命令实现
WoL命令的核心是发送包含目标MAC地址的“魔法数据包”,格式为:
- 6字节的“同步头”(0xFF 0xFF 0xFF 0xFF 0xFF 0xFF)
- 重复16次的目标MAC地址(共96字节)
Windows系统发送命令
-
方法1:使用第三方工具(推荐)
工具如“WakeMeOnLan”“Advanced IP Scanner”等,输入目标IP和MAC地址,点击“Wake”即可自动封装并发送数据包。
示例:Advanced IP Scanner扫描局域网后,右键目标设备选择“Wake on LAN”。 -
方法2:命令行发送(需安装工具)
使用“WakeOnLan”命令行工具(如GitHub开源项目),下载后置于系统路径,执行命令:(图片来源网络,侵删)wakeonlan -i 192.168.1.255 -p 9 00:11:22:AA:BB:CC
参数说明:
-i
:广播地址(局域网广播地址通常为168.x.255
,可通过ipconfig
查看“默认网关”推断)。-p
:端口号(默认为9,UDP协议)。00:11:22:AA:BB:CC
:目标MAC地址(需16进制格式,冒号分隔)。
-
方法3:PowerShell脚本(无需第三方工具)
编写PS脚本封装数据包并发送:$mac = "00-11-22-AA-BB-CC" -replace "-", ":" # 格式化MAC地址 $magicPacket = [byte[]]@(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF) $macBytes = $mac -split ":" | %{ [byte]::Parse($_, 16) } 1..16 | %{ $magicPacket += $macBytes } $udpClient = New-Object System.Net.Sockets.UdpClient $udpClient.Connect("192.168.1.255", 9) # 广播地址和端口 $udpClient.Send($magicPacket, $magicPacket.Length) $udpClient.Close()
保存为
.ps1
文件,右键“以管理员身份运行”。
Linux/macOS系统发送命令
-
方法1:使用
wakeonlan
工具
安装工具:sudo apt install wakeonlan # Debian/Ubuntu brew install wakeonlan # macOS(需Homebrew)
执行命令:
wakeonlan -i 192.168.1.255 00:11:22:AA:BB:CC
-
方法2:使用
hexdump
和nc
(netcat)
通过命令行直接构造并发送数据包:echo -en '\xFF\xFF\xFF\xFF\xFF\xFF' && seq 16 | xargs -I {} -n 1 echo -n '\x00\x11\x22\xAA\xBB\xCC' | xxd -r -p | nc -u -w1 192.168.1.255 9
路由器级WoL(适用于跨VLAN或广域网)
若控制端与目标计算机不在同一广播域(如不同子网),需在路由器上设置WoL转发:
- 登录路由器管理界面,找到“端口转发”或“UPnP”选项。
- 添加规则:外部端口(任意)→ 内部IP(目标计算机IP)→ 协议UDP→ 端口9。
- 发送时需使用路由器的公网IP(需端口映射)或内网IP(若路由器支持跨子网广播)。
常见问题排查
若唤醒失败,可按以下步骤排查:
- 确认MAC地址正确性:通过
ipconfig /all
或ip a
重新获取MAC地址,避免格式错误(如大小写、分隔符不一致)。 - 检查网络连通性:控制端
ping
目标计算机关机前的IP,若不通,需确认广播地址是否正确(或尝试直连发送)。 - 验证硬件与BIOS配置:进入BIOS确认WoL已启用,检查网卡在关机后是否有指示灯亮起(部分网卡WoL启用时指示灯常亮)。
- 关闭节能策略:Windows中“电源选项”→“更改计划设置”→“更改高级电源设置”→“睡眠”→“允许唤醒定时器”设为“启用”。
相关问答FAQs
Q1:为什么发送了魔法包但目标电脑无法唤醒?
A:可能原因包括:① 目标计算机未正确配置WoL(BIOS或网卡设置未启用);② 网络环境不支持广播(如跨路由器未配置端口转发);③ 目标计算机关机前网卡未连接网络或MAC地址错误;④ 防火墙拦截了UDP 9端口数据包,建议逐一检查硬件配置、网络连通性及MAC地址准确性。
Q2:无线局域网(Wi-Fi)是否支持WoL?
A:部分高端无线网卡支持WoL,但需满足条件:① 网卡和主板明确支持“无线WoL”;② 计算机关机时需保持Wi-Fi连接(非飞行模式);③ 路由器需支持“无线WoL”功能(如部分企业级路由器允许通过指定MAC地址唤醒),普通家用环境下,有线WoL的稳定性和兼容性远高于无线。