机器仅在本地魔术包上唤醒

机器仅在本地魔术包上唤醒

我有一台 Debian 服务器,我想使用类似的工具远程唤醒它wakeonlan

我已经为服务器分配了一个静态内部 IP 192.168.0.14,并在路由器中设置了适当的端口转发(否则其管理界面会非常有限)。

当我登录到同一个网络时,我可以使用子网IP唤醒服务器,但无法使用路由器的公共IP唤醒服务器。

我不明白的是:当服务器正在运行并且我使用 netcat 在服务器上监听时nc -ulv -p 9,我可以看到两种情况下传入的数据包(发送到子网 IP 时和发送到路由器的公共 IP 时)。

如果数据包在两种情况下都到达,为什么机器只在其中一种情况下被唤醒?

答案1

当您的服务器关闭时,您的路由器很快就会在 ARP 表中丢失其条目。路由器知道魔术包应该发送到的 IP,但无法关联 MAC 地址。您需要定义静态 ARP 条目才能使其工作(尽管在非常有限的管理界面下,这可能是不可能的)。

您已经为服务器定义了静态内部 IP(“连接” IP 和 MAC),但这适用于 DHCP 服务器,而不是 ARP 表。

通常,魔术包是广播帧。当您在 LAN 中使用它时,路由器不需要您要唤醒的特定服务器的 ARP 条目,它只是广播数据包。广播数据包通常不被路由(因为史蒂文的回答状态),这就是为什么您要发送单播数据包并定义端口转发。但是,此数据包需要路由器上的有效 ARP 条目。

答案2

标准广播唤醒 LAN 的一个主要限制是广播数据包通常不被路由。这阻止了该技术在大型网络或 Internet 上的使用。可以使用子网定向广播 (SDB) 来克服此限制。

来源:局域网唤醒 - 维基百科

相关内容