如果我的 Android 设备连接到本地网络,我可以成功唤醒我的电脑,但我无法从其他网络唤醒我的电脑。
所有 BIOS WOL 设置均已启用。我还打开了一个端口 (9 UDP),并且正在使用 DDNS。
我的防火墙中有一条规则允许端口 9 传入数据包。
我正在尝试使用 Wireshark 检查我的计算机是否接收到 Magic Packet,但我没有看到任何传入数据包。我正在使用 Fing(Android 应用程序)发送数据包。
我究竟做错了什么?
笔记:我正在运行 Ubuntu 14.04 LTS
答案1
网络唤醒无法通过互联网工作
这是件好事,你想让随机的人通过互联网唤醒你的系统吗?
您的计算机位于路由器后面。几乎任何有互联网服务的地方,您的手机也都位于路由器后面,无论是市政 Wifi、星巴克、您的工作场所等。
WOL 数据包是广播数据包。标准路由器不会转发广播数据包。广播数据包不应该离开您的 LAN,您能想象如果它们离开 LAN 会造成怎样的滥用吗?
执行您要执行的操作的正确方法是:您需要一个始终在网络上运行的系统,您可以跳转、登录并指示在您的网络上发出 WOL 数据包。如果您的路由器已刷入 DD-WRT,则它具有此功能。
答案2
这就是为什么它被称为“唤醒-局域网“。它应该在局域网中工作。
然而,我不止一次被告知,令我惊讶的是,任何计算机网卡收到的数据包可能是一个魔术数据包,如果它
- 寻址到广播 MAC 地址,并且
- 包含任何地方在有效载荷中,魔术字符串(6x
FF
和 16xcomputer's MAC address
)
但是,你的路由器需要允许将数据包转发到广播 MAC 地址,或者你的计算机的 WoL 系统需要更灵活,例如接受寻址到其自己的 MAC 地址的 WoL(我实际上认为这是标准方法,但是维基百科说我错了)。
由于互联网 WoL 似乎不可靠,因为您将依赖允许它的中间路由器,因此如果您在网络中找到可用于为您执行 WoL 的东西,您可能会更安全。例如,能够ssh
(或telnet
,但这很危险)到您的路由器并从那里发送魔术包。或者,如果您的路由器受支持,请查看dd-wrt如果您愿意的话,可以刷新您的路由器。dd-wrt
可用于从您的网络内部发送魔术包,而且由于它始终处于打开状态,因此您不需要更多硬件全天候在线。
我使用 Raspberry Pi 作为 WoL“平台” - 路由器有一个端口转发到 Pi 的ssh
服务器,因此我ssh
将其发送到 Raspberry Pi 并从那里发送魔术包。由于它位于 LAN 内部,因此几乎可以保证 WoL 可以正常工作。