Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

WakeOnLAN

WakeOnLAN 是所谓 Magic Packet 技术所使用的协议名称,该技术由 AMD 和 Hewlett Packard 开发,用于远程唤醒可能因电源管理功能而自动断电的远程主机。尽管电源管理可以帮助公司和个人降低用电成本,但它也给 IT 部门带来了问题,尤其是在需要快速、高效地远程管理 PC 时更是如此;在非工作时间运行期间,如果启用了电源管理功能,这些 PC 最有可能处于挂起或待机状态。

历史

有关 WakeOnLAN 和 Magic Packet 技术的历史,请参阅这篇 wikipedia 文章,或阅读这份 AMD 白皮书。

协议依赖

  • Ethernet:根据 AMD 的白皮书,WakeOnLAN 仅依赖 Ethernet。不过,该白皮书也指出 Magic Packet 可以位于载荷中的任何位置。这意味着我们必须搜索每一个 Ethernet 帧来查找 Magic Packet。在我看来,这样做会降低 Wireshark 的性能,尤其是因为大多数流量并不包含 Magic Packet。因此,WakeOnLAN dissector 被实现为只解析 Magic Packet 的实际实现。截至撰写本文时,作者只知道 2 种实现,一种是 ether-wake,它使用 Ethertype 0x0842,遗憾的是这还不是已注册的 Ethertype;另一种实现是基于 UDP。

  • UDP:上述 Wikipedia 文章中提到的若干工具在 UDP 之上实现 Magic Packet。

数据包格式

一个物理 WakeOnLAN (Magic Packet) 将如下所示:

| 同步流 | 目标 MAC | 密码(可选) | 6 | 96 | 0、4 或 6

同步流定义为 6 字节的 FFh。

目标 MAC 块包含目标 IEEE 地址的 16 次重复,中间没有断开或中断。

密码字段是可选的,但如果存在,则包含 4 字节或 6 字节。WakeOnLAN dissector 的实现会在密码存在时按照 ether-wake 使用的命令行格式解析密码;因此,如果存在 4 字节密码,它会被解析为 IPv4 地址;如果存在 6 字节密码,它会被解析为 Ethernet 地址。

示例流量

下面是一张 WakeOnLAN 流量的截图:

Wireshark

WOL dissector 对 Ethertype 0x0842 和 UDP 已完全可用。它最早从 2007 年 11 月 6 日的 Git commit 6785ffd7 开始包含在 Wireshark 中。Wireshark 0.99.7 版本开始正式提供。

首选项设置

目前,WOL dissector 没有首选项;不过,在某些情况下,你可能需要确保启用 UDP 的 “Try heuristic sub-dissectors first” 首选项,才能使 WOL 解析正常工作。启用这个 UDP 首选项时,请记住启发式方法并非万无一失,因此启用它可能会对其他协议的解析产生不利影响。请谨慎启用。

示例捕获文件

SampleCaptures 页面上提供了一个包含 WOL 流量的简单示例捕获文件。

  • SampleCaptures/wol.pcap

显示过滤器

完整的 WOL 显示过滤器字段列表可以在显示过滤器参考中找到

示例:仅显示基于 WOL 的流量:

 wol

捕获过滤器

按照 WOL 当前的实现方式,你可以使用以下捕获过滤器,以相当有把握地捕获大多数 WOL 流量;不过,为了保证捕获所有 WOL 流量,至少从 dissector 的角度来看,应在捕获过滤器表达式中省略 "port 9" 限定符:

 ether proto 0x0842 or udp port 9

外部链接

  • 有关 WakeOnLAN 的更多信息可以在 wikipedia 上找到。

  • AMD 白皮书也是一个极佳的信息来源。

讨论

导入自 https://wiki.wireshark.org/WakeOnLAN,时间为 2020-08-11 23:27:16 UTC

原始页面图片

wol.png
wol.png

相关 Wireshark Wiki 页面

网络分析技术档案