测试 WoL 数据包到达的方法 | AI生成和翻译

Home 2026.02

Question: 如何测试 Wake-on-LAN?具体来说,如果我手动打开电脑,该如何检查 Magic Packets 是否确实到达了它?

Answer:

以下是验证 Wake-on-LAN Magic Packets 是否到达目标计算机(在已开机状态下)最实用且可靠的方法:

1. 最好且最直接的方法:在目标计算机上使用 Packet Capture

当 PC 处于开机并连接状态时:

Windows

Linux / macOS

# 快速单行命令(显示包含你 MAC 地址的 Magic Packets)
sudo tcpdump -i eth0 -n -v ether dst ff:ff:ff:ff:ff:ff and udp port 7 or udp port 9

# 或完整捕获并使用 grep(推荐方式)
sudo tcpdump -i eth0 -w wol-test.pcap ether dst ff:ff:ff:ff:ff:ff
# 然后运行:
tcpdump -r wol-test.pcap -X | grep -A 2 -B 2 "FF FF FF FF FF FF"

你应该会看到类似以下内容:

FF FF FF FF FF FF  04 7c 16 d9 54 5b  ...  04 7c 16 d9 54 5b  (重复 16 次)

如果你看到这个模式 → 说明 Magic Packet 正到达 NIC

2. 快速方法 —— 检查 Link/Activity LED 状态(适用于许多 NIC)

3. 通过驱动程序 / OS 启用 WoL 日志(较少见但非常整洁)

Windows(部分 Intel 和 Realtek 驱动):

Linux:

# 显示 WoL 状态
ethtool eth0 | grep -i wake

# 启用 Magic Packet 日志记录(需要 Kernel 支持)
echo 1 > /sys/class/net/eth0/device/power/wol_reason_log  # 并非所有驱动都可用

# 或在开机状态发送数据包后监控 dmesg
dmesg -w | grep -i "magic\|wol\|wake"

4. 最简单的测试流程(推荐的实际演练方法)

  1. 正常启动电脑
  2. 从另一台机器每隔 10–15 秒发送一次 WoL Packets(你的 Python 脚本即可)
  3. 在目标 PC 上运行 Wireshark 或带有上述过滤器的 tcpdump
  4. 确认数据包到达 → 此时你确定网络路径是正确的
  5. 将 PC 关机 / 睡眠
  6. 再次发送 → 如果它被唤醒 → 说明整个 End-to-End 流程都在工作

总结 – 快速决策树

目标 推荐方法 可靠性
证明数据包到达 NIC Wireshark / tcpdump 捕获 ★★★★★
快速视觉检查 观察 Ethernet LED 闪烁 ★★★☆☆
确认 OS 识别到唤醒原因 Event Viewer / dmesg ★★★★☆
完整的 End-to-End 测试 开机时捕获 → 然后睡眠 → 唤醒 ★★★★★

大多数人发现步骤 1(在 PC 开机时抓包)是回答“Magic Packet 是否到达了电脑?”最快的方法。

References:


Back Donate