我很难弄清楚问题是否在于路由器没有将数据包转发到 NIC,或者问题在于 NIC 没有唤醒 PC 或其他阻止唤醒的隐藏设置。
无论如何,我想知道是否有任何方法可以检查 NIC 是否真正接收到 LAN 唤醒 (WOL) 数据包。因为这是排除系统故障的第一步。
我使用了 Wireshark,但这是我第一次使用这个程序,我能够看到数据包被路由器接收,然后,路由器发送一个 ARP 请求——上面写着“告诉我谁有 IP”。
那么,当 PC 处于睡眠或关机状态并侦听 WoL 数据包时,我如何确定 NIC 是否实际接收到了该数据包?NIC 是否保留了它接收到的数据包/事件的记录?
答案1
路由器正在进行 ARP who-has 请求表明魔术包已通过 IP 层发送:这超出了 WoL 协议的范围,该协议指定第 2 层(以太网)广播帧,其有效载荷FF:FF:FF
紧接着 NIC 的 MAC 地址重复十六次。
因此,如果路由器尝试将这样的数据包发送到特定的 IP 地址,它将无法唤醒休眠系统,因为 ARP 协商无法完成,所以数据包将无法放到网络上。
路由器必须将数据包发送到广播地址,而这不需要 ARP 解析:这样的数据包将发送到所有站点的所有端口。以太网广播数据包通常可以通过使用 255.255.255.255 作为目的地来发送,或者通过将该netmask
参数的 1s-compliment 与该参数进行逻辑 AND 来发送network
。
例如:
网络 192.168.2.0 的子网掩码为 255.255.254.0,其广播地址为 (192.168.2.0 AND 0.0.1.255),即 192.168.3.255。
不幸的是,由于基于利用广播地址的数据包倍增的拒绝服务攻击,此类subnet directed broadcast
数据包通常不会通过公共互联网转发,因此通常无法从本地配置管理之外的非本地网络使用 WoL。