网络唤醒数据包无法唤醒计算机

网络唤醒数据包无法唤醒计算机

我使用的是 Windows 7 64 位系统,并且已完成设置网络唤醒所需的所有步骤。然后我关闭了电脑并尝试将其唤醒。但什么也没发生。

如果我手动打开计算机,它会显示:

魔包接收成功

计算机似乎收到了魔术包,但并未被唤醒。我已更改所有设置以允许局域网唤醒。一切似乎都配置正确,但实际唤醒不起作用。

我怎样才能让它工作?

答案1

以下是我发现的一些会破坏 WoL 的事情的列表:

  1. 显然它不能通过 wifi 工作。

  2. 在您的 BIOS 中,您需要允许 PCI(和 PCIe)设备唤醒计算机。

  3. 非常很少有路由器会默认路由广播数据包,尤其是来自互联网的数据包。您可以花很长时间进行谷歌搜索,最终找到极其复杂的路由器配置文件设置(它不可能出现在 Web 界面中,您的路由器甚至可能不允许这样做),或者,更简单的选择:使用 Tomato 或 DD-WRT 之类的程序,它们的 Web 界面中内置有 WoL 工具。

  4. 确保当您的计算机处于“关闭”状态时,网卡上的 LED 仍在闪烁。

  5. 我不知道如何在 Windows 上执行此操作,但在 Linux 上,您必须使用它ethtool来启用卡唤醒 - 并将其设置为在广播时唤醒魔法包。不只是魔法包。

调试并不是一件容易的事情,整个 WoL 系统非常脆弱。

答案2

所有必要步骤

由于您没有列出,我们无法验证这一点。这通常由 3 个部分组成。

  1. 硬件必须支持它(带有电缆的以太网卡到主板 WOL 插座,或带有 WOL 的主板嵌入式以太网卡)
  2. 通常,在任何下游功能运行之前,需要先设置 BIOS 设置。
  3. 通过控制面板访问网卡设置中的设置来查找 Magic Packet 和可用于 WOL 的各种其他迭代。

答案3

我的电脑上安装了一个虚拟机,但它阻止我唤醒另一台电脑。我卸载了虚拟机,一切正常。

答案4

这里有很多事情需要考虑。

您没有具体说明“魔术包成功接收”来自哪里,但我假设您正在使用某些 WoL 侦听器来验证计算机开启时数据包是否已成功到达。

这些是你必须调查的事情:

在电脑上打开

  • 如果网卡未嵌入主板,您必须在主板中找到允许 PCI 卡唤醒系统的设置。然后您必须检查您的卡和主板,看看哪些能量状态与 WoL 兼容。
  • 如果网卡嵌入主板,BIOS 设置中通常会有一些 LAN 唤醒选项,可以为你启用一切
  • 如果网卡未嵌入主板,则必须从操作系统对其进行配置以允许 WoL(以及可选的魔术包)。Linux 有 ethtools,在 Windows 中,您必须转到网卡属性,单击配置以打开适配器配置窗口,然后转到能源选项卡。布局取决于您的网卡,但现代英特尔卡为 WoL 和节能提供了单独的部分,如果您不太清楚自己在做什么,只需为 WoL 启用一切即可。
  • 有些计算机(甚至服务器上的计算机)在系统关闭时断电时会出现不可预测的行为,并且永远不会通知交换机它们存在,直到它们再次启动,从而无法实现 WoL。电源恢复时的“最后状态”通常可以解决这个问题,但是,我建议您事先进行测试,因为您可能会发现需要使用“开机”才能绝对确定。

路由器/交换机

  • 如果 PC2 可以直接 l2 访问要开机的 PC,则 WoL 通常不会出现问题
  • 如果您必须从互联网或其他网络执行 WoL,则有很多解决方案。最简单的方法是将某个端口映射到广播 IP 和 WoL 端口,但是并非所有路由器都允许这样做。OpenWRT 确实支持这种设置。
  • 如果您无法通过不同的网络配置 WoL,请考虑将 WoL 服务器放入您的计算机网络中,并通过 ssh / http 连接到它,以显示将在本地执行命令的菜单。我更喜欢 ssh 菜单,但在 php 中它很简单:

php 虚拟 WoL 服务器的代码示例:

<?php
  $mac= $_POST["mac"];
  $port= $_POST["port"];
  $response= shell_exec("/usr/bin/wakeonlan $mac -p $port");
  echo $response;
?>

相关内容