离线设备的 HP ProCurve Auto WOL MAC 地址

网络工程 MAC地址 ARP hp-procurve 播送 网络唤醒
2022-02-16 07:40:06

当插入 HP ProCurve 交换机(2510G 和 2530G 型号)时,我正在尝试为 Auto-WOL 设备构建系统。这是在一个完全平坦的网络上,没有 VLAN 或子网路由。

如果您想知道我的原因,我们有成千上万的设备进入我们的设施进行网络成像。默认情况下,每台设备都启用了 WOL-to-PXE,自动化的 WOL 系统可以为每台机器节省几分钟的时间(如果我们可以优化流程,这将加起来相当多)。

目前,我可以成功抓取交换机的 MAC 地址列表并将 WOL 数据包发送到这些地址(顺便说一下,这是在 Windows 环境中)。

我目前陷入困境的地方是 HP ProCurve 交换机在插入设备(电源但关闭)时无法学习 MAC 地址。这打破了我的流程,我相信有些供应商确实学习了插入的离线设备的 MAC在(我无法确认这一点 - 惠普商店在这里)。

现在在一个测试设备上,我可以发送一个定向 WOL 并唤醒它,交换机学习 MAC 地址,一切都很好。我相信这涉及一个 ARP 请求。

我是否正确理解了这项技术,我想要做的是向广播地址 FFFFFF-FFFFFF 发送一个免费的 ARP(通过 ARPing 的 Cygwin 端口)?我在这里阅读了一些数据 - http://wiki.wireshark.org/Gratuitous_ARP - 但我觉得这是错误的解决方案(将机器的 MAC 推送给所有其他人而不是导致其他人报告)。我也尝试对 IP 广播地址进行 ping 操作,但无济于事。

我想我要问的是,是否存在单个主机可以导致未知 NIC MAC 地址响应以填充交换机 MAC 表的解决方案?还是可以获取此数据的另一种解决方案?

编辑:我已经设置了一个 CentOS 机器来运行 arp-scan 但它没有触发任何东西(http://linux.die.net/man/1/arp-scan),arping 也没有。蛮力强制 OUI 将是每个 OUI 1600 万(如果我们将其锁定为仅 HP,例如,他们有多个条目)。如果需要 Linux 机器,我将它作为注释提出来,我有一个可用的。

2个回答

自动化的 WOL 系统可以为每台机器节省几分钟的时间

我不明白怎么做。让我们假设一个人把机器搬进来,放在桌子上,插上电源,插上网络。毕竟,按下电源按钮有多难?

我目前陷入困境的地方是 HP ProCurve 交换机无法在插入设备(带电但关闭)上学习 MAC 地址

正如预期的那样。在系统发送一个帧之前,交换机不会知道它附加了什么,你也不会知道唤醒它的 MAC。所以我们回到了插入电缆打开它的仆从。(或键入 MAC 并希望他们永远不会弄错。)

是否存在单个主机可以导致未知 NIC MAC 地址响应以填充交换机 MAC 表的解决方案

由于没有操作系统运行,NO。WOL 最基本的就是等待特定位模式的 NIC 固件。否则没有什么可谈的。如果系统(“服务器”)有一个管理引擎,那么可能是一个具有网络支持的嵌入式操作系统(ping、telnet、ssh、ipmi、web ......)

我想我要问的是,是否存在单个主机可以导致未知 NIC MAC 地址响应以填充交换机 MAC 表的解决方案?还是可以获取此数据的另一种解决方案?

让我们退后一步,想想开关是如何工作的。

如果交换机不知道帧中的目标 MAC 地址,则交换机会将具有未知目标 MAC 的帧泛洪出该 VLAN 中的所有端口;因此,当主机断电时,您不需要交换机知道主机的 MAC 地址。

但是,您确实需要知道所有相关 PC 的 MAC 地址;该 MAC 地址嵌入在 WOL 帧中。老实说,知道 mac 列表非常简单……只需每五分钟轮询一次边缘路由器以获取相关 Vlan 的 arp 条目,并将结果存储在某处

现在,当您准备好唤醒计算机时,从您存档的 ARP 表中构建一个唯一的 mac 列表,并向每个唯一的 mac 发送一个 WOL 帧;如果您将 WOL 帧发送到已经启动的打印机,谁在乎呢?

仅供参考,我构建了一个 python WOL 数据包制作器,如果它有帮助的话……你需要 linux 或另一个 *nix 才能使用它。如果您愿意,可以在 cygwin 或 VM 中运行...

如果您真的讨厌抓取和存档 ARP 表的想法,另一个选项是 HP Port-Security with Static mac-learning... 这使交换机记住它在端口上学习的 mac,然后将 mac 保存在运行中/启动配置。

HP 端口安全静态