snmp报文分析
- 格式:doc
- 大小:141.00 KB
- 文档页数:11
实验1网络配置与网络管理软件SNMPc的使用一. 实验项目:网络实验环境的搭建,网络管理软件的安装、配置和基本使用二. 实验内容:1. 构建简单实验网络,并启用各网络设备的SNMP功能;2. 网络管理软件SNMPc的安装与配置;3. 学习SNMPc的主要管理功能,掌握软件系统的基本操作。
三. 实验目的:1. 使学生掌握典型网络管理软件SNMPc的安装、配置和基本使用技能。
2. 掌握网络设备管理的基本参数配置。
3. 通过实际操作,加深对课堂上SNMP协议理论知识的理解。
四. 实验设备及环境:1. Huawei 3Com Quidway R2621路由器:1台;2. Cisco 2950网络交换机:1台;3. 计算机:2台;4. 直通双绞线2根,交叉双绞线1根,串口配置线1根;5. 网络管理软件:SNMPc7。
五. 学生分组情况:每组6人。
六. 实验步骤及要求:1. 构建实验的网络环境参照下图构建实验的网络环境。
注意:同层次设备用交叉线相连(但现在很多设备带自动翻转功能,直连也可),如交换机与交换机,计算机与计算机,计算机与路由器(可看作专用计算机);而路由器和交换机、交换机和计算机用直通线相连。
交换机以太网口1:以太网口0: IP 地址)192.0.0.3/24网关:192.0.0.1图4 实验网络拓扑结构 2. 配置各设备的网络参数并启用其网管功能:为了配置路由器或交换机,用串口线将计算机的COM 串行接口与路由器或交换机的Console 控制口相连,然后在计算机中运行超级终端进行参数设置(端口设置需还原为默认值)。
(1) 配置Cisco 2950交换机1、配置IP 地址两层交换机在数据链路层转发数据时是不需要IP 地址的,但为了使交换机要能够被网管,也可给它标识一个管理IP 地址。
默认情况下CISCO 交换机的VLAN 1为管理VLAN ,为该管理VLAN 配上IP 地址,交换机就可以被网管了。
计算机网络管理课程设计1.引言简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。
SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。
它具有简单性,易于扩展性的特点。
SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。
SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
名字说明MIB 管理信息库SMI 管理信息的结构和标识SNMP 简单网络管理协议从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。
Snmp发展到现在共有三个版本,本课程设计是基于snmpv1版本。
2.设计任务及思想2.1任务:设计一个Manager。
Manager可以向华为网络设备发送get和set报文,并获得有效操作结果,实现版本为SNMPv1.开发工具:VC++(Win32)内容: Socket网络通信、 BER编码、BER解码、SNMP报文构造、SNMP报文解析、用户输入/输出。
2.2思想:根据snmp协议,分析抓包软件抓出的结果。
Manager在进行操作时,先对要发送的报文进行构造,然后对要发送的报文各数据类型依据asn.1进行编码再发送。
agent接收到报文后,进行报文解析,再解码。
看manager的要求是什么,然后回应一个报文,即response 报文,manager即对回应的报文进行解析解码,整个过程由socket通信完成,snmp报文封装在udp中发送。
3设计过程2.1 BER编码和解码Ber编码是整个设计过程中的极为重要的部分,一个报文有很多段组成,每段的数据类型都不尽相同。
SNMP五种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
∙get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)∙get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)∙set-request操作:设置代理进程的一个或多个参数值(网管系统发送)∙get-response操作:返回的一个或多个参数值。
这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)∙trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送)前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。
下图描述了SNMP的这5种报文操作。
请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
SNMP的5种报文操作SNMP协议数据单元格式解析下图封装成UDP数据报的5种操作的SNMP报文格式。
可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。
SNMP报文格式1. 公共SNMP首部1.1 版本写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
1.2 公共体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
1.3 PDU类型根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。
表1 PDU类型2. get/set首部2.1 请求标识符(request ID)这是由管理进程设置的一个整数值。
代理进程在发送get-response报文时也要返回此请求标识符。
管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。
一、目的(本次实验所涉及并要求掌握的知识点)1)本实验的主要目的是熟练掌握操作系统自带的基本网络测试工具,包括状态监视、流量监视和路由监视。
2)学习并掌握snmputil命令的格式及基本使用。
二、实验内容与设计思想(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图等)实验内容:1、UNIX和Windows NT(2000)环境下网络状态监视工具的使用,包括Ipconfig、ping、nslookup、dig、host;2、UNIX和Windows NT(2000)环境下网络流量监视工具的使用,包括ping、bing、etherfind、snoop、tcpdump、getethers、iptrace;3、UNIX和Windows NT(2000)环境下网络路由监视工具的使用,包括netstat、arp/rarp、traceroute/tracert。
三、实验使用环境(本次实验所使用的平台和相关软件)Win 7平台、SNMP组件、snmputil命令四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)实验步骤1、在Windows NT(2000)环境下,进入命令行运行模式;2、依次执行ping、tracert、netstat等命令,查看显示信息并理解其作用和含义。
(可用help命令查看全部命令符,如ping /?)3、在控制面板->添加/删除程序中进行网络和监视选择snmp组件安装2、启动SNMP服务:在服务中启动SNMP Service、设置SNMP服务属性安装snmp组件。
具体:在本地主机上启动SNMP服务并配置共同体。
控制面板->管理工具->服务,找到SNMP service和SNMP trap service(若列表中不存在此服务,则用系统盘安装)并将其启动(右键列表中或双击打开的对话框中);在SNMP service属性对话框中配置共同体(默认为public);3、安装snmputil命令。
SNMP协议详解简单⽹络管理协议(SNMP)是TCP/IP协议簇的⼀个应⽤层协议。
在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为⼀个短期的⽹络管理解决⽅案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。
现在,已经有了SNMPv3版本。
⼀套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报⽂协议。
(1)管理信息库MIB:任何⼀个被管理的资源都表⽰成⼀个对象,称为被管理的对象。
MIB是被管理对象的集合。
它定义了被管理对象的⼀系列属性:对象的名称、对象的访问权限和对象的数据类型等。
每个SNMP设备(Agent)都有⾃⼰的MIB。
MIB也可以看作是NMS(⽹管系统)和Agent之间的沟通桥梁。
它们之间的关系如图1所⽰。
图1 NMS Agent和MIB的关系MIB⽂件中的变量使⽤的名字取⾃ISO和ITU管理的对象标识符(object identifier)名字空间。
它是⼀种分级树的结构。
如图2所⽰,第⼀级有三个节点:ccitt、iso、iso-ccitt。
低级的对象ID分别由相关组织分配。
⼀个特定对象的标识符可通过由根到该对象的路径获得。
⼀般⽹络设备取iso节点下的对象内容。
如名字空间ip结点下⼀个名字为ipInReceives的MIB变量被指派数字值3,因⽽该变量的名字为:.dod.internet.mgmt.mib.ip.ipInReceives相应的数字表⽰(对象标识符OID,唯⼀标识⼀个MIB对象)为:1.3.6.1.2.1.4.3 图2 MIB树结构当⽹络管理协议在报⽂中使⽤MIB变量时,每个变量名后还要加⼀个后缀,以作为该变量的⼀个实例。
如ipInReceives的实例数字表⽰为:1.3.6.1.2.1.4.3.0.需要注意的是,MIB中的管理对象的OID有些需要动态确定,如IP路由表,为了指明地址202.120.86.71的下⼀站路由(next hop),我们可以引⽤这样的实例:.dod.internet.mgmt.mib.ip. ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相应的数字表⽰为:1.3.6.1.2.1.4.21.1.7.202.120.86.71对于这种动态对象标识的实例,由于⽆法转换为预先指定的Readkey名称,与飞邻的产品架构冲突(需要动态⽣成可变Readkey),暂不考虑⽀持。
SNMP介绍及命令
Simple Network Management Protocol(SNMP)是一种网络管理协议,它用于监视和管理网络中的网络设备。
它定义了一组标准的管理报文,这些报文以UDP协议发送,它们按一定顺序传输,从而让管理者轻松完成管理任务。
SNMP可以让管理人员更好地控制和操作网络中的设备。
它包括一个叫做Agent的进程,它用来收集网络设备的信息,这些信息被存储在一个叫做Mib的技术中,之后被发送给一个叫做Manager的进程。
Manager可以通过发送一些命令,来获取或者设置设备的信息。
SNMP的根本任务是收集网络中设备的信息,并将其发送给Manager,Manager根据这些信息来提出和处理各种网络管理任务。
下面给出的是SNMP最常用的几个命令:
get:用于获取远程设备的信息。
set:用于设置远程设备的信息。
walk:用于获取远程设备中的所有信息。
trap:用于发送信息给远程Manager,表明一些设备的状态发生了改变。
create:用于创建一个新的设备实例,并将其加入到SNMP网络中。
delete:用于删除一个设备实例,从而从SNMP网络中消失。
SNMP的优点
1.简单易用:SNMP是一种简单易用的网络管理协议,它使用简单的指令即可实现网络管理的工作。
2.高效灵活:SNMP是一种高度可靠和灵活的网络管理协议。
SNMP报文分析一、SNMP协议环境的配置1、主机SNMP协议配置操作系统:Windows10虚拟MAC地址:00-50-56-C0-00-08IP地址:192.168.40.11)安装SNMP协议依次打开控制面板程序程序和功能启用或关闭Windows功能,找到“简单的网络管理协议(SNMP)”并将其勾选,然后确定就可以安装了。
2)配置并打开SNMP Service服务右键计算机,依次打开管理服务和应用程序服务,在右侧找到SNMP Service 服务,双击开启服务,并在安全选项卡中进行如下配置:2、目标机SNMP协议配置操作系统:虚拟机Windows7MAC地址:00-0C-29-17-A1-58IP地址:192.168.40.130虚拟机Windows7安装SNMP方法,启用SNMP服务和主机Windows10一样,按照上边的步骤即可。
二、SNMP协议报文的抓取1、下载并安装snmputil.exe和wireshark由于wireshark是之前就已经下载并安装好的,所以这里了就不做截图。
2、发送并抓取SNMP数据包1)首先打开wireshark,由于这里用的是虚拟机,所以就要找到虚拟机所使用的网卡,双击便开始抓包了。
2)利用snmputil工具发送snmp数据包,在命令提示符中找到snmputil,然后运行如下的命令。
关于snmputil.exe工具的使用:I.snmputil命令解释:snmputil 是程序名get 可以理解为获取一个信息getnext 可以理解为获取下一个信息walk 是所有数据库子树/子目录的信息agent 具体某台机器拉community 就是“community strings”“查询密码”oid 就是物件识别代码(Object Identifier)可以把oid理解为MIB管理信息库中各种信息分类存放树资源的一个数字标识。
II.snmputil的命令规则是:snmputil [get|getnext|walk] agent community oid [oid ...][get|getnext|walk]为消息类型,我们此次进行的操作是getagent指Snmp代理即你想进行操作的网络设备的ip或名称,即192.168.40.130 community:分区域,即密码,我们这里是Publicoid:想要操作的MIB数据对象号,设备名称对应的MIB对象号是.1.3.6.1.2.1.1.5.0 打开命令行窗口,进入snmputil所在路径,键入snmputil get 192.168.40.130 Public .1.3.6.1.2.1.1.5.0,如果参数都正确,控制台就会显示出机器名。
SNMPTRAP告警设置说明
SNMP TRAP告警设置说明
一、前提
本文所描述的snmp trap告警设置说明,针对2.05sp1,其他版本BTIM不适用;设置SNMP TRAP告警前用户需要确认网管机上自带的trap服务是否停用,否则会与BTIM的trap进程冲突,导致无法告警
二、设置步骤
1.SNMP TRAP告警设置比较复杂,涉及到trap报文的多个字段,所以首先要捕捉trap
信息;使用BTIM后台自带的trap程序捕捉,如下图所示,首先打开该trap程序,进入监听态
2.登陆路由器,触发trap报文至网管机,步骤1中打开trap 监听程序,捕捉到trap
信息,如下图所示
3.关闭trap 监听程序
4.打上补丁BTIM2.5-SPT111-JIRA13018-20110609.rar
5.启动BTIM程序
6.进入trap告警设置页面,设置如下图所示
7.保存告警规则
8.再次触发trap
9.告警触发,如下图所示
注意:以上仅仅是trap告警中linkdown类型trap告警的设置示意,各种trap类型,不同厂商的trap告警设置均有所不同,最好在专家指导下进行捕捉设置。
计算机网络管理实验报告作者: 孙玉虎学号:914106840229学院(系):计算机科学与工程学院专业: 网络工程题目: SNMP报文和MIB指导教师陆一飞2016年 12 月目录第一部分:SNMP报文的抓取与分析 (3)1.实验目的 (3)2.实验环境 (3)3.实验内容 (3)4.实验思路 (4)5.实验具体过程 (4)准备工作 (4)报文抓取 (8)报文分析 (10)第二部分:MIB的了解 (13)1.实验目的 (13)2.实验环境 (13)3.实验内容 (13)4.实验思路 (14)5.实验具体过程 (14)准备工作 (14)查看MIB组成结构 (14)了解MIB中变量、成员 (16)MIB的基本操作(GET) (17)第三部分:实验总结与体会 (18)实验出错的地方和解决方案 (18)实验总结 (19)第一部分:SNMP报文的抓取与分析1. 实验目的●熟悉SNMP报文格式●熟悉SNMP的基本操作2. 实验环境●系统环境两台机器均为windows 10系统●网络拓扑两台机器通过网线直连●实验工具Snmputil 和wireshark3. 实验内容●SNMP报文(get-next-request)格式抓取●SNMP报文(get-next-request)分析4. 实验思路●SNMP环境的配置一、在两台电脑上安装SNMP二、在两台电脑上配置SNMP三、测试SNMP●SNMP报文的抓取一、在一台电脑上发送SNMP报文二、在另外一台电脑上使用wireshark工具获取●SNMP报文的分析一、在Wireshark上提取SNMP报文二、对SNMP报文进行分析5. 实验具体过程准备工作一、在主机1上安装软件Wireshark,在主机2上安装软件snmputil,并关闭两台机器的防火墙二、在两台电脑上安装SNMP功能打开启动或关闭Windows功能,选择简单网络管理协议工具,点击确定。
安装过程中需要使用snmp的安装包。
SNMP五种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)set-request操作:设置代理进程的一个或多个参数值(网管系统发送)get-response操作:返回的一个或多个参数值。
这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送) 前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。
下图描述了SNMP的这5种报文操作。
请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
SNMP协议数据单元格式解析一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部或trap首部、变量绑定。
下图是封装成UDP数据报文的5种操作的SNMP报文格式。
公共SNMP首部版本写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
公共体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
PDU类型根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。
PDU类型get/set首部请求标识符(request ID)这是由管理进程设置的一个整数值。
代理进程在发送get-response报文时也要返回此请求标识符。
管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。
设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。
竭诚为您提供优质文档/双击可除snmp协议涉及的报文种类篇一:snmp报文分析snmp报文分析一、配置snmp协议的使用环境1、主机windows10的配置安装snmp协议配置并打开snmpservice服务2、目标机windowsxp的配置配置过程和windows10下类似,此处不再赘述目标机的ip地址为192.168.72.129目标机的计算机名为二、利用wireshark抓取snmp协议包1、下载安装snmputil.exe和wireshack2、利用snmputil工具发送snmp数据包snmputil命令规则:[get|getnext|walk]为消息类型,我们此次进行的操作是getagent指snmp代理即你想进行操作的网络设备的ip或名称,即192.168.10.191community:分区域,即密码,默认是publicoid:想要操作的mib数据对象号示例:snmputilwalk对方ippublic.1.3.6.1.2.1.1.5.0列出计算机名snmputilwalk对方ippublic.1.3.6.1.2.1.25.4.2.1.2列出系统进程snmputilwalk对方ippublic.1.3.6.1.4.1.77.1.2.25.1.1列系统用户列表snmputilget对方ippublic.1.3.6.1.4.1.77.1.4.1.0列出域名snmputilwalk对方ippublic.1.3.6.1.2.1.25.6.3.1.2列出安装的软件snmputilwalk对方ippublic.1.3.6.1.2.1.1列出系统信息3、同时在wireshack中抓包三、报文分析选取no.27报文进行分析1、帧头000c298cb0d0005056c000080800000c298cb0d0目的mac005056c00008源mac:0800协议类型,为ip数据报2、ip报头4500004469b900008011bf1cc0a84801c0a8488145ip协议版本4,报头长度20bytes000044总长度68(0x44)69b9确认号:270650000标记字段0x00无偏移字段80存活时间12811报文协议updbf1c报头确认号48924c0a84801源ip地址192.168.72.1c0a84881目标ip地址192.168.72.1293、udp报头f98000a10030be5cf980源端口6387200a1目标端口1610030长度48be5c校验和48732篇二:snmp报文抓取及分析snmp报文获取与分析班级:网络工程12-1班学号:08123536姓名:赵怀庆snmp报文抓取及分析关于本次snmp报文抓取及分析工作,我大致上分为三个步骤进行:准备工作;报文抓取及报文分析。
SNMP报文抓取及分析SNMP(Simple Network Management Protocol)是一种用于网络管理的协议。
它允许网络管理员通过发送和接收SNMP报文来监控和管理网络设备。
SNMP报文是在网络中传输的数据包,包含了有关网络设备和系统的信息。
在本篇文章中,我们将探讨如何抓取和分析SNMP报文。
一、SNMP报文抓取在抓取SNMP报文之前,我们需要准备一个用于抓取报文的工具。
Wireshark是一个强大的网络抓包工具,它支持抓取各种协议的报文,包括SNMP。
以下是在Wireshark中抓取SNMP报文的步骤:1. 首先,打开Wireshark,并选择网络接口以便开始抓取报文。
2. 在Wireshark的过滤器框中输入“snmp”,然后点击“Apply”按钮。
3. Wireshark将开始抓取符合过滤器条件的SNMP报文。
你可以观察到抓取到的报文以及它们的详细信息,如源IP地址、目标IP地址、SNMP版本、报文类型等。
二、SNMP报文分析一旦我们抓取到SNMP报文,我们就可以对其进行分析,以获得有关网络设备和系统的信息。
下面是一些常见的SNMP报文分析技巧:1.首先,我们需要查看SNMP报文的版本号。
SNMP有三个主要的版本:SNMPv1、SNMPv2和SNMPv3、通过查看报文中的版本号,我们可以确定所使用的SNMP版本。
2. 接下来,我们可以查看SNMP报文的类型。
SNMP报文有五种类型:GetRequest(请求数据)、GetNextRequest(请求下一条数据)、GetResponse(响应数据)、SetRequest(设置数据)和Trap(陷阱)。
通过了解报文类型,我们可以了解到SNMP报文的目的。
3. 然后,我们可以查看SNMP报文的OID(Object Identifier)。
OID是SNMP管理信息库中的唯一标识符,用于标识特定的网络设备或系统。
通过查看OID,我们可以确定报文所涉及的对象类型。
SNMP报⽂抓取与分析(⼀)SNMP报⽂抓取与分析(⼀)1、抓取SNMP报⽂SNMP报⽂的形式⼤致如下图所⽰我们这⾥使⽤netcat这个⼯具来抓取snmp的PDU(协议数据单元)。
(因为我们并不需要前⾯的IP和UDP⾸部)关于netcat的⼀些基本使⽤可以看这⾥netcat获取snmp报⽂1 先获取snmpwalk发出的(get-next-request)我们使⽤nc来监听161端⼝,然后把输出重定向到⽂件a.hex。
因为监听的是161端⼝,所以这⾥必须以root权限运⾏。
sudo nc -u -l 161 >a.hex这样之后使⽤snmpwalk这个⼯具来向这个“受控端”发送命令。
snmpwalk -c public -v 2c localhost 1.3.6.1.4.201566.1.12 再获取代理程序发回的(get-response)我们先要打开代理程序Agent,然后使⽤下⾯的命令将a.hex的内容发给代理程序,并将接收到的返回保存到b.hexo@o-pc:~/snmpPUD$ nc -u 127.0.0.1 161 <a.hex >b.hex^Co@o-pc:~/snmpPUD$下图是针对SNMPv1版本的。
⽬前⽐较通⽤的是SNMP v2c/v3版本,具有⼋种PDU类型。
分析获取到的报⽂先使⽤hexdump来查看⼀下获取到的报⽂内容。
(hexdump是⼀个很好⽤的⼗六进制分析⼯具)o@o-pc:~/snmpPUD$ hexdump -C a.hex00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.....public...|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p........0.0..|00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+......^.....|0000002eo@o-pc:~/snmpPUD$ hexdump -C b.hex00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.....public.#.|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 |."p........0.0..|00000020 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 |.+......^.......|00000030 01 2b |.+|00000032报⽂分析结果先看结果,然后再慢慢分析get-next-request报⽂⽰例分析(a.hex)⼗六进制数据解释30表⽰SNMP协议报⽂(整个报⽂是⼀个SEQUENCE)2c消息长度44字节(表⽰后⾯还有44个字节的内容)02 01 01协议版本(2c)(前两个字节02表⽰INTEGER类型01是指1个字节长度,最后的01是值01) 04参数类型(OCTSTR)06群体(community)名长度70 75 62 6c 69 63群体名public的assic码值a1PUD类型get-next-request1f snmp pdu的长度为31个OctStr(后⾯的内容31字节)02 04 22 70 8b d4请求标识符Request ID02 01 00表⽰error-state为002 01 00表⽰error-index为030 11表⽰后⾯变量绑定是SEQUENCE类型17个字节长度30 0f表⽰(变量名106表⽰该字段是OID类型0b OID长度11字节2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)8c a6 5e201566 (这也是根据规则转换得到的)01 01 01 1.1.1⼗六进制数据解释05 00表⽰NULLget-response报⽂⽰例分析(b.hex)⼗六进制数据解释30表⽰SNMP协议报⽂(整个报⽂是⼀个SEQUENCE) 30消息长度48字节(表⽰后⾯还有48个字节的内容)02 01 01协议版本(2c)(前两个字节02 01 表⽰INTEGER类型) 04参数类型(OCTSTR)06群体(community)名长度70 75 62 6c 69 63群体名public的assic码值a2PUD类型get-response23snmp pdu的长度为35个OctStr(后⾯的内容31字节) 02 04 22 70 8b d4请求标识符Request ID02 01 00表⽰error-state为002 01 00表⽰error-index为030 11表⽰后⾯变量绑定是SEQUENCE类型17个字节长度30 0f表⽰(变量名106表⽰该字段是OID类型0b OID长度11字节2b 06 01 04 01 1.3.6.1.4.1(标识1.3被合并为2B)8c a6 5e201566 (这也是根据规则转换得到的)01 01 01 1.1.100表⽰.0 即第⼀个实例\(下⾯的值实际是节点1.3.6.1.4.1.201566.1.1.1.0的) 02 01 2b02 01 表⽰INTEGER类型1个字节,2b表⽰值(43) 05 00表⽰NULL下⾯是使⽤snmpwalk命令获取的结果。
SNMP-NTCIP报文解析1. 引言简单网络管理协议(SNMP)在RFC 1157中定义,SNMP可以在传输层采用各种各样的协议,但是使用最多的还是UDP协议。
2. 协议概述SNMP到目前为止一共有三个版本,当下使用最广泛的是SNMPv2。
SNMP由三部分组成::SNMP内核、管理信息结构SMI和管理信息库MIB。
2.1. 工作原理SNMP应用场景:图1 SNMP的应用场景管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。
管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。
管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作2.2. 管理信息结构 SMI管理信息结构SMI一共有三个功能:被管对象命名、存储被管对象的数据类型、网络上传送的管理数据的编码。
被管对象的命名都在对象命名树上,处在该树的某个分支或者节点,如下图所示:被管对象的数据结构,包括简单类型和结构化类型:被管对象的编码(TLV编码方式):2.2.1. T字段T字段为1个字节,分别为类别(2),格式(1)和编号(5),T字段的各部分含义如下表所示:数据类型定义如下:2.2.2. L字段L字段称为长度字段(表示单字节或者多字节),表示方法如下:单字节:L最高bit为0,高bit后面的7个bits表示V的长度;多字节:L最高bit为1,高bit后面的7个bits表示V的长度取值所占用的字节数,即取出7bits表示的字节后,整合得出V字段的长度。
2.2.3. V字段值字段,具体取值,举例如下:Integer 15:T字段0x02,Integer的长度为4bytes,则TLV编码为02 04 00 00 00 0F;IPAddress 192.1.2.3:IPAddress的T字段为0x40,IP地址需要四字节表示,则L字段为0x04,则TLV编码为:40 04 C0 01 02 03.2.3. 管理信息库 MIB3. 报文结构3.1. PDU类型SNMP中定义了五种消息类型Get-Request,Get-Response,Get-Next-Request,Set-Request和Trap。
SNMP学习笔记之SNMP报⽂以及不同版本(SNMPv1、v2c、v3)的区别本篇⽂章将重点分析SNMP报⽂,并对不同版本(SNMPv1、v2c、v3)进⾏区别!四、SNMP协议数据单元在SNMP管理中,管理站(NMS)和代理(Agent)之间交换的管理信息构成了SNMP报⽂,报⽂的基本格式如下图1:图 1SNMP主要有SNMPv1、SNMPV2c、SNMPv3⼏种最常⽤的版本。
1、SNMPv1SNMPv1是SNMP协议的最初版本,提供最⼩限度的⽹络管理功能。
SNMPv1的SMI和MIB都⽐较简单,且存在较多安全缺陷。
SNMPv1采⽤团体名认证。
团体名的作⽤类似于密码,⽤来限制NMS对Agent的访问。
如果SNMP报⽂携带的团体名没有得到NMS/Agent的认可,该报⽂将被丢弃。
报⽂格式如下图2:图 2从上图可以看出,SNMP消息主要由Version、Community、SNMP PDU⼏部分构成。
其中,报⽂中的主要字段定义如下:Version:SNMP版本Community:团体名,⽤于Agent与NMS之间的认证。
团体名有可读和可写两种,如果是执⾏Get、GetNext操作,则采⽤可读团体名进⾏认证;如果是执⾏Set操作,则采⽤可写团体名进⾏认证。
Request ID:⽤于匹配请求和响应,SNMP给每个请求分配全局唯⼀的ID。
Error status:⽤于表⽰在处理请求时出现的状况,包括noError、tooBig、noSuchName、badValue、readOnly、genErr。
Error index:差错索引。
当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。
Variable bindings:变量绑定列表,由变量名和变量值对组成。
enterprise:Trap源(⽣成Trap信息的设备)的类型。
Agent addr:Trap源的地址。
snmp报文类型和特点
SNMP报文类型主要包括以下几种:
1. GET:用于获取一条管理信息。
2. GETNEXT:用于反复获取管理信息的序列。
3. SET:用于给一个被管理的子系统设置一个变化。
4. TRAP:用于报告一个关于被管理子系统的警告或其他异步事件。
5. 其他PDU在SNMP第二版中加入,包括GETBULK REQUEST、INFORM等。
SNMP报文的特点包括:
1. SNMP报文在OSI模型的应用层(第七层)运作。
2. SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。
3. SNMP报文的发送者是网络设备上的守护进程,它能够响应来自网络的各种请求信息。
4. SNMP报文的接收者可以是管理工具或代理进程,代理进程在发送get-response报文时也要返回此请求标识符。
5. SNMP报文具有差错状态和差错索引,用于标识和处理报文传输过程中的错误。
6. SNMP报文的Trap部分包含企业(enterprise)、trap类型和特定代码等信息,用于标识网络设备和事件类型。
以上内容仅供参考,如需更多信息,建议查阅相关文献或咨询专业人士。
Zabbix SNMP异常问题排错方法一、问题:设备SNMP不通网络设备SNMP不通Timeout while connecting to “192.168.1.99:161”.1.1检查配置1.管理IP是否对应上2. 对象团体名是否正确3. 监控项snmp版本是否对应上4.根据以上3点和网络设备的配置信息对照是否正确,因为网络设备品牌很多配置方式都是五花八门,所以这里不做演示5.网络设备可能配置snmp时使用了ACL控制,这边要检查IP是否指向Zabbix6.有些网络设备不是配置了snmp信息就能生效的,需要在管理接口(interface)上查验是否启用snmp协议7.看清楚配置的设备是否支持snmp(snmp读权限为snmp get,写权限为snmp set 它们端口为UDP161用于被动请求性能数据和发送执行命令),有些设备只支持snmp trap(端口UDP162 用于主动推送告警)1.2检查网络1.网络策略没放通,可通过端口扫描工具nmap在Zabbix主机上来探测目标地址的路径是否通畅(注意:这里很多人会用ping和telnet来做通断探测,存在很大误区,首先ping是ICMP协议只能证明路由是否可达和snmp是否通讯没有关联何况有些网络环境是禁ping的,telnet探测的端口都是TCP端口,而snmp 使用的是UDP端口,所以也不能作为端口是否开放的判断依据)yum install -y nmapnmap -sU 192.168.1.99 -p 161Nmap参数说明:-sU 表示使用UDP端口探测IP:指定目的IP-p 表示端口号Nmap返回状态说明:2.Snmpwalk探测(如果探测正常,监控还是异常的话则更多的是zabbix web配置参数对不上的问题yum -y install net-snmp-utilssnmpwalk -v 2c -c lwjkss 192.168.1.99 SNMPv2-MIB::sysDescr.0如果设备正常则会出现以下情况:二、问题:SNMP不稳定ZABBIX监控SNMP不稳定,一会通一会不通1.2.2.1单个对象如果该现象只是出现在单个对象中,其他对象采集没有被影响,则:1.设备问题,设备不支持大量请求Zabbix服务器和代理守护进程在单个请求中查询多个值的SNMP设备。
SNMPTRAP报⽂解析转载地址: https:///eric_sunah/article/details/19557683SNMP的报⽂格式SNMP代理和管理站通过SNMP协议中的标准消息进⾏通信,每个消息都是⼀个单独的数据报。
SNMP使⽤UDP(⽤户数据报协议)作为第四层协议(传输协议),进⾏⽆连接操作。
SNMP消息报⽂包含两个部分:SNMP报头和协议数据单元PDU。
在实际⽹络传输环境下,SNMP报⽂的长度取决于其所采⽤的编码⽅式。
SNMP统⼀采⽤BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使⽤的是ASN.1语法,AbastractSyntax Notation v1,即抽象语法描述语⾔。
这两个概念在后⾯实践环节再做进⼀步介绍,这⾥只要稍微了解⼀下即可,不妨碍我们对协议本⾝的分析。
这⾥我们简单解释⼀下BER编码规则:BER作为ANS.1的基本编码规则,描述具体的ANS.1对象如何编码为⽐特流在⽹络上进⾏传输。
BER编码规则由三部分组成:SNMP中定义了⼏种基本的数据类型,其中v1和v2版有些改动,具体参见相应的RFC⽂档。
这⾥我们只介绍⼏种最常见的类型:l INTEGER:⼀个整数l OCTER STRING: 0或多个8bit字节,每个字节在0~255之间取值l DisplayString:0或多个8bit字节,每个字节必须是ASCII码。
在MIB-II中,所有该类型变量不能超过255个字符(0个字符可以)l NULL:代表相关的变量没有值l IpAddress:4字节长的OCTER STRING,以⽹络字节序表⽰IP地址l PhyAddress:6字节长的OCTER STRING,代表物理地址l Counter:⾮负整数,可以从0递增到232-1()。
达到最⼤值后归0l TimeTicks:时间计数器,以0.01秒为单位递增,不同的变量可以有不同的递增幅度。
SNMP报文格式分析报文格式snmp简介snmp工作原理SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。
对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。
每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。
管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。
管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。
管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。
snmp报文类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。
1.Get-Request 、Get-Next-Request与Get-ResponseSNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。
Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。
2.Set-RequestSNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
3.TrapSNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。
上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP封装。
snmp报文格式图SNMP报文的形式大致如下图所示。
snmp报文编码格式SNMP(简单网络管理协议)是目前在计算机网络中用得最广泛的网络管理协议,它使用(Abstract Syntax Notation One抽象语法表示法.1)来定义SNMP报文格式和MIB(Management Information Base管理信息库)变量的名称。
是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关。
根据标准定义,数据类型分为:a.简单数据类型:boolean布尔值null空integer整型real实数octerstring八进制字符串object identifier对象标识ipaddressIP地址time ticks时刻值等。
b.构造数据类型:sequence序列sequence of setset ofchoice等。
构造数据类型提供一种或多种简单数据类型进行复合的方法。
基本编码规则BER在具体系统中,我们需要用具体的编码规则将语法表示的抽象数据转换成具体的比特流。
SNMP使用的编码方法是BER(Basic Encoding Rule)。
BER的数据都由三个域构成:标识域(tag) + 长度域(length) + 值域(value)。
1.标识域Tag表示:2.长度域length表示长度域用于指示后续的值域value的字节数。
但是这个长度域自身多长怎么确定呢SNMP使用的是变长表示法,这有点类似与UTF8的编码方式。
具体表示方因为绝大部分情况下,值域的长度都在【0,127】区间内,所有这种表示方法最节约。
snmp报文介绍SNMP首部SNMP报文的首部指明了这个报文是SNMP协议报文,以及报文的字节数。
SNMP报文的第一个字节用于表示这是一个SNMP报文,就是0x30。
在第一个字节之后是一个长度域,用于告知后面的SNMP报文的总字节数(不包括前面的0x30和这个长度域所占的字节数)。
如下所示:SNMP版本表示Community共同体表示共同体部分这里一共占了8个字节。
如:x04,0x06,0x70,0x75,0x62,0x6c,0x69,0x630x04是标识域,表示值域类型为(OCTSTR)0x06是长度域,表示值域的长度为6个字节70 75 62 6c 69 63是值域的内容,是群体名public的assic码值PUD表示这个部分内容比较多,但都是基于BER形式编码出来的。
内容举例如下:a2 23 02 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 01 2b1.PDU类型上面的第一个字节0xa2就是表示这个PDU的类型。
见下表2.PUD长度域0xa2后一个字节是这个PUD的长度域,0x23表示后面的值域是35个字节。
3.get/set表示SNMP应该说是有三种操作,get/set/trap,又可细分为上面表格中的5中PDU类型。
其中get和set有共同之处,这里先以get的来做说明。
(1)请求标识符Request ID这是由管理进程设置的一个整数值。
代理进程在发送get-response报文时也要返回此请求标识符。
管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。
设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。
举例:02 04 22 70 8b d40x02是标识域,表示值域为整型数据0x04是长度域,表示值域长度为4个字节0x22 70 8b d4是值域,就是一个整数而已。
(2)(2)错误状态error-state错误状态是用于告知管理进程,代理进程对其发出的请求的处理结果的状态的。
举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,表示没有出错(3)错误索引error-index当出现noSuchName、badValue或readOnly的差错时(见上表),由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,因为没有出错,所以这里为0变量绑定变量绑定就是跟在错误索引后面的一系列变量。
这些变量同样也采取BER 形式的编码规则。
在get或get-next报文中,变量的值应忽略。
trap(notification)PUD的类型如果不是上面的所述的get/set那就应该是trap(notification)1.OID:第一个部分是指trap报文对应的网络设备的对象标识符。
此对象标识符肯定是在enterprise结点{.}下面的一棵子树上。
2.trap类型3.当使用上述类型2、3、5时,在报文后面变量绑定部分的第一个变量应标识响应的接口。
4. 特定代码(specific-code)指明代理自定义的时间(若trap类型为6),否则为0。
时间戳(timestamp)指明自代理进程初始化到产生trap报告的事件发生所经历的时间,例如时间戳为1230表明在代理初始化后1230ms发生了该时间。
6.变量绑定(variable-bindings)指明一个或多个变量的名和对应的值。
也是采用的BER编码规则。
数据类型的编码表示下面介绍一些变量类型的编码表示方法。
Integer整型编码表示整型数据的标识域编码是0x02,长度域不定,一般是1/2/4字节等。
整型数据的值域是带符号类型,最高位是符号位,采取补码的表示形式。
要注意的是,其是大端表示法(高地址存低位)。
OID对象标识符编码表示SNMP服务器维护的所有管理信息库(MIB)对象采用ObjectID表示,如,.表示MIB库中的设备描述SysDesc变量,其编码规则如下:标识域编码为0x06,长度域根据情况而定,值域的编码比较复杂,如下所示。
1.首两个ID被合并为一个字节X * 40+Y。
例如:合并为1x40+3 = 43 = 0x2B2.后续的ID,如果在区间[1,127]内,直接编码表示,如果大于127,那么按照下面(3)所述方法编码。
3.如果ID大于127,那么使用多个字节来表示。
a.这多个字节中除最后一个字节外,前面的字节最高位为1b.这多个字节的最后一个字节的最高位为0c.这里每个字节剩下的7个比特位用来表示实际的数值例如201566这个数,用十六进制表示是0x03 13 5e,那么用二进制表示是000 1100 010 0110 101 1110。
注意上面是以7个比特位为单位进行分划的,现在我们来填充最高位。
将前面的最高位填1,最后一个最高位填0即可得到1000 1100 1010 0110 0101 1110用十六进制表示为0x8c a6 5esequence组合类型sequence表示其由多个数据组合而成,每一个数据也都还是采用的BER编码方法。
例如我们这里分析的数据包中就要一个sequence类型的数据,其值域又是有一个OID类型的数据和一个Integer类型的数据组合而成的。
见实例。
2.分析报文get-next-request报文示例分析先使用hexdump来查看一下获取到的报文内容。
(hexdump是一个很好用的十六进制分析工具)o@o-pc:~/snmpPUD$ hexdump -C00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.....public...| 00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p..........|00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+......^.....|0000002eget-response报文示例分析报文内容:o@o-pc:~/snmpPUD$ hexdump -C00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.....public.#.| 00000010 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 |."p..........| 00000020 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 |.+......^.......| 00000030 01 2b |.+|00000032。