我在通过 PHY 和单播进行 LAN 唤醒时遇到了一些问题。我可以通过 ping 或 ssh 关闭机器来唤醒系统,但只能在前 30 秒内唤醒。这是为什么?可能是什么原因造成的?
我将脚本 70wol 放入 /usr/lib/pm-utils/sleep.d 并使其可执行,由于它可以工作,因此显然它会被执行:
#!/bin/bash
ethtool -s eth0 wol pug
我在 Debian 测试中,NIC 是 Intel DH87RL 上的 Intel I217-V,驱动程序是 Intel 2.5.4 e1000e.ko
这与 Windows 8.1 系统完美兼容,所以我猜测这是某种驱动程序或操作系统问题。
答案1
好吧,我真傻,没想到 Windows 和 Linux 默认的 ARP 超时时间正好是 30 秒,你可以通过执行以下命令查看
netsh interface ipv4 show interface 2
在 cmd.exe 中,其中 2 必须替换为你的 NIC 的 Idx,可以通过发出以下命令获取
netsh interface ipv4 show interfaces
在 Linux 上输入
cat /proc/sys/net/ipv4/neigh/default/base_reachable_time_ms
在你的 bash 中,查看默认的 ARP 超时时间(以毫秒为单位)。
因此,解决方案是设置静态 ARP 地址,以便通过 SSH 或 SMB 等方式唤醒系统。为此,请执行以下操作
arp -s 10.0.0.200 00-10-54-CA-E1-40
在 Windows 上
arp -s 10.0.0.200 00:10:54:CA:E1:40
在你的Linux系统上。