SNMP Walk 与 MIB OID 列表

SNMP Walk 与 MIB OID 列表

(本故事最后有一个问题,请继续关注我!)

经过大量研究,我相信我已经开始了解 SNMP 的基础知识。我一直知道 SNMP 管理系统会使用来自设备的数据(也可能将数据发送到设备),但我不知道如何配置该设置。

我现在正在使用 SNMP 管理系统,所以是时候弄清楚了。所以我深入研究了 MIB 和 OID。在我看来,供应商会为他们的产品发布 MIB,其中应该包含产品特定的 OID。MIB 就像可以从设备查询的事物的目录,而 OID 是可以查询的特定项目。(如果我理解错了,请纠正我。)

例如,SonicWall 可能会为其某个防火墙的特定固件提供 MIB。因此,如果我想监控该防火墙的最大可用连接数,我会从 mysonicwall.com 下载 MIB,将 MIB 导入 MIB 浏览器并查找与最大连接数相对应的适当 OID。然后,我可以将该 OID 输入我的 SNMP 管理系统来监控该指标。

所有这些对我来说都很有意义,希望我理解正确。我发现这个过程相当笨重,尤其是现在有自我描述 API 的情况下,但是 SNMP 是在 80 年代创建的,所以我想我们只能使用现有的。

但是,当我在 SonicWall 上执行 SNMP 遍历时,这种理解就不成立了。执行遍历会产生超过 500 个返回的 OID。但是,当我检查 SonicWall 提供的 MIB 时,它只列出了这些 OID 的一小部分。这是因为通过遍历发现的大多数 OID 不是 SonicWall 特定的,而是通用的行业标准 OID 吗?

另外,有没有一种合适的方法可以获取 SonicWall 通过 SNMP 提供的所有数据(无论是 SonicWall 特定数据还是行业标准数据)的报告?就像我可以从 SNMP 中输入数据并返回所有数据含义的某种工具?

此外,如果我对 SNMP、MIB 和 OID 的理解有任何漏洞,欢迎提出反馈。谢谢!

答案1

好的,这就是我对 SNMP 的研究结果。我无法验证这些结果是否 100% 准确,但我觉得我对 SNMP 有了更好的了解,希望这些信息能帮助那些刚入门的人。

首先,在我看来,SNMP 是一个混乱的系统。它是在 80 年代末开发的,当时没有好的替代方案,所以我想我们只能使用现有的系统。

SNMP 由 3 个部分组成:SNMP 管理系统、至少 1 个网络设备以及这些网络设备上的软件代理。例如,您可以使用 Naigos 或 MaxFocus 作为 SNMP 管理系统来查询网络上的设备,如打印机、交换机、路由器等。这些设备都运行由其制造商制造的小型软件组件。这些软件组件基本上根据设备的运行方式生成一堆 SNMP 数据。例如,打印机可能会生成有关其墨粉水平的数据,或者路由器可能会生成有关其当前支持多少个并发连接的数据。然后,SNMP 管理系统可以查询这些设备以获取此信息。

但实际上如何做到呢?早在 80 年代,一些标准组织就整合了 MIB 来帮助实现这一点。MIB 基本上是可以查询的 SNMP 属性的大型数据树。这些标准 MIB 涵盖了大量可查询的属性 - 从墨粉到网络设置 - 但您可以想象,随着新设备和新技术的出现,它们并不能涵盖所有内容。因此,制造商已经生产了特定于产品的 MIB 来帮助填补这些空白。

MIB 听起来很棒,但事实上它们似乎往往难以理解,而且写得不好。有时它们没有按照正确的规范编写,因此很难使用它们。话虽如此,利用 MIB 找出您可以在所选设备(路由器、打印机等)上查询哪些项目的一般过程如下:

  1. 获得免费的 MIB 浏览器软件。它们都很差劲,但我发现 Axence 的 NetTools Pro 或 ManageEngine 的 MIB 浏览器最不差劲。
  2. 大多数 MIB 浏览器都预装了“默认”MIB 文件。但是,如果您想知道可以在设备上查询哪些供应商特定项目,则必须从供应商处下载自定义 MIB 文件。(Sonicwall、HP 等)如果您的供应商不提供 MIB 文件,则有一些在线资源托管大量 MIB 文件。我认为有一个名为 MIB Depot 之类的东西...
  3. 下载自定义供应商特定 MIB 文件后,将其导入到 MIB 浏览器中。
  4. 现在,我们对您的 SNMP 设备执行所谓的“遍历”。为此,您需要输入设备的 IP 地址及其社区字符串。(社区字符串实际上只是用于身份验证的密码或共享密钥。SNMP 的创建者为什么决定将它们称为社区字符串,我实在无法理解......)我还应该提到,您需要将查询的设备设置为允许 SNMP 查询。这通常是通过设备 Web 界面完成的,通常这也是您设置社区字符串的地方。
  5. 将 MIB 浏览器连接到设备后,执行“walk”功能。每个 MIB 浏览器的工作方式都略有不同,因此您需要稍微尝试一下才能了解其 walk 功能的工作原理。但一般来说,它应该从您的设备返回一个 OID 列表。这些 ID 对应于 MIB 文件中的条目。通常,您可以双击或突出显示其中一个 OID,它会找到相应的 MIB 项,该项将告诉您该 OID 的用途,例如碳粉量、操作系统版本、网络连接等。然后,您可以将 OID 编号输入到 SNMP 管理系统中并开始监控该属性!

因此,经过我所有的研究,我发现 SNMP 至少在我看来是一个非常有缺陷和繁琐的系统。但从我读过的内容来看,至少一旦你配置好它,它就会变得可靠和快速。我希望这些信息能帮助那些刚刚进入 SNMP 世界的人!以下是我发现有用的进一步参考资料:

http://www.allthingsmax.com/2014/02/take-snmp-walk-creating-new-snmp-checks.html

更新:我将在此添加另一个提示。遍历设备 OID 值时,您可以检索两种不同类型的值:标量和表格。

表格用于需要为多个组件提供相同类型值的设备。例如,路由器可能有 9 个端口。每个端口都有不同的物理地址或 MAC 地址。这由 MIB 中的表格表示。

标量用于不需要表格布局的值。

重要部分:标量值总是附加 .0,而表格值则附加一个代表特定设备值的数字。例如,在路由器上,端口 1 可能附加 .1,端口 2 可能附加 .2,依此类推。然后,当您将 OID 输入 SNMP 管理系统时,需要确保包含最后一个数字字符。例如,ifPhysAddress = .1.3.6.1.2.1.2.2.1.6,但如果不附加表格值,它对您没有用。标量值也类似,总是需要附加 .0。一个像样的 MIB 浏览器应该在遍历设备时向您显示这些附加值。ManageEngine 的 MIB 浏览器在这方面做得很好。它的格式如下:

--标量值:

系统启动时间.0

系统联系人.0

系统名称.0

--表格值:

否PhysAddress.1

否PhysAddress.2

否PhysAddress.3

...

相关内容