我使用的是 Windows 7 64 位系统,并且已完成设置网络唤醒所需的所有步骤。然后我关闭了电脑并尝试将其唤醒。但什么也没发生。
如果我手动打开计算机,它会显示:
魔包接收成功
计算机似乎收到了魔术包,但并未被唤醒。我已更改所有设置以允许局域网唤醒。一切似乎都配置正确,但实际唤醒不起作用。
我怎样才能让它工作?
答案1
以下是我发现的一些会破坏 WoL 的事情的列表:
显然它不能通过 wifi 工作。
在您的 BIOS 中,您需要允许 PCI(和 PCIe)设备唤醒计算机。
非常很少有路由器会默认路由广播数据包,尤其是来自互联网的数据包。您可以花很长时间进行谷歌搜索,最终找到极其复杂的路由器配置文件设置(它不可能出现在 Web 界面中,您的路由器甚至可能不允许这样做),或者,更简单的选择:使用 Tomato 或 DD-WRT 之类的程序,它们的 Web 界面中内置有 WoL 工具。
确保当您的计算机处于“关闭”状态时,网卡上的 LED 仍在闪烁。
我不知道如何在 Windows 上执行此操作,但在 Linux 上,您必须使用它
ethtool
来启用卡唤醒 - 并将其设置为在广播时唤醒和魔法包。不只是魔法包。
调试并不是一件容易的事情,整个 WoL 系统非常脆弱。
答案2
所有必要步骤
由于您没有列出,我们无法验证这一点。这通常由 3 个部分组成。
- 硬件必须支持它(带有电缆的以太网卡到主板 WOL 插座,或带有 WOL 的主板嵌入式以太网卡)
- 通常,在任何下游功能运行之前,需要先设置 BIOS 设置。
- 通过控制面板访问网卡设置中的设置来查找 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;
?>