由于我们的(前任!:-)网络经理的记录保存有些松懈,我被要求找出我们公司中存在哪些 QNAP 和 Synology NAS 设备。我们在英国各地有数百个办事处,它们都是独立的网络和独立的域。它们都是基于 Windows(Server 2k3、2008 和 2012 的混合体)。我们运行自己制作的监控软件,允许我远程运行任何我想要的软件。
QNAP 和 Synologies 具有不同的 MAC 地址,因此如果我可以扫描网络以查找 MAC 地址并将输出传输到文件,我可以轻松获取所需的信息。问题是如何获取 LAN 上所有 MAC 地址的列表。
显然第一步就是运行ARP-A,我可能还是会继续这样做。但是,这只会显示服务器在 arp 缓存超时内看到的设备。有谁知道一种简单的方法来获取全部设备?简单是指内置在 Windows 中的软件 - 我更希望不必安装任何软件,因为我们谈论的是数百个不同的办公室。在这些场合,nmap 往往会被提及,但 Windows 端口似乎需要安装额外的库。如果我必须使用外部扫描仪,最好有一个可执行文件,只需将其复制到服务器上并运行即可。
附言:快速澄清一下:
扫描仪需要是一个命令行应用程序,这样我就可以远程启动它,并将输出发送到文件以供后续解析。它不能依赖 Java,因为不能保证所有服务器都装有 Java。我相当肯定所有服务器至少都有 .Net 2.0 - 我想在紧要关头我可以快速启动一个 .Net 2.0 应用程序来 ping 网络上的每个可能地址并获取与任何回复关联的 MAC 地址...
答案1
最快/最简单的方法通常是从您的交换机中获取 arp 表(假设您已经管理了交换机,否则,请做好承受巨大痛苦的准备)并根据分配给您正在寻找的网卡制造商的 MAC 地址对其进行过滤。 我倾向于使用这个网站将 MAC 与供应商联系起来,反之亦然,但肯定还有其他方法。
如果您的交换机不受管理,因此您无法轻松地从中央位置调出 arp 表,那么下一个最佳方法是找到每个可以广播的网络段上的机器,然后查找本地 arp 表。这……远非理想,但确实是许多糟糕选择中的最佳解决方案。与其像您在问题中建议的那样对所有这些机器进行交互式登录,不如我会使用某种方法获取远程命令行从中央位置(如您的工作站)进行。WinRM、PowerShell 远程处理甚至 PSexec 都是实现此目标的相对简单的选项,它们可能适合您,也可能不适合您,具体取决于您的环境设置方式。
哦,让我补充一下,与其 ping 每个地址,或者编写一个应用程序来做这件事,不如直接点击每个子网的广播地址或全局广播地址,如果这是您最终要走的路线。(广播地址是.255
最后一个八位字节中的地址,全局广播地址是255.255.255.255
。)
答案2
你试过吗Angry IP Scanner
?
我记得那似乎是一个可执行文件。
我之前在Linux上使用过Fing,它可以在命令行上运行并输出到命令行。
答案3
如果您可以准确找到已安装的卷,则可以识别 IP 地址,然后追踪它是否是错误的设备之一。您需要net use
在本地执行命令,或查看注册表中任何持久映射的驱动器。
然后,通过探测名称本身来获取信息,或者尝试从服务器进行 ping 将返回 MAC 地址。