局域网唤醒:单播不起作用。 为什么?

我在公司networking中设置唤醒LAN时遇到一个奇怪的问题。

以下是工作站被唤醒的情况:

  • 在BIOS和网卡的设置中启用WOL
  • 路由器将始终将相同的IP地址分配给该工作站(MAC地址)
  • 网卡configuration为自动获取IP地址

发送WOL命令的工作站与要被唤醒的工作站位于同一个子网中。 现在,如果我尝试唤醒机器,会发生以下情况:

开始条件:机器已closures一天或多天

  • 如果我通过networking广播(只允许testing)发送WOL命令,则机器成功唤醒
  • 如果我将WOL命令直接发送到该工作站(使用IP地址,子网掩码,DNS名称),机器将不会唤醒。
  • 只有当我手动启动机器至less一次,机器才能通过直接发送WOL命令到其IP地址来唤醒机器。

有人有一个想法,为什么不能直接通过其IP地址被唤醒,如果它被closures了更长的时间,为什么这个作品,如果我使用“广播”作为WOL方法?

任何反应,高度赞赏。

正如@ ott的评论所提到的那样,您不能将单播stream量发送到当时networking上没有活动的机器。 “在networking上激活”对于不同的设备意味着不同的东西,但是对于像PC或路由器这样的第3层设备来说,这意味着“在过去的4个小时内,这个设备已经和机器通话了”(取决于arp超时)到交换机等二层设备,意味着“交换机在过去的5分钟内已经看到了一个包含该源MAC地址的数据包”(取决于MAC老化时间)。

您声明单播WOL在设备打开后closures时工作,但是在机器closures后的某个时间,您不会说明它是否停止工作。 这是有效的,因为路由器(或者在同一子网中生成PC的WOL数据包)具有arp条目(4小时超时),并且可以创build指定给正确机器的数据包,但是交换机要么知道MAC地址属于(在MAC老化时间内发送的WOL)或者已经超时该MAC地址,因此将未知目的地视为广播。 一旦arp条目超时,路由器(或PC)将无法封装WOL数据包,因为它没有任何东西放在dest-mac字段中。

为了使这项工作,你需要使用广播,没有其他可靠的方法。 为了使WOL工作在与您的服务器连接不同的networking上,您需要使用定向广播数据包(将单播数据包发送到远程networking的广播地址,正确configuration的远程路由器将允许数据包并将其作为广播发送networking)。