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

wtf*_*mbo 6 networking router remote-desktop dhcp arp

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

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

我设置了一个系统,可以使用 LAN/WAN 唤醒远程打开我的家庭计算机。我按照几个指南来启用它,一开始它似乎工作正常,只是在我的远程电脑关闭一段时间后,它不再工作了。

我明白这是由于 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 上测试了它,它正确地传送了数据包。

正如我上面所说,一切正常,直到远程电脑保持关闭状态一段时间。我认为步骤 3 可以修复 ARP 表刷新,但显然没有(我认为 DHCP 配置和 ARP 表是同一件事?)。

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

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

非常感谢任何帮助或信息。


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

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

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

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

    1. 使用低功耗树莓派 24/7,通过 ssh 将 wol 数据包定向到它并通过 LAN 广播它,如此处所述

    2. 如果您的路由器可以选择将 WoL 数据包发送到 LAN 中的计算机,请通过 HTTPS 启用路由器的远程管理,以便您可以通过浏览器访问路由器的 Web GUI。然而,普遍的共识是这是一种强烈不推荐的做法。

use*_*686 5

\n

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

\n
\n

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

\n
\n

接下来 3 周我不在家,而且我不记得我的路由器可以编辑 ARP 表(我可能弄错了)

\n
\n

许多家用路由器确实没有此功能(或者至少在 Web UI 中没有)。这不是典型用户需要做的事情;几乎是唯一的用途要么是通过端口转发进行 WoL,要么是“保护”网络的糟糕尝试。

\n

(就此而言,许多家用路由器甚至没有编辑路由的功能......)

\n
\n

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

\n
\n

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

\n
\n

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

\n
\n

取决于路由器。有些允许启用 SSH,有些则仅支持 Telnet 或根本不支持;有些限制它仅限于 LAN。有些可以让你通过 SSH 做有用的事情,有些则只有非常有限的命令集;尽管您可以添加临时静态 ARP 条目,但您不太可能在那里找到实际的 WoL命令

\n

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

\n

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

\n

边注

\n
\n

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

\n
\n

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

\n

现在,任何主机实际上不太可能侦听“echo”端口上的数据包(除非它是 20 世纪 80 年代的时间旅行者),并且实际的 WoL 功能甚至根本不关心“端口”......但是无论如何,我都会修复它,不符合原则。端口 9 对于针对 NIC 而不是针对操作系统的数据包更有意义。

\n