Linux 运行时期间的 WOL 事件

Linux 运行时期间的 WOL 事件

我希望能够对已启动的计算机发送的局域网唤醒数据包做出反应。我能够使用 WOL 打开我的计算机,因此整个系统似乎可以正常工作。我现在的问题是:

  • 当 Linux 已经启动时,有没有办法接收那些 WOL 事件?
  • BIOS/UEFI/网卡是否会向已启动的操作系统(Debian)发送任何 WOL 事件?

我知道我可以监听 WOL UDP 数据包,但想知道是否有更简单的解决方案。

答案1

您需要监听端口。这里有一个有用的工具 数控

帖子 通过网络唤醒来使用 kvm 和 libvirt 触发虚拟机 包括这个有用的 bash 代码片段 Gotschi 的回答

#!/bin/bash

nc -dknl -p 9 -u | # listen to udp port 9 for packets, check if it is a magic packet
 stdbuf -o0 xxd -c 6 -p |
 stdbuf -o0 uniq |
 stdbuf -o0 grep -v 'ffffffffffff' |
 while read ; do
     mac="${REPLY:0:2}:${REPLY:2:2}:${REPLY:4:2}:${REPLY:6:2}:${REPLY:8:2}:${REPLY:10:2}"
    # do something with the sender's mac found in the magic packet
    ...
done

关于拦截 WOL 请求的问题,已在帖子中讨论 如何在 PC 运行时识别 WOL(局域网唤醒)请求

用户 Duston 的评论说:

LAN 唤醒实际上是 MAC 级别的技术(尽管有些实现使用 UDP),因此您确实必须在原始数据包到达时对其进行监听……假设 NIC 将该数据包传递给 NIC 驱动程序。当收到数据包时,并不是软件启动了计算机,而是 NIC 向主板发出信号。简而言之,我认为您不会找到简单的答案。

这在已接受的 OldFrank 的回答

我同意 Duston 的观点,认为 WOL 是第 2 层与硬件相结合的东西。在正常工作的 PC 上,NIC 硬件将其传递给驱动程序的可能性很小,因为该硬件的任务就是仅在真正需要时才干扰您的 CPU。在正常工作的 PC 上看到魔术包的最佳机会是:安装并运行嗅探器(数据包分析器)软件。这将强制支持 NIC 进入特殊模式,将每个数据包传输到 CPU。如果您现在可以在输出中看到魔术包,下一步将是配置嗅探器,以便在看到魔术包时提醒您。完成。所有这些都将非常耗费 CPU。您可以编写执行所有这些操作的软件,但这实际上是用固定查询而不是可配置查询重写整个嗅探器。

相关内容