SNMP(简单网络管理协议)介绍

简介

作为系统管理员的重要工作之一是收集关于服务器和基础设施的准确信息。有许多工具和选项可用于收集和处理这种类型的信息。其中许多工具都是建立在一种称为SNMP的技术之上。

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

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

基本概念

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

SNMP协议有多个版本,许多网络硬件设备实现了某种形式的SNMP访问。最广泛使用的版本是SNMPv1,但在许多方面它是不安全的。它的流行主要源于其无处不在和长期存在。除非您有充分的理由不这样做,我们建议您使用提供更高级安全功能的SNMPv3。

一般来说,由SNMP进行配置文件的网络主要由包含SNMP 代理的设备组成。代理是一个可以收集有关硬件的信息,将其组织成预定义条目,并使用SNMP协议响应查询的程序。

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

SNMP管理器

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

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

在SNMP协议中定义的几乎所有命令(我们稍后将详细介绍这些)都是设计为由管理器组件发送。这些包括GetRequestGetNextRequestGetBulkRequestSetRequestInformRequestResponse。除此之外,管理器还被设计为响应TrapResponse消息。

SNMP代理

SNMP代理完成了大部分工作。它们负责收集有关本地系统的信息并将其存储在可以查询的格式中。更新名为“管理信息库”或MIB的数据库。

MIB是一个分层的、预定义的结构,用于存储可以查询或设置的信息。这些信息可以由已经使用正确凭据(即SNMP管理器)进行的良好形式的SNMP请求访问。

代理计算机配置了哪些管理器可以访问其信息。它还可以充当中间人,报告它可以连接到但未配置为SNMP流量的设备的信息。这为使组件在线并且可通过SNMP访问提供了很大的灵活性。

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

理解管理信息库

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

MIB结构最好理解为自上而下的分层树。每个分支都带有一个标识号(从1开始)和一个唯一的标识字符串,用于该层次结构的标识。您可以互换使用字符串和数字。

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

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

我们将讨论的标准分支都将位于相同的父分支结构下。该分支定义符合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:管理器向代理发送 Get 消息,以请求特定 OID 的值。这个请求将通过 Response 消息回复给管理器,并携带数据。
  • GetNext:GetNext 消息允许管理器请求 MIB 中的下一个顺序对象。这是一种可以遍历 MIB 结构而不必担心要查询哪些 OID 的方法。
  • Set:管理器向代理发送 Set 消息,以更改代理上变量的值。这可用于控制配置信息或以其他方式修改远程主机的状态。这是协议定义的唯一写操作。
  • GetBulk:这个管理器到代理的请求的功能就好像进行了多个 GetNext 请求。回复给管理器的数据将尽可能多(在请求设置的约束内),以适应数据包的大小。
  • Response:代理发送的这个消息用于将任何请求的信息发送回管理器。它既作为请求的数据的传输,也作为对请求接收的确认。如果无法返回请求的数据,响应将包含可以设置进一步信息的错误字段。对于上述任何请求以及 Inform 消息,都必须返回一个响应消息。
  • Trap:Trap 消息通常由代理发送给管理器。Trap 是异步通知,即接收到它们的管理器是未经请求的。它们主要用于代理通知管理器其受管设备上正在发生的事件。
  • Inform:为了确认接收到一个 Trap,管理器向代理发送 Inform 消息。如果代理没有收到此消息,它可能会继续重新发送 Trap 消息。

有了这七种数据单元类型,SNMP 能够查询并发送关于您网络设备的信息。

协议版本

自首次引入以来,SNMP 协议经历了许多变化。最初的规范是在 1988 年的 RFC 1065、1066 和 1067 中制定的。由于它已经存在了很长时间,因此仍然得到广泛支持。然而,该版本存在许多安全问题,包括以明文进行身份验证,因此在未受保护的网络上使用时,其使用是极不鼓励的。

协议的第二个版本工作始于 1993 年,并对早期标准进行了一些重大改进。这个版本包括一个新的“基于 party”的安全模型,旨在解决先前版本固有的安全问题。然而,这个新模型并不是很受欢迎,因为它难以理解和实现。

因此,版本 2 的一些“分支”被创建,每个分支保留了版本 2 的大部分改进,但替换了安全模型。在 SNMPv2c 中,重新引入了基于社区的认证,这是 v1 中使用的相同模型。这是 v2 协议中最受欢迎的版本。另一个实现称为 SNMPv2u,使用基于用户的安全性,尽管这从未很受欢迎。这允许针对每个用户进行身份验证设置。

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

  • NoAuthNoPriv:使用此级别连接的用户没有进行身份验证,也没有消息的隐私。
  • AuthNoPriv:使用此模型的连接必须进行身份验证,但消息是未加密的。
  • AuthPriv:需要身份验证并且消息是加密的。

除了身份验证外,还实施了访问控制机制,以提供对用户可以访问哪些分支的细粒度控制。版本 3 还具有利用传输协议(如 SSH 或 TLS)提供的安全性的能力。

结论

现在您对协议的运作方式有了很好的了解,您已经具备了在自己的基础设施中实施 SNMP 所需的基础。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# Avalonia 伪类 Pseudo Classes 改变样式

在Avalonia UI框架中,伪类是一种选择器,它们用于在XAML样式中更改控件的视觉状态,而不更改其逻辑状态。伪类经常用于描述控件的特定状态,如激活、禁用、焦点等,并且可以根据这些状态应用不同的样式规则。 使用伪类时&a…

学习数据结构和算法的第7天

线性表 **线性表(linear list):**是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直…

FAST角点检测算法

FAST(Features from Accelerated Segment Test)角点检测算法是一种快速且高效的角点检测方法。它通过检测每个像素周围的连续像素集合,确定是否为角点。以下是 FAST 角点检测算法的基本流程: FAST 角点检测算法的基本过程主要包括…

2024年华为OD机试真题-测试用例执行计划-Python-OD统一考试(C卷)

题目描述: 某个产品当前迭代周期内有N个特性( F1,F2,.......FN)需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用例(T1,T2......,TM ),每个用例对应了一个覆盖特性的集合,测试用例使用其ID作为下标进行标识,测试用例…

Dubbo集成Zookeeper embbed模式

为了简化应用支持服务方便的分合,使用Zookeeper embbed模式。集成Zookeeper比较容易,使用starter或自己写代码都可以。但是由于集成了Dubbo,每次启动时都会发现zookeeper没有启动就开始报错退出,但是确是已经集成了。 于是只能翻…

精读《Web Components 的困境》

本期精读的文章是:The broken promise of Web Components 以及对这篇文章的回应: Regarding the broken promise of Web Components 1 引言 我为什么要选这篇文章呢? 就在前几天的 Google I/O 2017 上, Polymer 正式发布了 Polymer 2.0 版本. 来看…

HTTP基本概念-HTTP 是什么?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 是什么? HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。 能否详细解释「超文本传输协议」? HTTP 的名字「超文本协议传输」,它可以拆成三个部分: 超文本传输…

pycharm控制STM32F103ZET6拍照并上位机接收显示(OV7670、照相机、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 三、资源获取 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑,或者其他方法)上传图片数据至上位机 2,串口2(波特…

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图(程序在计算机的阶段) 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点:首先类只会加载一次,得到的class的对象,也只有一…

JDK 动态代理

Java 9 为何要将 String 的底层实现由 char[] 改成了 byte[] Java 9将String底层实现从char[]改成byte[]的原因主要有以下几点: 节省内存空间:在Java 9之前,String的底层实现使用char[]来存储字符数据。每个char占用2个字节(16位…

【算法训练营】等式,道路升级(c++,python实现)

等式 问题描述 有n个变量和m个“相等”或“不相等”的约束条件,请你判定是否存在一种赋值方案满足所有m个约束条件。 输入格式 第一行一个整数T,表示数据组数。 接下来会有T组数据,对于每组数据: 第一行是两个整数n,m,…

Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试

1、采用程序配置关闭“内核模块验证” 默认配置文件“stm32mp1_atk_defconfig”路径为“arch/arm/configs”; 使用VSCode打开默认配置文件“stm32mp1_atk_defconfg”,然后将下面的4条语句屏蔽掉,如下: CONFIG_MODULE_SIGy CONFIG_MODULE_…

Json笔记

语法规则 数组(Arrary):方括号[]对象(Object):花括号{}名称/值对(name/value):组合成数组和对象,之间用冒号隔开 名称置于双引号之中…

「数据结构」线性表

定义和基本操作 定义:相同数据类型的 n ( n ≥ 0 ) n(n \ge 0) n(n≥0)个数据元素的有限序列,其中n为表长,当n0时线性表是一个空表一般表示: L ( a 1 , a 2 , … … , a i , a i 1 , a n ) L(a_1,a_2,……,a_i,a_{i1},a_n) L(a…

【C语言】实现双向链表

目录 (一)头文件 (二) 功能实现 (1)初始化 (2)打印链表 (3) 头插与头删 (4)尾插与尾删 (5)指定位置之后…

STM32 + ESP8266,连接阿里云 上报/订阅数据

(文章正在编辑中,一点点地截图操作过程,估计要拖拉两三天) 一、烧录MQTT固件 ESP8266出厂时,默认是AT固件。连接阿里云,需要使用MQTT固件。 1、独立EPS8266模块的烧录方法 2、魔女开发板,板载…

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序

遇到 vue-cli-service 不是内部或外部命令,也不是可运行的程序或批处理文件。 的错误时,通常意味着Vue CLI没有被正确安装或配置在项目中。这可能是因为node_modules目录缺失了必要的包,或者局部安装的Vue CLI没有被正确设置到系统的PATH环境…

洛谷: P1308 [NOIP2011 普及组] 统计单词数

前言: 这道题没理解清题目表达意思,我开始想的是用map来记录个数,然后一个变量记录一开始出现的单词位置,不挺简单的吗,然后....就AC了2个..从错误提示能看到个数没啥问题,但是第一个单词位置不对,看了新样…

二级C语言笔试10

(总分101,考试时间90分钟) 一、选择题 1. 设有如下关系表: A) TR∩S B) TR∪S C) TRS D) TR/S 2. 在一棵二叉树中,叶子结点共有30个,度为1的结点共有40个,则该二叉树中的总结点数共有( )个。 A) 89 …

【51单片机】AT24C02(江科大、爱上半导体)

一、AT24C02 1.AT24C02介绍 AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息 存储介质:E2PROM 通讯接口:12C总线 容量:256字节 2.引脚即应用电路 本开发板AT24C02原理图 12C地址全接地,即全为0 WE接地,没有写使能 SCL接P21 S…