如何通过命令行界面获取交换机的 ARP 表?

如何通过命令行界面获取交换机的 ARP 表?

我可以在网络交换机的用户界面上看到已连接的设备信息。是否可以使用命令行或 PowerShell 查询交换机的 ARP 表?

在第三条评论和前两个答案写完后添加了以下详细信息。

假设我们有一个子网,其中心是一台交换机,Linux 和 Windows 计算机连接到交换机。假设网络中有一台 Windows 计算机,我们打算将数据包发送到子网中的另一台计算机。因此,我们需要知道它的地址。

此时,我尝试向网络的广播 IP 地址发送 PING 请求,以便利用ARPWindows 命令,但没有主机响应我。也就是说,我们的计算机的 ARP 表没有被新条目刷新。可能,现代 Linux 和基于 Windows 的系统出于有效的安全原因不支持计算机网络的广播属性。

这就是为什么我想到通过主机的命令 shell 获取交换机的 ARP 表到主机。

答案1

查询网络设备的信息首先需要设备有管理接口,非管理设备根本无法查询。

有 3 个管理界面:命令行、GUI 和 SNMP。如果设备有串行接口,可以将计算机直接连接到该接口以访问 CLI。在远程设备上,可以使用 SSH 或 telnet 访问 CLI;出于安全原因,强烈建议不要使用后者。GUI 界面基于浏览器。

设备有哪些可用接口(或至少应该)在设备规格中可以找到。Soho 路由器通常只有 GUI,但某些设备可能有 CLI。SNMP 极其罕见。

网络设备只是一台设计用于执行特定任务的计算机。与任何计算机一样,它们都有由制造商设计的操作系统。Cisco IOS、ArubaOS、ExtremeXOS、Juniper OS 等与其他计算机操作系统的区别也很大。Cisco IOS 无法识别 ArubaOS 命令。

简单网络管理协议是每个网络管理应用程序用来管理设备的协议。有 3 个或多或少不兼容的版本 - 例如,只有 SNMPv1 接口的交换机根本无法使用 SNMPv2c 进行查询。

管理 SNMP 使用的设备对象标识符(OID)。它们具有标准化结构,以字符串 1.3.6.1.4.1 开头。内容如下:

1     iso - ISO is the name of the group that launched the OID standard 
.3   org - Organization specified next to this figure 
.6   dod - The US Department of Defense 
.1   internet - Determines that communication will be through the internet 
.4 private - States that the device is manufactured by a private company 
.1 enterprise - States that the manufacturer is an enterprise

字符串中的下一个元素是用于标识制造商的私有企业编号 (PEN)。这些是由 IANA 分配。例如,对于 Cisco 设备,字符串以 开头1.3.6.1.4.1.9,对于 HP 设备,字符串以 开头1.3.6.1.4.1.11,对于 Intel 设备,字符串以开头1.3.6.1.4.1.343,等等。

有几个命令行 SNMP 实现。网络管理协议开放SNMP几乎都是行业标准。除了协议版本之外,使用它们还有一些障碍:

  • 如何在设备中实现 SNMP 完全由制造商决定。ACME GreatSwitch 2000 上存在的对象可能无法在 ACME GS 1000 中实现;运行 ACMEOS 42 的 ACME GS 2000 上存在的对象可能无法在 ACMEOS 41 或 43 中使用。
  • 虽然有一些在线存储库,例如OID 信息奥迪视窗,它们并不可靠。使用可用的 OID 更新它们并MIB完全由制造商自行决定。最新信息仅由制造商提供

... 仅举两个例子。

由于上述原因,根本不可能存在这样的简单命令query switch arp table。有人创建了一个PowerShell 的 SNMP cmdlet. 但是,就像其他所有命令行 SNMP 实现一样,它需要了解可用的 OID 以及如何使用它们

相关内容