LAN 唤醒的工作原理

LAN 唤醒的工作原理

这对我来说一直是个谜,而且现在下雪这么大,我想在家工作,但老板要我们晚上关掉电脑以节省能源。我想试试局域网唤醒,但不知道从哪里开始。

答案1

基本上,当你的机器插入电源时,即使关闭,有些机器仍会维持一些非常基本的功能,例如网卡。

它们可以进行配置,以便当收到特殊指令时,可以启动机器。

最简单的入门方法是,如果您有集成网卡,请查看 BIOS 并查看它是否支持它。如果您有实际的网卡,您可能无法使用它...但值得一看的是,您是否有用于局域网唤醒芯片或电缆的插槽

此外,至于节能,你显然需要打开你的设备!你需要一个可以根据时间表打开设备的路由器,或者一个可以发送指令的无线手机或类似设备 - 不过,显然,你最好通过电源按钮打开机器!

维基百科上有一篇关于网络唤醒的好文章


局域网唤醒 (WoL) 支持在计算机主板和网络接口上实现,因此,它不依赖于硬件上运行的操作系统,尽管操作系统有时可以控制 WoL 行为。如果网络接口是插卡而不是集成到主板中,则可能需要通过电缆将该卡连接到主板。带有支持 WoL 的嵌入式以太网控制器的主板不需要电缆。

答案2

好的,网上没有太多关于此内容的好的信息,所以这是我的看法:

LAN 唤醒的工作原理

因此,WoL 的全部意义在于使用网络远程打开计算机。显然,如果你的计算机实际上完全关闭,那么这根本无法工作,因此当现代计算机“关闭”时,以太网卡实际上保持开启状态,处于(希望)低功耗状态,监听 WoL 数据包。

当 WoL 首次创建时,您可以将网卡设置为在有任何网络活动时向 BIOS 发出信号以打开计算机。也就是说,只要网卡看到以太网帧(或者可能是 IP 数据包;我不是 100% 确定)。这似乎有点合理,但实际上它毫无用处,因为偶尔网络上的随机数据包会毫无理由地唤醒您的计算机。为了解决这个问题,有人发明了 MagicPacket™!通过将卡设置为 MagicPacket™ 模式,它只会在看到包含网卡 MAC 地址重复 6 次的数据时唤醒计算机(据我记得)。现在,随机数据包不会烦人地唤醒您的计算机。这也是您需要将 MAC 地址放入 WoL 工具的原因;这样它就可以构造 MagicPacket™。

您可能已经注意到 MagicPacket™ 的一个小缺陷:网络上的任何人都可以看到您的 MAC 地址,因此如果您尝试在不受信任的本地网络(例如大学)上使用 WoL,烦人的人可能会不断唤醒您的计算机。不要引用我的话,但查看手册ethtool页似乎有人为 MagicPacket™“发明”了 SecureOn™。这显然可以让您设置卡监听的 MAC 地址,从而有效地将其变成私人密码。

数据包如何到达你的计算机

现在到了棘手的部分。以太网设计用于在开机的计算机之间发送数据。这与 WoL 不兼容,因为 WoL 想要向关机的计算机发送数据包。

第一个障碍是,离线计算机实际上没有 IP 地址。因此,您无法将 WoL 数据包发送到 IP 地址(允许您输入 IP 地址的工具实际上是在询问路由器的 IP 地址,该路由器处于打开状态)。相反,WoL 数据包会广播到每个连接的以太网设备。您- 在好的路由器中 - 手动将 IP 地址与 MAC 地址关联,但大多数路由器不允许这样做,并且会丢弃发送到外部计算机的 IP 数据包。

广播数据包可以工作,但是有一个问题......

为什么不太好

问题是,大多数路由器不允许你将数据包转发到广播地址。理想情况下,在典型的“我在工作,我想从我的家用电脑获取东西” WoL 设置中,你想要的是从外部端口 9(例如;见下文)转发到 255.255.255.255:9。路由器根本做不到这一点。我最终确实找到了如何为 speedtouch ADSL 路由器做到这一点,但它需要手动编辑配置文件。

可能唯一真正能实现这一点的方法是安装一个不错的第三方路由器固件,比如 Tomato 或 DD-WRT。这些固件在 Web 界面中内置了 WoL 工具。但这并不那么好,因为这样你就不能做一些很酷的事情,比如当你回家时用手机自动唤醒你的电脑。但还是可以的。我还没有真正尝试过,但你可能能够让这些固件进行转发广播。谁知道呢。

端口 7 和端口 9

许多指南都说你必须使用端口 7 或者必须使用端口 9,你会想“为什么?”,“哪一个?”。答案是,这无所谓。你可以使用任何端口;80、666,这无所谓。你电脑上的网卡不关心 MagicPacket™ 发送到哪个端口,只要它接收到它,并且其中有重复的 MAC 地址。如果你确实设法让 WoL 转发工作,你也可以在那里使用任何端口(然后将相应的端口放入你的 WoL 工具中)。

推荐使用 7 和 9 的原因是,它们是一些完全无用的服务器使用的端口,自 80 年代以来就没有人使用过。就像端口 80 是用于网络的端口一样,端口 7 是用于“回显”服务器的端口,它会将所有内容重复给发送方,这是一个巨大的安全漏洞,而端口 9 是用于“丢弃”服务器的端口,它会丢弃收到的所有数据,并且永远不会发送任何内容。它们现在完全没用了,但我猜也许在互联网刚出现的时候(70 年代),它们对网络测试很有用。

故障排除 - 我的电脑无法开机!

首先要检查的是,当您的计算机。为此,请下载 wireshark(谷歌搜索),告诉它监听端口 9(或 7 或其他),然后发送 WoL 数据包。您应该会看到它。如果没有看到,则问题相对容易修复,或至少可以诊断出来。

如果您收到了数据包,但是您的计算机仍然无法启动,那么事情就会变得更加棘手。

首先,进入 BIOS/UEFI,确保启用了“允许 PCI 唤醒计算机”或类似选项。还要启用 PCIe 选项。其次,在 Linux 上,使用ethtool为网卡启用 WoL。类似ethtool -s eth0 wol bgm。在 Windows 中,您可以找到“允许此设备唤醒计算机”选项,也许那里有一些 MagicPacket™ 选项。我不知道我现在没有使用 Windows。

现在,希望它能正常工作。但也许它只能在你关掉电脑后几分钟(甚至几秒钟)内正常工作!哦不!这是路由器的问题。我建议你换一个。说真的,Tomato-USB 太棒了。

答案3

如果您的计算机位于防火墙后面,局域网唤醒功能(可能)将无法工作。要使其工作,您必须在公司的防火墙中打开端口,以让消息通过并发送到您的计算机。

解决此问题的一种方法是,如果您可以访问防火墙后面始终处于打开状态的计算机,并从该计算机发送 WOL 信号。

答案4

Timmmm 非常详细的回答!我还想提一下,由于 WOL 信号位于 osi 模型的第 2 层(数据),因此它通过帧和 MAC 地址传输。因此,发送 WOL 信号的机器需要能够访问您要打开的机器的所有 vLAN。

因此最有可能是管理 vLAN 中的服务器。这就是为什么 WOL 信号通常从主防火墙或您尝试与之通信的特定 vLAN 的 DHCP 服务器发送的原因。这当然需要 VPN 访问或在 DMZ 中设置具有管理访问权限的 RDP 机器(后者极不推荐!!)

这将是一项艰巨的工作,所以不要在下雪天来办公室;)

相关内容