网络

SNMP 网络管理与监控

本文介绍 SNMP 协议:它是什么、如何工作,以及它的架构组成 — 管理端(NMS)、代理、UDP 161 与 162 端口、MIB 管理信息库、陷阱(Trap)通知,以及 SNMP 团体字符串的作用与安全注意事项。

· 2 分钟阅读 · 难度 中级
  1. 什么是 SNMP?
  2. SNMP 如何工作?
  3. SNMP 的架构

什么是 SNMP?

SNMP 是「Simple Network Management Protocol」(简单网络管理协议)的缩写。它是一个应用层协议,属于互联网协议族(一组最常用的通信协议)。

SNMP 诞生于 20 世纪 80 年代,当时各类组织的网络在规模和复杂度上都在不断增长。如今,它是网络监控领域最被广泛接受的协议之一。下面简要说明 SNMP 的工作方式,以及它对网络专业人员的重要意义。

SNMP 由三个关键组件构成:被管理设备、代理,以及网络管理系统(NMS)。对任何负责服务器和网络设备(例如主机、路由器、交换机,乃至集线器)的人来说,SNMP 监控都很有用。例如,它可以让您关注网络和带宽的使用情况,并跟踪可用性和流量水平等重要问题。

SNMP 如何工作?

随着用户进行传输、浏览、下载等操作,流量整天都在您的网络上起伏流动。SNMP 与您的网络通信,以获取与这些网络设备活动相关的信息:例如某台路由器上发送和接收的字节数、数据包数和错误数,设备之间的连接速率,或者某台 Web 服务器收到的访问次数。

SNMP 的工作方式是向网络中「会说」SNMP 的设备发送称为协议数据单元(PDU)的消息。这些消息称为 SNMP Get-Requests。借助这些请求,网络管理员几乎可以跟踪他们所指定的任何数据值。SNMP 所跟踪的全部信息都可以提供给发出请求的设备。该设备可以显示或存储这些数据,具体取决于管理员的偏好。

SNMP 的架构

可被管理的设备包括路由器、交换机、Wifi、服务器(Windows 及其他)、台式机、笔记本电脑、打印机、不间断电源等,它们内置了代理软件,该软件需要被启用并配置,或者只需正确配置,才能接受管理端(NMS)的查询。

为了有效监控网络活动,SNMP 依赖于由以下要素构成的架构:

ree

管理端(NMS)

管理端组件就是安装在一台机器上的软件(这些软件组合起来即称为网络管理系统),它按照您指定的频率查询网络上的各个设备。

管理端拥有相应的身份凭据,可以访问代理所存储的信息(下一节会加以说明),然后把这些信息整理成便于网络工程师或管理员阅读的格式,以便监控或诊断故障与瓶颈。

有些 NMS 软件套件比另一些更为复杂,可以让您配置电子邮件或短信消息,在网络中出现故障设备时向您告警;而另一些则只是查询设备以获取较为基础的信息。

代理

SNMP 代理是随网络设备(路由器、交换机、服务器、wifi 等)一同提供的软件,启用并配置之后,它会替管理端承担全部繁重工作,把所在设备的全部数据汇集并存储到一个数据库(MIB)中。

该数据库经过妥善的结构化设计,使 Manager 软件能够方便地查询信息,甚至在发生错误时由代理主动向 Manager 发送信息。

在 SNMP 监控中,监控软件通常会向目标设备发送小型数据包,以便向它们索取各种信息。这继而会触发被监控设备向 SNMP 管理端返回响应数据包。

SNMP 端口号

上一节所说的管理端软件通过 UDP 161 端口按固定间隔查询各个代理。

稍后会看到的 SNMP 陷阱,则让代理能够通过 UDP 162 端口把系统和设备的信息发送给管理端。

虽然 UDP 是 SNMP 常用的协议,但也可以使用 TCP。

MIB

简而言之,MIB 文件就是一台 SNMP 管理端可以向代理提出的全部问题的集合。

代理按照 MIB 中的定义在本地采集并存储这些数据。因此,SNMP 管理端必须了解每一类代理的这些标准问题和私有问题。

如上文所述,代理维护着一个有组织的数据库,其中存放各项参数和其他信息。

NMS(网络管理系统)向某台设备的代理发起查询/请求,代理随后把数据库中经过组织的信息共享给 NMS,NMS 再把它们转换成告警、报表、图表等等。

代理之间共享的这个数据库称为管理信息库,即 MIB。

MIB 中包含一组由网络设备定义的数值,既有统计类的,也有控制类的。在很多情况下,各家网络设备厂商会通过私有 MIB 来定义对标准数值的扩展。

为了把 MIB 说得更简单,可以这样理解:MIB 文件就是管理端被允许向代理提出的全部问题的集合。

代理只是收集这些问题的答案,把它们存储在本地,并在收到请求时提供给 NMS。

一个说明 MIB 工作方式的简化例子:NMS 向网络设备提出一个问题,在这个例子中就是「问题 2 的答案是什么?」

被管理网络设备的代理随后给出问题 2 的答案。

SNMP 陷阱

当设备需要在未被查询的情况下就某个事件向网络管理软件发出告警时,就会使用「陷阱」。

陷阱保证了:如果设备上发生了某个需要被记录的事件,即使 NMS 事先没有发起查询,NMS 也能获得相关信息。

被管理的网络设备会内置带有预定义条件的陷阱 MIB。

关键在于,网络管理系统必须编译好这些 MIB,才能接收指定设备所发送的陷阱。

MIB 是用来标识一台设备某些特性或数值的数字,但如果网络管理系统没有网络设备在陷阱中发送的某个 MIB,就无从解读这个 MIB 是什么,也就不会记录该事件。

其好处在于,发生关键事件时,设备会自动向 SNMP 服务器监控软件发送消息,而无需事先被要求这样做。

SNMP 认证陷阱

当 SNMP 代理收到一个携带它无法识别的团体名的请求时,就会发送一个认证陷阱。

陷阱有助于了解是否有人侵入了您的系统,不过在今天,更好的做法是检测相关软件包并借此发现团体名。

SNMP 团体字符串

「SNMP 团体字符串」类似于一个用户标识或一个密码,用于访问一台 路由器 或其他设备的统计信息。

监控服务器在所有 SNMP 请求中都会带上团体字符串。

  • 如果团体字符串正确,设备就返回所请求的信息。
  • 如果团体字符串不正确,设备就直接拒绝该请求,不作应答。

注意:SNMP 团体字符串仅由支持 SNMPv1 和 SNMPv2c 协议的设备使用。SNMPv3 采用用户名/密码认证,并配合一个加密密钥。

按照惯例,大多数 SNMPv1-v2c 设备出厂时的只读团体字符串都设置为「 public 」。网络管理人员的通行做法是,在配置设备时把所有团体字符串改成自定义的值。