我有一台 Linux 服务器(Ubuntu 12.04.03),它是我们局域网(大约 15 台 PC)的互联网网关。也就是说,eth0Linux 服务器上有互联网,eth1插入非托管交换机(简单的 Linksys 16 端口交换机 (EZXS16W))。所有 LAN PC 都连接到该交换机。Linux 服务器管理 DHCP 详细信息和 Internet 网关/NAT 路由内容。
我正在尝试让其中一台 LAN PC(运行 Windows 7)启用 LAN 唤醒 (WOL),以便 Linux 服务器可以启动它。我已成功配置 BIOS 和 Windows 网络驱动程序,以便 WOL 可以工作一段时间。也就是说,我关闭 PC,走到 Linux 服务器,然后发送魔术包。
> wakeonlan -i 10.8.8.11 '6C:62:6D:EF:86:2E'
这有效。PC 立即启动,一切正常。
但是,如果我关闭 PC,离开,几个小时后再回来并再次尝试“wakeonlan”命令,什么也没有发生。PC 不会开机。
所以,我猜想问题肯定出在 ARP 表上。这似乎很有希望,因为 Linux 服务器确实“忘记”了 Windows PC。
> arp -a -n
? (10.8.8.3) at 00:21:9b:01:ab:0c [ether] on eth1
? (10.8.8.247) at 00:80:77:d9:70:1e [ether] on eth1
? (70.60.233.185) at 90:6e:bb:f0:c4:82 [ether] on eth0
所以我想我应该添加一个永久的 ARP 记录:
> arp -i eth1 -s 10.8.8.11 '6C:62:6D:EF:86:2E'
> arp -a -n
? (10.8.8.3) at 00:21:9b:01:ab:0c [ether] on eth1
? (10.8.8.11) at 6c:62:6d:ef:86:2e [ether] PERM on eth1
? (10.8.8.247) at 00:80:77:d9:70:1e [ether] on eth1
? (70.60.233.185) at 90:6e:bb:f0:c4:82 [ether] on eth0
然而,这并没有帮助。运行“wakeonlan”命令并没有启动 PC。我尝试使用广播地址或其他程序也没有成功:
> wakeonlan 6C:62:6D:EF:86:2E
> etherwake -i eth1 6C:62:6D:EF:86:2E
> etherwake -b -i eth1 6C:62:6D:EF:86:2E
因此,我有几个问题。
1)我做错了什么?:-)
2) 非托管交换机上是否存在 ARP 表/缓存?也就是说,即使我在 Linux 服务器上添加了永久 ARP 条目,Linksys EZXS16W 是否可能已经不知道应该使用哪个端口来连接 6C:62:6D:EF:86:2E?
感谢任何能提供帮助的人!