我在公司networking中设置唤醒LAN时遇到一个奇怪的问题。
以下是工作站被唤醒的情况:
发送WOL命令的工作站与要被唤醒的工作站位于同一个子网中。 现在,如果我尝试唤醒机器,会发生以下情况:
开始条件:机器已closures一天或多天
有人有一个想法,为什么不能直接通过其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)。