来自 WAN 的 Wake-On-Lan (WOL) 不适用于 Unifi(USG/交换机)

网络工程 播送 无处不在 网络唤醒
2022-03-07 18:04:13

tl;博士我需要通过 USG 通过 Internet 进行 WOL 才能工作。WOL 已经在本地工作。我猜USG / Switch是问题所在。

大家好

作为一般网络和特别是 Unifi 的新手,我正在尝试通过 USG Pro 从互联网为我的本地机器(±100)设置局域网唤醒。最终,我希望能够通过 TeamViewer 中的 WOL 功能开启计算机。为此,我已经做了很多(建议的)事情,但似乎都没有奏效。

我已经阅读了这个社区和其他社区中关于 Unifi/WOL 的大部分主题。

最有希望的选项——也是我目前实现的选项——是为广播 MAC (FF:FF:FF:FF:FF:FF) 设置一个静态 ARP 条目,其中包含未使用的 IP 和端口 9 的端口转发到那个未使用的IP。我想——如果我错了,请纠正我!— 是当一个魔术包从互联网上的端口 9 发送时,USG 将其转发到未使用的 IP,然后查找其 MAC 并看到它是广播 MAC,从而将魔术包发送给所有客户端。

我还只是配置网络的一部分,还没有使用 TeamViewer 或配置计算机(NIC 和 BIOS)。

特此,我迄今为止所承担和发现的:

1) 创建了一个静态 ARP 条目

使用以下内容创建并通过 SSHconfig.gateway.json将其上传到/usr/lib/unifi/data/sites/defaultCloud Key(第 2 代)(以使条目持久化)。然后强制配置 USG。

{
    "protocols": {
        "static": {
            "arp": {
                "192.168.1.254": {
                    "hwaddr": "ff:ff:ff:ff:ff:ff"
                }
            }
        }
    }
}

2) 增加端口转发 我们使用在步骤 1 中使用的“未使用”IP

3)检查ARP表项是否在USG中

SSH进入USG,我可以看到该条目存在show arp 在此处输入图像描述

4) 检查 USG 是否收到来自 WAN 的包

由于我尚未使用 TeamViewer 或设置我的计算机 (BIOS),我正在使用 iPhone 和Depicus上的 RemoteBoot 应用程序发送 WOL 包和PC 上的Wake On Lan Monitor以测试它是否收到包。我们可以在 tcpdump 中看到它接收包。 在此处输入图像描述

5)检查它是否通过局域网

本地网络上的包也是如此。我们可以看到它们被路由到端口转发和配置文件中指定的未使用 IP。 在此处输入图像描述

6) 计算机什么也没有收到

当检查客户端 PC 上的 WOL 监视器(具有包发送到的 MAC 地址的那个)时,没有任何东西出现。 在此处输入图像描述

7)直接端口转发确实有效

出于测试目的,我设置了另一个端口转发(这次是端口 10)直接到客户端计算机的 IP。正如我们在 WOL 监视器中看到的那样,这显然有效: 在此处输入图像描述

我不知道为什么它不起作用。我需要设置更多东西吗?我犯错了吗?有人能把我引向正确的方向吗?

谢谢!

2个回答

因为网络广播在路由器中默认被阻止(定向广播),所以您需要启用定向广播,但这是一个非常非常糟糕的主意,因为它会打开您的网络以接收来自 Internet 上任何人的广播(就像您的想法一样) .

对于此类问题,我见过的最佳解决方案是在您的网络中始终在线的主机,在您登录后执行 WoL 并告诉它要唤醒哪个主机。这应该具有内置的安全性,以便其他人无法简单地控制它。不幸的是,主机/服务器和产品或资源推荐在这里是题外话,所以你需要对 WoL 服务器进行自己的研究。

看起来,带有广播地址的静态 ARP 条目不起作用 - 它不在某些设备上。此外,我不确定您是否在正确的设备上设置了 ARP 条目:它必须始终位于 NAT 路由器本身上。您可以通过简单地从路由器 ping 假 IP 来测试静态 ARP 条目。所有 LAN 节点都应收到 ICMP 回显请求。

但是,您也可以使用任何未使用的 MAC 地址。转发该帧但未在本地 MAC 表中找到它的交换机会将其泛洪到所有接口,就像广播一样。我会使用本地管理的 MAC 地址来保持干净(第一个八位字节的第 1 位设置为 1)。