浅谈 Linux 中开发 SNMP Trap SNMP Trap 是一种标准的报告机制,广泛应用在各种网络管理软件中。 本文 详细介绍了 SNMP Trap 的基本概念,以及 Linux 下面 net-snmp 对 SNMP Trap 的开发与应用。 1. SNMP Trap 简介 SNMP 简单网络管理协议 (Simple Network Management Protocol) 是一种应用 层协议,是 TCP/IP 协议族的一部分。 SNMP Trap 是 SNMP 的一部分, 当被监控段出现特定事件, 可能是性能问题, 甚至是网络设备接口宕掉等, 代理端会给管理站发告警事件。 总的来说, SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制。 2.
0.3、Snmp版本 SNMP目前共有v1,v2,v3这三个版本: SNMP v1是SNMP协议的最初版本,不过依然是众多厂家实现SNMP基本方式。 SNMP v2通常被指是基于community的SNMP V2。Community实质上就是密码。 SNMP v3 是最新版本的SNMP。它对网络管理最大的贡献在于其安全性。 0x02 Snmp有关的基本概念 2.1、代理和管理站的模型 Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。 但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。
目录 一、SNMPTrap消息处理流程 二、snmptt 1、SNMPTrap、snmptt安装 2、配置文件修改 3、SNMPTrapFile文件创建 4、监控项创建 三、perl脚本 1、SNMPTrap 二、snmptt 1、SNMPTrap、snmptt安装 yum install -y net-snmp net-snmp-libs net-snmp-utils net-snmp-perl 2、配置文件修改 /etc/snmp/snmptrapd.conf authCommunity log,execute,net public traphandle default net-snmp-libs net-snmp-utils net-snmp-perl mrtg 2、从zabbix源码包中拷贝perl脚本到/usr/bin/目录下,并增加执行权限 cp zabbix snmptrap测试发包: snmptrap -v 2c -c public 192.168.1.171 ” .1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s
Manager. 1.3.6.1.2.1.1 - SNMP MIB-2 System 1.3.6.1.2.1.2 - SNMP MIB-2 Interfaces 1.3.6.1.2.1.3 - at 1.3.6.1.2.1.14 - OSPF Version 2 MIB 1.3.6.1.2.1.15 - BGPv4 1.3.6.1.2.1.16 - Managed Objects for Bridges .chassis(4).card(1).slotCps(2)-cpsSlotSummary(1).cpsModuleTable(1).cpsModuleEntry(1).cpsModuleModel(3 Cisco MIB information: http://snmp.cloudapps.cisco.com/Support/SNMP/do/BrowseMIB.do? local=en&step=2 Load MIB file: The files below is F5 MIB file.
文 | 编程随想曲 首发 | 编程随想曲 网管系统通常会通过SNMP监控获取设备的相关信息,通过Trap接收设备的告警信息,今天的文章告诉你,如果你需要做SNMP的对接,需要问对方要哪些信息。 2. ip 这里的ip是指你接收snmp信息的服务器ip,对方会配置该ip,并且只有该ip才能收到snmp信息。对方有时候也会配置一个网段的范围。 2. community 团体名,相当于访问snmp的钥匙,你与对方互相协商一个,一般默认是public。 3. 端口 接收trap信息的端口,默认是162。 针对v2c版本常用命令如下 snmpwalk -v 2c -c public ip -v 1|2c|3 specifies SNMP version to use -c COMMUNITY set the community string ip des_server 四、发送测试Trap 网管系统配置好Trap信息后,一般我们可以通过Mib Browser工具发送测试Trap。
消息结构 Snmp协议消息报文分为2个部分:snmp报文头和协议数据单元PDU。 get-request操作:从代理进程处提取一个或多个参数值(网管系统发送) get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送) set-request操作 :设置代理进程的一个或多个参数值(网管系统发送) get-response操作:返回的一个或多个参数值。 Error status: 代理进程回复响应时0-5中的一个数字 0 noError 一切正常 1 tooBig 代理无法将回答装入到一个SNMP报文之中 2 首部: 企业(enterprise):填入trap报文的网络设备的对象标识符 trap类型: 0 coldStart 代理进行了初始化 1 warmStart 代理进行了重新初始化 2
根据管理者和被管理的设备在网络管理操作中的不同职责,SNMP定义了3种角色。如下图, ? 网络管理系统:又称管理站、NMS。 它是SNMP的总控机,提供统一的用户界面访问支持SNMP的设备,一般提供UI界面,并有统计、分析等功能,是网管系统的总控制台。NMS是网络管理操作的发起者。 3.支持的平台 net-snmp可以在BSD UNIX、Linux、Windows等操作系统上编译运行。 Linux、Unix和Windows系统运行snmpd后,直接具备了SNMP协议支持,可以被管理站管理。许多商业化的Linux中使用snmpd作为系统的SNMP代理。 案例,snmpwalk -v 2c -c public localhost system #这条指令用于查看本机系统信息。
我用Linux做Cacti监控服务器监控Windows主机时出现以下错误,自己检查Windows主机的SNMP端口正常,防火墙也正常关闭,用snmpwalk命令也报错。 1.错误如下: 2.检查Windows主机的端口和防火墙 3.在Linux服务器上用snmpswak命令提示错误 4.解决问题(是因为Windows主机的SNMP服务没有"接受团体名称")
参数--prefix用来告诉系统安装信息存放的路径,如果没有指定路径,直接执行./configure,那么程序包都会安装在系统默认的目录下,通常为:/usr/local下 执行命令". 2、选择v2c SNMP协议的版本 找到【ACTIVE MONITORING】,如下图所示: ? 修改如下: ? {print $2}'| xargs kill"关闭snmp的相关服务,如下图所示: ? 能够正常返回系统的名字就说明SNMP安装配置成功了。也可以使用命令"snmpget --version"查看当前的安装版本号来验证是否安装成功,如果安装成功,则显示当前的安装版本号,如下图所示: ? "ps aux | grep snmp | grep -v grep |awk '{print $2}'| xargs kill"关闭snmp的相关服务 3、进入SNMP源码目录(net-snmp-5.7.1
在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强 一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。 (1)管理信息库MIB:任何一个被管理的资源都表示成一个对象,称为被管理的对象。 每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示。 NMS Agent和MIB的关系 ? (2)管理信息结构(SMI) SMI定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础。 前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。
snmp discovery with python #! processing import Process, Queue, Pool import time import subprocess from IPy import IP import sys from snmp import Snmp q = Queue() oq = Queue() #ips = IP("10.0.1.0/24") ips = ["10.10.10.28","10.10.10.29 =None): self.ip = ip self.mac = mac self.snmp_response = snmp_response () h = HostRecord() h.ip = ipaddr h.snmp_response = s.query() print
(2)Set-Request (修改网络设备配置) SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。 SNMP工作流程如图 四、SNMP报文格式 下图是封装成UDP数据报的5种操作的SNMP报文格式。 c – PDU类型 2、get/set首部 a – 请求标识符(request ID) 这是由管理进程设置的一个整数值。 b – trap类型 此字段正式的名称是generic-trap,共分为表4中的7种 当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。 2、GetNextRequest PDU GetNextRequest PDU的最重要的功能是表的遍历,这种操作受到了前面所说的管理变量的表示方法的支持,从而可以访问一组相关的变量,就好象他们在一个表内
SNMP对于任何程序设计人员来说是特别易于理解的。总体的简化能够很好地把这个系统简化。一个网络设备以守护进程的方式运行SNMP代理,该守护进程能够响应来自网络的各种请求信息。 SNMP被广泛应用在NMS网络管理系统中(Network Management System)。 尽管Net-SNMP提供了可用来构建你自己的NMS网管系统的所有工具,我们不会再进一步讨论关于NMS的话题。 不过请记住,如果你认为你的SNMP设备厂商没有提供SNMP代理方面的详细信息,很可能是因为他们希望你购买他们的NMS网络管理系统,或者购买能够在另一个NMS平台上使用的插件。 1.2. SNMP的三大版本 SNMP的常用版本有三个:SNMPv1、SNMPv2、SNMPv3 SNMPv1是为基于公共管理的初始标准。
配置snmptrap vi /etc/snmp/snmptrap.conf,在文件最后添加如下 agentAddress udp:127.0.0.1:161 view systemonly included proc sendmail 10 1 disk / 10000 disk /var 5% includeAllDisks 10% load 12 10 5 trap2sink extend-sh test2 echo Hello, worl 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171486.html原文链接:https://
收集整理一些Linux下snmp常用的OID,用做服务器监控很不错。 = INTEGER: listen(2) TCP-MIB::tcpConnState.0.0.0.0.443.0.0.0.0.0 = INTEGER: listen(2) TCP-MIB::tcpConnState listen(2) TCP-MIB::tcpConnState.127.0.0.1.199.0.0.0.0.0 = INTEGER: listen(2) TCP-MIB::tcpConnState.192.168.1.2.22.192.168.1.16.5035 .1.3.6.1.2.1.1.3.0 系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 hrSWRunName WALK .1.3.6.1.2.1.25.6.3.1.2 系统安装的软件列表 hrSWInstalledName WALK SNMP
分为客户端和服务器端 我们使用客户端对服务器进行监控 客户端端口 162 服务器端口 161 Version 目前snmp有三个版本 V1,V2c,V3 前两个版本应用较广,遗憾的是缺乏加密机制,导致信息可以被嗅探 snmp-check –c public –v 2c 192.168.1.1 ? snmp-check –c public –v 2c –w 192.168.1.1 ? 从结果看出是可写的! 从结果可以看出并没有哈,用这个小实验可以看出一点,这里的修改只是改变了snmp查询时候的MIB库的内容,而不是对系统实质性的修改 那么刚才我打算修改后为了后期渗透调用的想法就失败了 2. 留着以后擦屁股时候用 目标系统的管理员或者使用snmp协议管理流量的路由设备可能会被我们修改的信息所蒙骗,即使发生了大流量洪峰也可能蒙混过关而不被察觉! 3.
在进行winsnmp及其它snmp api进行snmp开发时,基本上都会有一个接收trap的功能。对于初学者来说,即使了解了不少snmp的知识,但如果没有亲自实现出结果,对它的理解还是有欠缺的。 snmp trap的原理就不多说了,这里借助net-snmp的snmptrap来先进行一个感性的实现。前提是安装好net-snmp, 安装步骤见前面的博文。 1.snmp trap接收端的配置。 命令为: snmptrapd -c C:\usr\etc\snmp\snmptrapd.conf -f -Le -d 运行成功如图: 2.snmp trap的模拟发送。 注意:前面的snmptrap.exe文件需要把绝对路径加上,因为系统中也有一个叫snmptrap.exe的文件,那个是自带的。 其中第一个ip地址为运行上面配置的主机地址,其余不用管。
目录 一、Trap与Inform 二、Trap 1、Agent端工作流程 2、Manager端工作流程 3、流程图 三、调试 四、SNMP中预定义的trap ---- ---- 一、Trap与Inform 设备厂商会提供) ②命令方式:发送各种TRAP命令(Manager地址后面一定要加端口号162),在Manager端看反应结果,在Agent端无反应 ③自动触发:配置snmpd.conf设置触发TRAP,系统发生某类错误时会自动触发相应类型的 TRAP,发送给Manager ④程序方式:一部份TRAP需要写C语言程序,用相应的api(send_easy_trap或send_v2trap)发送 2、Manager端工作流程 ①配置snmptrapd.conf 机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。 06 01 ...C...0)0...+.. 0048: 09 09 2C 01 02 01 02 01 0C 30 17 06 06 2B 04 01 ..,......0...
0x03 SNMP 现有版本 SNMP目前共有v1,v2,v3这三个版本: SNMP v1是SNMP协议的最初版本,不过依然是众多厂家实现SNMP基本方式。 SNMP v2通常被指是基于community的SNMP V2。Community实质上就是密码。 SNMP v3 是最新版本的SNMP。它对网络管理最大的贡献在于其安全性。 0x05 SNMP 代理管理 Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 192.168.1.144)。 这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。 但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。
SNMP安全访问 通过与CISCO路由器内部的SNMP代理及MIB进行通信,SNMP系统可以取得对路由器的管理访问 配置了路由器上的SNMP代理后,SNMP系统就可以执行以下任务 : 1从路由器SNMP代理MIB中读取当前的配置参数和统计信息(ONLY READ) 2向路由器SNMP代理MIB设置某些配置参数(read write) 3从路由器SNMP代理处接收SNMP trap(路由器事件) SNMP系统使用所谓的community 字符串作为访问路由器SNMP代理的口令,SNMP代理只接受提供正确的 community 字符串的SNMP系统的命令和请求 无论主机是 否存在,TRAP都会向指定的SNMP系统发送。inform总需要来自指定SNMP系统的应答,以验证消息的接收。 traps [notification-type] 2 启用host–用snmp-server host命令在规定trap 和inform发往哪个SNMP系统主机的同事,也规定发送