如何在没有广播地址的情况下在 WAN 上唤醒?

如何在没有广播地址的情况下在 WAN 上唤醒?

--- 在底部回顾可能的解决方案 ---

首先,如果我写了一些毫无意义的东西,我深表歉意。直到 3 天前,我对网络的了解才超越了 IP 地址的概念,其中很多内容对我来说仍然很陌生。

我设置了一个系统,可以使用 LAN/WAN 唤醒功能远程打开家用电脑。我按照几个指南启用了此功能,起初它似乎可以正常工作,但在我的远程 PC 关闭一段时间后,它就不再起作用了。

我理解这是由于 ARP 表刷新造成的,我认为我已经通过将我的远程 PC IP 地址映射到其路由器的 DHCP 配置中的自己的 MAC 地址来解决了这个问题。

让我简单说明一下我所做的事情:

  1. 设置 DDNS 服务、在 BIOS 中允许 WoL、允许 NIC 在魔术包上进行 WoL、禁用 Windows 10 上的快速启动等... 该部分已涵盖。
  2. 我在路由器上转发了端口 7 来监听 UDP 数据包。由于路由器不允许广播,我无法将端口绑定到 192.168.1.255(它显示“无效 IP”),因此我将其绑定到远程计算机的 IP 地址。
  3. 然后,在 DHCP 配置中,我将远程 PC MAC 地址映射到其自己的 IP。
  4. 最后,我在手机上下载了一个应用程序(这个) 发送一个带有我的远程 PC MAC 地址的魔术包。我在 4G 上进行了测试,它正确地传送了数据包。

正如我上面所说,在远程 PC 关闭一段时间之前,一切都运行正常。我以为步骤 3 会修复 ARP 表刷新问题,但显然没有(我以为 DHCP 配置和 ARP 表是同一件事?)。

所以我的问题是,有没有办法可以解决这个问题,并且即使在关闭了一段时间后也可以远程打开我的电脑?

我的问题的第二部分是:我读过这里我应该编辑路由器的 ARP 表,以便在我的 PC MAC 地址和 IP 之间建立静态映射,这样它就不会被清除。接下来的 3 周我都不在家,我不记得我的路由器是否有可能编辑 ARP 表(但我可能记错了)。那么,有没有办法通过 SSH 远程连接到路由器?

任何帮助或信息都将不胜感激。


编辑-对于那些会遇到同样问题的人:

如果您的路由器不允许定向广播(显然大多数路由器都不允许),则向计算机发送 WAN 唤醒数据包会变得稍微复杂一些。您可以:

  • 向 ARP 表添加静态绑定。静态 DHCP 预留不起作用,因为它们执行不同的功能,如前所述这里。编辑 ARP 表也不一定简单:似乎大多数路由器的 Web GUI 中都没有该选项,因此您必须通过 SSH 进入它们。即便如此,您可能还是会面临一个被阉割的系统,只允许执行非常小的命令子集,就像我的情况一样。

  • 如果您无法编辑 ARP 表,还有两个选项:

    1. 使用低功耗的树莓派 24/7 全天候运行,通过 ssh 将 wol 数据包发送给它,并通过 LAN 进行广播,具体方法如下这里

    2. 如果您的路由器有向 LAN 中的机器发送 WoL 数据包的选项,请通过 HTTPS 启用路由器的远程管理,以便您可以通过浏览器访问路由器的 Web GUI。但是,普遍的共识是,这是一种极不推荐的做法。

答案1

我的问题的第二部分是:我在这里读到我应该编辑路由器的 ARP 表以便在我的电脑 MAC 地址和 IP 之间建立静态映射,这样它就不会被清除。

是的,如果您尝试使用端口转发进行 WoL,那是正确的。

接下来的 3 周我都不在家,我不记得我的路由器有编辑 ARP 表的能力(不过我可能记错了)

许多家用路由器确实没有此功能(或至少在 Web UI 中没有)。这不是普通用户需要做的事情;实际上仅有的它所看到的用途要么是通过端口转发进行的 WoL,要么是“保护”网络的拙劣尝试。

(事实上​​,许多家用路由器甚至没有编辑路线...)

(我以为 DHCP 配置和 ARP 表是同一件事?)。

绝对不是。(一些路由器(例如 pfSense)确实具有自动将静态 DHCP 租约复制到静态 ARP 表条目中的功能,但这是他们必须刻意编程的功能。)

那么,有没有办法可以通过 SSH 远程连接到路由器?

取决于路由器。有些路由器允许启用 SSH,有些路由器仅支持 Telnet 或根本不支持;有些路由器将其限制在 LAN 上。有些路由器允许您通过 SSH 执行有用的操作,有些路由器的命令集非常有限;您不太可能在那里找到真正的 WoL 命令,尽管您可能能够添加临时静态 ARP 条目。

不管你应该还取决于路由器。正如评论中提到的,许多嵌入式设备往往带有过时的、有时是完全易受攻击的软件,其中包括其 SSH 守护程序。(例如,Dropbear sshd 在 2016 年有一些可远程利用的漏洞。)

当你回到家时,我建议你买一个便宜的类似 Raspberry Pi 的设备(低功耗,可以全天候运行),然后设置 SSH(通过端口转发)进入那。不可否认,通过 SSH 运行 LAN 唤醒命令肯定不如直接通过应用程序运行那么方便……但实际上应该很容易将 WoL 数据包转发到 Pi,并让其将它们作为广播反弹回 LAN。(没有 ARP 问题,因为 Pi 始终在线。)

边注

我转发了路由器上的端口 7 来监听 UDP 数据包。

端口 7 过去被分配给“回显”服务。传统上,WoL 数据包被发送到端口 9(“丢弃”服务),因为它们应该被实际操作系统忽略 - 绝对不会被回显(可能造成回显风暴)。

现在是非常任何主机都不太可能真正在“echo”端口上侦听数据包(除非它是来自 1980 年代的时间旅行者),而实际的 WoL 功能根本不关心“端口”……但出于原则,我还是会修复它。端口 9 对于针对 NIC 而不是 OS 的数据包更有意义。

答案2

根据 用户指南 VMG8825-B 系列手册 第 132 页,您应该能够为您的计算机分配一个静态地址 网络设置 > 家庭网络 > 静态 DHCP。该地址应该是您的内部IP,例如192.168.1.10

完成此操作后,向路由器的公共 IP 发送 WoL 包应该会唤醒您的计算机。此操作应从本地网络之外进行。

如果这不起作用,则某些硬件或软件元素不支持 WoL。请参阅此帖子了解要求列表: LAN 环境中的 RDP 网络唤醒


如果您可以从网络外部访问路由器的配置页面,则可以从此页面强制向您的计算机发送 WoL 包。

在手册中,请参阅第 137 页的“LAN 唤醒屏幕”部分。

点击网络设置 > 家庭网络 > 网络唤醒打开此屏幕:

在此处输入图片描述

输入计算机的内部 IP 地址或其 MAC 地址,然后按“唤醒”按钮。

相关内容