概论SNMP(简单网络管理协议)

介绍

作为系统管理员的很大一部分是收集有关您的服务器和基础架构的准确信息。 有许多工具和选项用于收集和处理此类信息。 他们中许多人都在一个名为SNMP技术构建。

SNMP代表简单的网络管理协议。 这是服务器可以共享关于其当前状态的信息的方式,并且还是管理员可以通过其修改预定义值的通道。 虽然协议本身很简单,但是实现SNMP的程序的结构可能非常复杂。

在本指南中,我们将向您介绍SNMP协议的基础知识。 我们将讨论其用途,协议在网络中通常使用的方式,协议版本的差异等。

基本概念

SNMP是网络的应用层上实现的协议(点击这里了解网络层 )。 该协议被创建为以一致的方式从非常不同的系统收集信息的方式。 虽然它可以用于不同系统的系统,但是查询信息的方法和相关信息的路径是标准化的。

有多个版本的SNMP协议,并且许多网络硬件设备实现某种形式的SNMP访问。 最广泛使用的版本是SNMPv1,但它在许多方面不安全。 它的流行主要来源于它的无处不在和长时间在野外。 除非你有很强的理由不推荐,我们建议您使用SNMPv3,它提供了更高级的安全功能。

一般情况下,通过SNMP被分析的网络将主要由包含SNMP 代理的设备。 代理程序是一种程序,可以收集有关一块硬件的信息,将其组织到预定义的条目中,并使用SNMP协议响应查询。

这种模式的,查询信息代理组件称为SNMP 管理器 这些机器通常具有关于其网络中所有启用SNMP的设备的数据,并且可以发出请求以收集信息和设置某些属性。

SNMP管理器

SNMP管理器是配置为轮询SNMP代理以获取信息的计算机。 管理组件只讨论其核心功能时,实际上比客户端配置复杂得多,因为管理组件只是请求数据。

管理器可以是可以使用正确的凭据向SNMP代理发送查询请求的任何计算机。 有时,这是作为监视套件的一部分实现的,而其他时候,这是管理员使用一些简单的实用程序来制作快速请求。

几乎所有在SNMP协议定义的命令的(我们将在这些在后面详细)被设计成由一个管理器组件来发送 这些措施包括GetRequestGetNextRequestGetBulkRequestSetRequestInformRequestResponse 除了这些,一个管理器也被设计成响应 Trap ,和Response消息。

SNMP代理

SNMP代理做大部分工作。 他们负责收集有关本地系统信息并将它们存储在一个格式可queried.updating一个数据库被称为“管理信息库”或MIB。

MIB是分层的,预定义的结构,其存储可以查询或设置的信息。 这可用于源自已使用正确凭据进行身份验证的主机(SNMP管理器)的格式正确的SNMP请求。

代理计算机配置哪些管理器应该有权访问其信息。 它还可以充当中介,以报告可以连接到的设备上的信息,但未配置SNMP流量。 这为您的组件在线和SNMP访问提供了很多灵活性。

SNMP代理响应协议定义的大多数命令。 这些措施包括GetRequestGetNextRequestGetBulkRequestSetRequestInformRequest 此外,代理设计为发送Trap消息。

了解管理信息库

SNMP系统了解的最困难的部分可能是MIB,或者管理信息库。 MIB是遵循管理器和代理遵守的标准的数据库。 它是一个分层结构,在许多领域,是全球标准化的,但也足够灵活,允许供应商特定的添加。

MIB结构被最好地理解为自顶向下的层次树。 分叉的每个分支都标记有标识号(以1开头)和对于该层级的该级别唯一的标识字符串。 您可以互换使用字符串和数字。

要引用树的特定节点,必须跟踪从树的未命名根到相关节点的路径。 其父ID(数字或字符串)的谱系串在一起,从最一般的开始,形成地址。 层次结构中的每个结点都由此符号中的点表示,因此地址最终是一系列ID字符串或用点分隔的数字。 这整个地址被称为一个对象标识符或OID。

将SNMP代理嵌入其设备中的硬件供应商有时实现具有自己的字段和数据点的定制分支。 然而,存在被良好定义并且可以由任何设备使用的标准MIB分支。

我们将讨论的标准分支都将在同一父分支结构下。 此分支定义遵守MIB-2规范的信息,MIB-2规范是兼容设备的修订标准。

此分支的基本路径是:

1.3.6.1.2.1

这也可以表示为以下字符串:

iso.org.dod.internet.mgmt.mib-2

本节1.3.6.1iso.org.dod.internet是定义互联网资源的OID。 2mgmt在我们的基本路径下面是一个管理的子类别。 1mib-2下定义MIB-2规范。

这是一个与MIB树熟悉自己巨大的资源 这个特定的页面表示在我们一直在谈论的连接节点。 您可以通过分别查看“上级”和“子公司”参考来检查树的上下。

另一个类似的工具是一个SNMP对象导航器由思科提供的。 这可以用于向下钻取层次结构以查找所需的信息。 一个类似的树被SolarWinds的提供。

基本上,如果我们想查询我们的信息设备,大部分的路径将与开始1.3.6.1.2.1 您可以浏览树接口,以了解可以查询和设置哪种类型的信息。

SNMP协议命令

SNMP已经被如此大量采用的原因之一是可用命令的简单性。 有很少的操作要实现或记住,但它们足够灵活,以满足协议的实用程序要求。

以下PDU或协议数据单元描述协议允许的确切消息类型:

  • 得到 :一个GET消息是由管理器发送到代理请求特定OID的值。 此请求通过响应消息进行应答,该消息将与数据一起发送回管理器。
  • 的GetNext:一个的GetNext消息允许管理者请求MIB中的下一个顺序的对象。 这是一种可以遍历MIB结构而不必担心要查询的OID的方法。
  • 设置 :一组消息是由一名经理,以改变通过代理变量保持的值发送到代理。 这可以用于控制配置信息或以其他方式修改远程主机的状态。 这是协议定义的唯一写操作。
  • GETBULK:这个经理代理请求的功能,如果多的GetNext请求进行的。 回复到管理器将包含尽可能多的数据(在请求所设置的约束内),这是数据包允许的。
  • 响应 :此消息,由代理发送的,用于任何请求的信息发回给经理。 它用作所请求的数据的传输,以及对请求的接收的确认。 如果无法返回请求的数据,则响应包含可以使用更多信息设置的错误字段。 任何上述请求都必须返回响应消息,以及通知消息。
  • 陷阱 :陷阱消息一般是通过代理发送到经理。 陷阱是异步通知,因为它们是由接收它们的管理器主动提供的。 它们主要由代理程序用于通知管理员其托管设备上发生的事件。
  • 通知 :确认收到一个陷阱,管理者发送通知消息给代理。 如果代理没有收到此消息,它可以继续重新发送陷阱消息。

使用这七种数据单元类型,SNMP可以查询和发送有关联网设备的信息。

协议版本

SNMP协议自从第一次引入以来经历了许多变化。 初始规范是在1988年由RFC 1065,1066和1067制定的。通过简单的事实,它已经有这么久,这个版本仍然被广泛支持。 但是,协议存在许多安全问题,包括以纯文本进行身份验证,因此非常不鼓励使用它,尤其是在不受保护的网络上使用时。

该议定书第2版的工作于1993年开始,对早期的标准提供了一些实质性的改进。 包括在这个版本是一个新的“基于方的”安全模型,旨在解决与以前的修订固有的安全问题。 然而,新模型不是很受欢迎,因为它很难理解和实现。

因此,创建了版本2的几个“副本”,每个都保留了大部分的版本2改进,但是换出了安全模型。 在SNMPv2c中,重新引入了基于社区的身份验证,v1中使用的相同模型。 这是v2协议最流行的版本。 另一个实现,称为SNMPv2u,使用基于用户的安全,虽然这从来没有非常受欢迎。 这允许每用户认证设置。

在1998年,SNMP协议的第三个(和当前版本)作为规范提议输入。 从用户的角度来看,最相关的变化是采用基于用户的安全系统。 它允许您将用户的身份验证要求设置为以下模型之一:

  • NoAuthNoPriv:这个级别的用户连接有没有适当的身份验证和没有他们发送和接收消息的隐私。
  • 认证AuthNoPriv:使用这种模式必须验证连接,但消息没有任何加密发送。
  • AuthPriv所 :需要进行身份验证和消息进行加密。

除了认证之外,还实现了访问控制机制以提供对用户可以访问的哪些分支的粒度控制。 版本3还能够利用由传输协议(例如SSH或TLS)提供的安全性。

结论

现在您已经了解协议如何操作,您需要在您自己的基础架构中实现SNMP的基础。

接下来的指南中,我们将讨论如何安装和配置必要利用SNMP在系统上的组件。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏