我可以在网络交换机的用户界面上看到已连接的设备信息。是否可以使用命令行或 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 以及如何使用它们。