精华内容
下载资源
问答
  • 2019-03-18 18:59:01

    ## 首先通过telnet链接上华为交换机

    system-view
    ## 配置交换机的读团体名和写团体名为“public”
    snmp-agent
    snmp-agent community read  public
    snmp-agent community write  private
    ## 配置SNMP版本 (all是所有版本)
    snmp-agent sys-info version all
    ## 设置联系方式
    snmp-agent sys-info contact MR.LI-tel:8002
    ## 设置设备位置
    snmp-agent sys-info location 3rd-flood
    ## /允许向网管工作站192.168.211.214发送Trap报文,使用的团体名为public/,默认端口162
    snmp-agent target-host trap address udp-domain 192.168.211.214 params securityname public

    更多相关内容
  • snmp trap命令接收软件

    热门讨论 2012-08-09 11:10:31
    windows平台下,用于接收snmp协议的trap消息的小软件,可以测试你编写的trap命令是否发送成功了
  • type,value) triple forthe varbinds listed in the VARIABLES clause (in the same way as withthe snmpset command).表行示例.snmptr...

    这取决于陷阱中是否引用了“标量”或“表行”相关的varbinds.

    Note that this command also includes an (OID,type,value) triple for

    the varbinds listed in the VARIABLES clause (in the same way as with

    the snmpset command).

    表行示例.

    snmptrap -v 2c -c public host:162 .1.3.6.1.6.3.1.1.5.3 .1.3.6.1.6.3.1.1.5.3 \

    ifIndex i 2 ifAdminStatus i 1 ifOperStatus i 1

    以供参考 :

    snmptranslate -m +ALL -Pu .1.3.6.1.6.3.1.1.5.3

    IF-MIB::linkDown

    变量绑定中没有“.0”,因为id由第一个精确定位行的ifIndex处理.

    标量行示例.

    snmptrap -v 1 -c public host UCD-TRAP-TEST-MIB::demotraps "" 6 17 "" \

    SNMPv2-MIB::sysLocation.0 s "Just here"

    ‘SNMPv2-MIB :: sysLocation.0’是一个标量.

    与上面的IF-MIB :: linkDown示例不同,它与ifIndex所标识的表行有关,这里最后的“.0”指向标量(就像你设置它时一样)

    来自原始问题的Netsnmp示例

    mibs / NET-SNMP-EXAMPLES-MIB.txt状态

    netSnmpExampleHeartbeatRate OBJECT-TYPE

    SYNTAX Integer32

    MAX-ACCESS accessible-for-notify

    STATUS current

    DESCRIPTION

    "A simple integer object, to act as a payload for the

    netSnmpExampleHeartbeatNotification. The value has

    no real meaning, but is nominally the interval (in

    seconds) between successive heartbeat notifications."

    ::= { netSnmpExampleNotificationObjects 1 }

    即它不是真正可识别或可访问的标量,因此不使用“.0”.

    展开全文
  • snmptrap 命令解析

    千次阅读 2015-09-18 11:55:40
    # snmptrap -v 2c -c public 10.10.12.219 "aaa" 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "just here" snmptrap 命令 -v 2c Snmp协议版本 -c public 共同体 10.10.12.

    example:


    # snmptrap -v 2c -c public 10.10.12.219 "aaa" 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "just here"  


    snmptrap命令
    -v 2cSnmp协议版本
    -c public共同体
    10.10.12.219snmp代理的IP
    "aaa"主机名称, 可以为空
    1.3.6.1.4.1.2345Enterprise-OID
    SNMPv2-MIB::sysLocation.0数据OID
    s数据类型
    "This is a test"数据值


    展开全文
  • snmp trapsnmp SNMP简单概述 1.1、什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于...

    snmp trap 与snmp 以及Trap的发送与接收java实现

    SNMP简单概述

    1.1、什么是Snmp

    SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。

    SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。

    SNMP管理站和SNMP代理之间是松散耦合。他们之间的通信是通过UDP协议完成的。一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。

    SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。

    SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了【读】操作;管理员需要向设备执行设置操作,所以SNMP提供了【写】操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了【Trap】操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zB4K1Zx2-1650091948089)(clipboard-202204151017-l8afp.png)]

    1.2、为什么需要SNMP?

    随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题:
    网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难;同时,网络作为一个复杂的分布式系统,其覆盖地域不断扩大,也使得对这些设备进行实时监控和故障排查变得极为困难。
    网络设备种类多种多样,不同设备厂商提供的管理接口(如命令行接口)各不相同,这使得网络管理变得愈发复杂。
    在这种背景下,SNMP应运而生,SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。通过“利用网络管理网络”的方式:

    • 网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作,工作效率得以提高。
    • 屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理设备的物理特性、网络类型相互独立,因而可以实现对不同设备的统一管理,管理成本低。
    • 设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,其在设备上添加的软件/硬件、报文的种类和报文的格式都力求简单,因而运行SNMP给设备造成的影响和代价都被最小化。

    1.3、SNMP的基本组件

    SNMP基本组件包括网络管理系统NMS(Network Management System)、代理进程(Agent)、被管对象(Managed Object)和管理信息库MIB(Management Information Base)。如图所示他们共同构成SNMP的管理模型,在SNMP的体系结构中都起着至关重要的作用。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tE0OJAAc-1650091948090)(clipboard-202204141542-5jfbe.png)]

    NMS

    NMS 在网络中扮演管理者角色,是一个采用 SNMP 协议对网络设备进行管理/监视的系统,运行在 NMS 服务器上。

    NMS 可向设备上的 Agent 发出请求,查询或修改一个或多个具体的参数值。也可以接收 Agent 主动发送的 Trap 信息,以获知被管理设备当前的状态。

    Agent

    Agent 是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自 NMS 的请求。Agent 接收到 NMS 的请求信息后,通过 MIB 表完成相应指令后,并把操作结果响应给 NMS。

    当设备发生故障或者其它事件时,设备会通过 Agent 主动发送信息给 NMS,向NMS报告设备当前的状态变化。

    MIB

    MIB (管理信息库)就是一个虚拟的数据库,是所有被管对象的抽象集合,是在被管理设备端维护的设备状态信息集,指明了被管理设备所维护的变量(即能够被 Agent 查询和设置的信息)。MIB 在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。每一个Agent都维护这样一个MIB库,NMS可以对MIB库中的对象的值进行读取或者设置。

    • MIB是一个按照层次结构组织的树状结构,称为MIB树
    • 每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的数字标识符
    • 网管通过读写MIB中的被管对象实现对设备的管理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VRNTGgPt-1650091948092)(clipboard-202204151055-h0n43.png)]

    MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。结构树的分枝实际表示的是数据对象的逻 辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示增加的中间分枝和增加的树叶。
    使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,它可以遍历整棵MIB结构树,通常 以图形显示的形式来表示各个分枝和树叶对象。可以通过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶 子节点(即数据对象)为止。这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。
    每一个节点都有一个对象标识符(OID)来唯一的标识,每个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点 通向它的路径。一个带标号节点可以拥有包含其它带标号节点为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。比如网络设备名的oid 是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。
    网络资源被抽象为对象进行管理。但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。MIB作为设在代理者处的管理站访问点的集合,管理站通过读取MIB中对象的值来进行网络监控。管理站可以在代理者处产生动作,也可以通过修改变量值改变代理者处的配置。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIvH5ArP-1650091948093)(clipboard-202204151102-snonv.png)]

    通过 MIB,可以完成以下功能:

    ◆ Agent 通过 get 消息查询 MIB,可以获知设备当前的状态信息。

    ◆ Agent 通过 set 消息修改 MIB,可以设置设备的状态参数。

    Management object

    Management object 指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板),也可以是某些硬件,软件(如路由选择协议)及其的配置参数的集合。

    1.4、SNMP 和 UDP

    SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。

    1.5、Snmp版本

    SNMP 目前共有 3 个版本,分别为 v1、v2 和 v3,说明如下:

    • SNMP v1:是 SNMP 协议的最初版本,在 1988 年被制定,并被 Internet 体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案。不过依然是众多厂家实现SNMP基本方式。
    • SNMP v2:是 1992 年发布的 SNMP 的第二个版本。它修订了第一版,并且在性能、安全、机密性和管理者之间通信等方面进行了大量改进。通常被指是基于community的SNMP V2。Community实质上就是密码。
    • SNMP v3:是目前最新的版本。它是 2004 年制定的,协议编号为 RFC3411-RFC3418(STD0062)。它为提升协议的安全性,增加了认证和密文传输功能,它对网络管理最大的贡献在于其安全性

    SNMP v3实现原理SNMP v1、 SNMP v2基本一致,主要区别在于SNMP v1、 SNMP v2通过只读团体名、只读团体名连接,而SNMP v3通过鉴权和加密连接,增加了身份验证和加密处理。
    SNMPv1、SNMPv2c与SNMPv3三者之间有什么区别?
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iP4adDhq-1650091948095)(clipboard-202204141604-b6kr7.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJFMHmp9-1650091948096)(clipboard-202204151045-s2zzx.png)]

    二、Snmp的实现结构

    在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、数据存储、及数据分析。【被】监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwVgtPnN-1650091948097)(clipboard-202204141552-5jeky.png)]

    管理站与代理端通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GadTgzZ-1650091948098)(clipboard-202204151020-d03p1.png)]

    三、Snmp有关的基本概念

    一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

    管理信息库MIB:任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPkQfvyi-1650091948099)(clipboard-202204141553-ocj03.png)]

    3.1、代理和管理站的模型

    Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 192.168.1.144)。管理站指的是运行了可以执行网络管理任务软件的服务器,通常被称作为网络管理工作站(NMS),NMS负责采样网络中agent的信息,并接受agent的trap。代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。所以,一旦获取设备的访问权限(community,默认为public),就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理和管理站之间保持连接。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrmudjQX-1650091948101)(clipboard-202204141555-qbe1r.png)]

    3.2、SNMP的操作命令

    SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。

    Get:管理站读取代理者处对象的值。它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式。
    Set:管理站设置代理者处对象的值。它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态。它可以设置设备的名称,关掉一个端口或清除一个地址解析表中的项等。
    Trap: 代理者主动向管理站通报重要事件。它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题 发生了。如果发生意外情况,客户会向服务器的162端口发送一个消息,告知服务器指定的变量值发生了变化。通常由服务器请求而获得的数据由服务器的161 端口接收。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消息。管理站可相应的作出处理。

    3.3、SNMP 报文

    SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。
    一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iU30kLdx-1650091948102)(clipboard-202204141555-eqgtn.png)]

    版本识别符(version identifier):用于说明现在使用的是哪个版本的SNMP协议,确保SNMP代理使用相同的协议,每个SNMP代理都直接抛弃与自己协议版本不同的数据报。
    团体名(Community Name):团体(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理 员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文。
    协议数据单元(PDU):PDU (协议数据单元)是SNMP消息中的数据区, 即Snmp通信时报文数据的载体。PDU指明了SNMP的消息类型及其相关参数

    PDU的5种协议数据单元:

    SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。

    get-request操作:从代理进程处提取一个或多个参数值。

    get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。

    set-request操作:设置代理进程的一个或多个参数值。

    get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
    前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

    SNMP的5种报文操作:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WVywNEUO-1650091948104)(clipboard-202204151037-owizk.png)]

    网管服务器 代理服务 MIB

    • get-request 请求查询
    • get-next-request 请求查询
    • set-request 设置
    • get-response 对前边的三种报文进行响应
    • Agent上出现一些告警,会通过trap上报给网关,端口是162

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GOSS8gz-1650091948104)(clipboard-202204151103-rvsdd.png)]

    四、SNMP的运行过程

    驻留在被管设备上的AGENT从UDP端口161接受来自网管站的串行化报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送回网管站。网管站得到响应报文后,再经同样的处理,最终显示结果。

    下面根据RFC1157详细介绍Agent接受到报文后采取的动作:

    首先解码生成用内部数据结构表示的报文,解码依据ASN.1的基本编码规则,如果在此过程中出现错误导致解码失败则丢弃该报文,不做进一步处理。

    第二步:将报文中的版本号取出,如果与本Agent支持的SNMP版本不一致,则丢弃该报文,不做进一步处理。当前北研的数据通信产品只支持SNMP版本1。

    第三步:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与本设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。SNMPv1只提供了较弱的安全措施,在版本3中这一功能将大大加强。

    第四步:从通过验证的ASN.1对象中提出协议数据单元PDU,如果失败,丢弃报文,不做进一不处理。否则处理PDU,结果将产生一个报文,该报文的发送目的地址应同收到报文的源地址一致。

    根据不同的PDU,SNMP协议实体将做不同的处理:

    五、Snmp 的安装

    我们需要安装下面三个软件包:

    • snmpd:snmp服务端软件

    • snmp:snmp客户端软件

    • snmp-mibs-downloader:用来下载更新本地mib库的软件

    1、安装这三个软件:

    sudo apt-get install snmpd snmp snmp-mibs-downloader
    
    

    2、安装成功状态检查:

    ## 查看状态
    sudo service snmpd status
    
    ## 测试看看服务是否正常
    root@apig:/usr/share/snmp# snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1
    iso.3.6.1.2.1.1.1.0 = STRING: "Linux apig 4.15.0-175-generic #184-Ubuntu SMP Thu Mar 24 17:48:36 UTC 2022 x86_64"
    
    ## 没有问题,有信息返回,那么接下来就直接进行各种配置了,不过在开始配置前先备份一下配置文件:
    root@apig:/etc/snmp# sudo cp snmpd.conf snmpd.conf.ori 
    root@apig:/etc/snmp# ls
    snmp.conf  snmpd.conf  snmpd.conf.ori
    
    
    root@apig:/etc/snmp# ls
    snmp.conf  snmpd.conf  snmpd.conf.ori
    
    root@apig:/usr/share/snmp# ls
    mib2c-data  mibs  snmpconf-data  snmp_perl.pl
    
    ## 注意:如果没有mibs,需要手动安装 `sudo download-mibs`
    需要注意的是,在安装snmp-mibs-downloader的过程中,程序会帮我们自动下载mib库,并保存在/usr/share/snmp/mibs目录中
    

    六、ubuntu配置 SNMPv2

    6.1、配置节点

    修改/etc/snmp/snmpd.conf文件,大概在45行,将下面的两行注释掉:

    # view   systemonly  included   .1.3.6.1.2.1.1
    # view   systemonly  included   .1.3.6.1.2.1.25.1
    

    增加下面一行:

    view   systemonly  included   .1
    

    这样的话,我们就可以获取更多的节点信息,因为如果不这样做,我们能够获取的信息,仅仅是上面两个注释掉的节点所包含的信息。

        修改之后,重启snmp服务,再使用命令观察一下:
    
    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
    iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 4194300
    
    

    OK,没有问题!不过需要注意的是,这里.1.3.6.1.4.1.2021.4.3.0表示的是LInux主机交换空间总量的一个节点,而输出4194300,就说明我们的主机上的交换空间总量大概就是4GB左右。

    6.2.配置MIB库

    虽然上面已经可以正常获取我们想要的信息,但是输出结果很不直观,这时我们配置一下MIB库就可以了,不过需要注意的是,这个配置是对客户端软件的配置(只不过现在还是在我的同一台服务器主机上进行操作)。

    修改/etc/snmp/snmp.conf配置文件,将下面这一行注释掉:

    # mibs :
    
    

    然后重启snmp服务,再通过命令观察:

    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4194300 kB
    
    ##  可以看到,现在的输出就非常直观了!这样之后,其实我们在获取相关节点信息时,也可以不用输入那一长串的数字了:
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalSwap.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4194300 kB
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8142012 kB
    
    

    关于MIB库的节点值从哪里来,不需要去记,可以在网上找 https://blog.51cto.com/xpleaf/1757162

    需要注意的是,现在只是在服务器端进行配置和测试,其实这一步的操作应该是在客户端(另一台主机上)完成的,这里只是为了方便。

    6.2、配置共同体

    其实所谓共同体,把它理解为一个密码就行了,前面我们在使用snmpwalk命令获取主机的信息时,有一个-c public的参数,其实就是指定了这个共同体为public,这是默认的配置,当然在实际中,我们不可能使用默认的值,因此需要把它修改一下。

    修改配置文件/etc/snmp/snmpd.conf,大概在52行,将下面的两行:

    rocommunity public  default    -V systemonly
    rocommunity6 public  default   -V systemonly
    

    修改为:

    rocommunity   sunrj123  default    -V systemonly
    rocommunity6 sunrj123  default   -V systemonly
    

    那么这里就把共同体修改为sunrj123 了,重启snmp服务,通过命令观察一下:

    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalReal.0
    Timeout: No Response from localhost
    
    root@apig:/etc/snmp# snmpwalk -v 2c -c sunrj123 localhost memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8142012 kB
    

    可以看到第一次获取信息不成功,因为我们已经更新了共同体,旧的public将不能再使用,否则认证失败就无法获取snmp提供的主机信息。

    6.4.允许远程主机访问

    默认情况下,snmp服务只是对本地开启,是无法通过远程获取该主机的snmp信息的:

    root@apig:/etc/snmp# sudo netstat -antup | grep 161
    udp        0      0 127.0.0.1:161           0.0.0.0:*                           19410/snmpd
    

    可以看到,161端口只对本机开放(161端口号是snmp服务的端口号),我们需要修改一下,让snmp服务对外开放。

    修改/etc/snmp/snmpd.conf配置文件,大概在15行,将下面一行注释掉:

    agentAddress  udp:127.0.0.1:161
    

    同时去掉下面这一行的注释:

    #agentAddress udp:161,udp6:[::1]:161
    

    在这里插入图片描述

    重新启动snmp服务,再通过命令观察:
    
    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/etc/snmp# sudo netstat -antup | grep 161
    udp        0      0 0.0.0.0:161             0.0.0.0:*                           19770/snmpd         
    udp6       0      0 ::1:161                 :::*                                19770/snmpd
    
    可以看到服务已经对外开放了,并且同时支持IPv4和IPv6。
    
        这样之后,我们就能在远程主机进行测试。
    

    7.(远程)测试

    在服务器本地我们已经做过测试,并且没有问题,下面我们要做的是在远程主机进行测试。

    我另一台远程主机上的操作系统也是Ubuntu 15.04,并且已经安装了snmp客户端软件和mib库下载软件,同时配置了MIB库,下面就直接进行远程的测试:

    xpleaf@leaf:~$ snmpwalk -v 2c -c sunrj123 115.159.*.* memTotalSwap.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
    xpleaf@leaf:~$ snmpwalk -v 2c -c sunrj123 115.159.*.* memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
    xpleaf@leaf:~$ snmpwalk -v 2c -c  sunrj123 115.159.*.* .1.3.6.1.4.1.2021.9.1.6.1
    UCD-SNMP-MIB::dskTotal.1 = INTEGER: 8123832
    
        可以看到,测试完全没有问题!并且获取的值和前面有服务器本地得到的一样。
    
        当然,如果你发现还是获取不了的,那么你就需要考虑一下在服务器的主机上防火墙的设置有没有问题了。
    

    七、、Ubuntu系统下 配置snmp v3

    SNMP v3版本主要添加了用户访问权限和加密通讯,下面给出SNMP v3添加用户流程:

    7.1 添加初始用户

    修改SNMP代理程序配置文件vi /etc/snmp/snmpd.conf,在最后一行添加初始用户bootstap

    ...
    createUser bootstrap MD5 temp_password DES
    

    其中认证方式支持:MD5(推荐)、SHA-1,加密方式支持:DES、AES。现在添加了用户初始用户bootstrap,下面步骤中会使用初始用户添加其他用户。添加用户后可以设置用户权限:rwuser读写用户、rouser只读用户。

    ...
    # priv指定用户必须加密传输
    # 可以在用户后面添加OID,限定用户访问指定的OID
    rwuser bootstrap priv
    rwuser demo priv
    

    7.2 使用初始用户添加普通用户

    在3.1节中定义了用户demo,但是没有添加。可以使用snmpusm命令添加

    # -l 指定安全级别,noAuthNoPriv(不认证不加密),authNoPriv(认证不加密),authPriv(认证加密)
    # -a 认证算法
    # -x 加密算法
    # -A 认证密码
    # -X 加密密码
    snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap
    
    snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 create demo bootstrap
    User successfully created.		# 显示添加用户成功
    

    上面命令添加的用户demo认证和加密信息与用户bootstrap相同。可以使用如下命令修改用户认证密码,此密码至少为8位:

    snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password
    
    snmpusm -u demo -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 passwd 12345678 123456789
    SNMPv3 Key(s) successfully changed.
    
    # 删除用户
    snmpusm -u demo -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 delete demo 
    User successfully deleted.
    

    7.3 SNMPv3管理服务访问

    可以使用以下命令访问:

    # -u 指定用户
    # agent_server_ip_address: 代理服务地址和端口
    snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0
    

    以上用户认证加密信息可以更方便地写到/etc/snmp/snmp.conf配置文件中:

    defSecurityName demo
    defSecurityLevel authPriv
    defAuthType MD5
    defPrivType DES
    defAuthPassphrase new_password
    defPrivPassphrase new_password
    
    命令行选项描述转换的 snmp.conf 指令
    -u usernameSNMPv3 用于认证的用户名defSecurityName username
    -l authPriv认证的安全等级defSecurityLevel authPriv
    -a MD5认证协议defAuthType MD5
    -x DES加密协议defPrivType DES
    -A passphrase指定用户的认证密码defAuthPassphrase passphrase
    -X passphrase指定用户的加密密码defPrivPassphrase passphrase

    配置好snmp.conf文件后,可以使用snmpget agent_server_ip_address sysUpTime.0访问SNMPv3代理。

    相关命令:
    –v:指定snmp的版本, 1或者2,该参数必须有。
    –c:指定连接设备SNMPSNMP读团体密码,该参数必须有。
    IP:指定要walk的设备的IP地址,该参数必须有。
    OID:代表要获取设备的指标oid,该参数不是必须的。

    snmpwalk -v 2c -c public localhost ipAddrTable
    
    snmpwalk -v 2c -c public localhost ipNetToMediaTable
    
    snmpwalk -v 2c -c public localhost ifTable
    
    snmpwalk -v 2c -c public localhost ifDescr.1
    
    snmpwalk -v 2c -c public localhost sysDescr
    
    snmpwalk -v 2c -c public localhost  ipNetToMediaPhysAddress.3.192.168.31.212
    
    snmpwalk -v 2c -c public localhost tcpConnState   //获取tcp连接状态
    
    snmpwalk -v 2c -c public localhost tcpConnLocalAddress
    
    snmpwalk -v 2c -c public localhost tcpConnLocalPort
    
    snmpwalk -v 2c -c public192.168.237.50 .1.3.6.1.4.1.2021.10.1.3 #监控cpuload
    snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.25.2.2  取得系统总内存
    snmpwalk -v 2c -c public 10.1.1.1 hrSystemNumUsers  取得系统用户数(注意:hrSystemNumUsers与.1.3.6.1.2.1.25.1.5是等效的)
    snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.4.20    取得IP信息
    snmpwalk -v 2c -c public 10.1.1.1 system   查看系统信息
    snmpwalk -v 2c -c public 10.1.1.1 ifDescr 获取网卡信息
    
    

    snmpwalk 是对应 key值;
    snmpget 是 对应 oid
    snmpwalk是对OID值的遍历(比如某个OID值下面有N个节点,则依次遍历出这N个节点的值。如果对某个叶子节点的OID值做walk,则取得到数据就不正确了,因为它会认为该节点是某些节点的父节点,而对其进行遍历,而实际上该节点已经没有子节点了,那么它会取出与该叶子节点平级的下一个叶子节点的值,而不是当前请求的节子节点的值。)
    snmpget是取具体的OID的值。(适用于OID值是一个叶子节点的情况)
    e.g.
    snmpwalk -v 2c -c 团体名 10.68.133.1 ifInDiscards
    snmpget -v 2c -c 团体名 100.80.32.23 1.3.6.1.2.1.1.5.0

    8、 SNMP Trap

    SNMP Trap 是 SNMP 的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。假如在特定事件出现的时刻,不是由 Agent 主动通知 NMS,那么 NMS 必须不断地对 Agent 进行轮询。这是非常浪费计算资源的方法,正如人们用中断通知 CPU 数据的到达,而不是让 CPU 进行轮询一样。Trap 通知是更加合理的选择。

    用一句话来说的话,SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制trap的作用是,当设备(路由器)的出现问题的时候,可以向服务器传报消息

    实现SNMP Trap的流程
    ◆SNMP Trap接收服务一直在端口162等待着请求,一旦接受任何请求,将发给SNMP Trap翻译。

    ◆通过MIB库的已知设备信息,SNMP Trap将会尽可能翻译Varbind的信息。

    ◆通过可配置的业务规则,可决定如何处理或者丢弃告警。

    ◆把产生的告警展现在事件管理,并且能产生相关的报警,提醒相关IT管理员。

    ◆如果事件与工单有绑定,可以触发相关工单。

    ◆系统管理员也可以通过不同格式的文件,导入新的设备信息进入Mocha BSM的MIB库。

    关键功能亮点

    ◆事件驱动,***时间收到设备故障告警

    ◆提供SNMP Trap的接收,并通过对Trap信息翻译,展现事件

    ◆支持SNMP Trap的接收规则定义,过滤无用Trap信息

    ◆接收来自第三方管理软件SNMP Trap信息,或向第三方管理软件发送Trap信息,达到整合效果

    ◆定制SNMP Trap告警规则触发告警,提供多种方式发送告警信息

    ◆支持事件导出

    ◆支持各类设备厂家MIB库的导入

    snmptrap的发送与接收

    首先是管理方,需要先配置snmptrapd.conf,可以将之放在与snmpd.conf同一个路径下(/etc/snmp/snmptrapd.conf)

    配置snmptrapd.conf:

    # 其中authcommunity是为了设置所有用户的访问权限:可执行,记录,传递。
    # 设置traphandle(即收到.1.3.6.1.4.1.2021.251.1类OID信息时,执行test.pl)。
    authcommunity execute,log,net public
    
    traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl
    
    

    test.pl:

    #!/usr/bin/perl
    
    use strict;
    
    my $file="file.trap";
    
    open(HANDOUT,">>./$file");
    
    while()
    
    {
    
    print HANDOUT "$_";
    
    }
    

    将此配置文件设置为默认配置文件,并启动snmptrapd进程:

    snmptrapd -c /etc/snmp/snmptrapd.conf
    

    监听并接收trap:

    snmptrapd -d -f -Lo
    

    在受管方,使用命令:

    snmptrap -v 2c -c  sunrj123 10.2.2.127:162 "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "this is test"
    

    而后在管理方会接收到如下信息:
    在这里插入图片描述

    团队名:

    团体名:communitystring。缺省是public,但一般为了安全起见,设备管理者都会改成自己的,相当于密码,用户不可能看到。

    Trap的发送与接收java实现

    package com.koal.service.alert;
    
    import org.snmp4j.*;
    import org.snmp4j.event.ResponseEvent;
    import org.snmp4j.mp.SnmpConstants;
    import org.snmp4j.smi.Address;
    import org.snmp4j.smi.GenericAddress;
    import org.snmp4j.smi.OctetString;
    import org.snmp4j.smi.VariableBinding;
    import org.snmp4j.transport.DefaultUdpTransportMapping;
    
    import java.io.IOException;
    
    /**
     * 本类用于发送Trap信息
     *
     */
    public class SnmpUtil {
    
        private Snmp snmp = null;
    
        private Address targetAddress = null;
    
        private TransportMapping transport = null;
    
    
        public static void main(String[] args) {
    
            SnmpUtil poc = new SnmpUtil();
    
            try {
                poc.init();
    
                //poc.sendV1Trap();
    
                poc.sendV2cTrap();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        public void init() throws IOException {
            //目标主机的ip地址 和 端口号
            targetAddress = GenericAddress.parse("udp:127.0.0.1/162");
            transport = new DefaultUdpTransportMapping();
            snmp = new Snmp(transport);
            transport.listen();
        }
    
    
        public ResponseEvent sendV1Trap() throws IOException {
            PDUv1 pdu = new PDUv1();
            VariableBinding v = new VariableBinding();
            v.setOid(SnmpConstants.sysName);
            v.setVariable(new OctetString("SnmpV1 Trap  Test"));
            pdu.add(v);
            pdu.setType(PDU.V1TRAP);
    
            // set target
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString("public"));
            target.setAddress(targetAddress);
            // retry times when commuication error
            target.setRetries(2);
            // timeout
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version1);
            // send pdu, return response
            return snmp.send(pdu, target);
        }
    
        public ResponseEvent sendV2cTrap() throws IOException {
    
            PDU pdu = new PDU();
            VariableBinding v = new VariableBinding();
            v.setOid(SnmpConstants.sysName);
            v.setVariable(new OctetString("SnmpV2 Trap"));
            pdu.add(v);
            pdu.setType(PDU.TRAP);
    
            // set target
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString("koal123"));
            target.setAddress(targetAddress);
    
            // retry times when commuication error
            target.setRetries(2);
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version2c);
            // send pdu, return response
            return snmp.send(pdu, target);
    
        }
    
    }
    

    参考文章:https://blog.csdn.net/weixin_42551921/article/details/117479344

    展开全文
  • linux snmptrap的发送与接收

    千次阅读 2021-05-09 08:31:00
    linux snmptrap的发送与接收由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。此类指标为业务指标,是必须了解的一些参数,另需要有告警指标...
  • 我正在尝试从命令行发送带有snmptrap的snmp消息,并且手册不是很清楚。我已成功发送示例消息(10.0.0.1 ==我将消息发送到的地方)snmptrap -v 1 -c private 10.0.0.1 ...
  • SNMP Trap (V1,V2, V3)总结

    千次阅读 2021-09-27 22:02:04
    SNMPv1/SNMPv2 trap 配置以及发送 接收Trap端: ...2. 用命令【snmptrapd -f -Lo】 监听并接收trap ...snmptrap -v 2c -c public {接收端IP} "" 1.3.6.1.4.1.111.115.1.1 SNMPv2-MIB::sysLocation..
  • linux系统服务器配置snmptrap步骤

    千次阅读 2020-07-31 11:06:14
    配置snmptrap vi /etc/snmp/snmptrap.conf,在文件最后添加如下 agentAddress udp:127.0.0.1:161 view systemonly included .1.3.6.1.2.1.1 view systemonly included .1.3.6.1.2.1.25.1 rocommunity csg-tsgz991 ...
  • snmptrap使用

    2019-10-08 16:36:54
    SNMP简单网络管理协议,其中其支持的一个命令snmptrap命令,用于模拟向管理机发送trap消息。 启动陷阱方法: snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lf /var/log/net-snmptrap.log 例如: snmptrap -...
  • 什么是snmpwalk snmpwalk是一个SNMP小程序,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。 以下是原英文解释: snmpwalk is an SNMP application ...
  • SNMP TRAP实战

    千次阅读 2020-09-07 16:42:44
    一、什么是SNMPTRAP SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。在网管系统中,被管理设备中的代理可以在任何时候向网络管理工作站报告错误...
  • snmptrap的使用方法

    万次阅读 2016-03-16 10:53:39
    SNMPTRAP格式snmptrap enterpriseOID(generic OID) OID(subOID) type valueThe TYPE is a single character, one of: i INTEGER u UNSIGNED c COUNTER32
  • SNMP Trap调试记录

    2019-12-25 16:20:35
    四、SNMP中预定义的trap 一、Trap与Inform SNMP Inform Requests功能允许路由器向SNMP管理器发送通知请求。 路由器可以在发生特定事件时向SNMP管理器发送通知。例如,代理路由器可能在自身遇到错误情况时向管理...
  • net-snmp学习笔记- trap

    2021-04-22 00:58:27
    2、manage端A, 配置snmptrapd.conf文件,设置访问权限B, 将mib导入到mibs文件夹中C, 用perl等脚本语言编写处理trap的程序D, 配置snmptrapd.conf文件,添加...包括snmp1和snmp2两种trapSnmp1的mib:TRAP-TEST-M...
  • SNMPSNMP Trap 测试接收端环境的配置
  • 请先确保代理端(被监控设备)已配置snmp,并可正常实现用SNMP协议以实现系统信息监控。 1、下载:管理端net-snmp 2、安装:使用默认路径就行,我的是默认装在C:\usr\路径下 3、配置:snmptrapd.conf文件 注:配置...
  • SNMPTRAP

    千次阅读 2019-04-24 18:55:57
    SNMP协议是用来管理设备的协议,目前SNMP已成为网络管理领域中事实上的工业...但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpget来进行,而是由受管服务器通过SNMPTRAP进行。...
  • snmp trap的162端口down解决方法

    千次阅读 2020-06-16 13:58:58
    电脑是WIN10的系统,进行snmp trap的测试发现,162端口down掉了 1.cmd打开命令提示符窗口 查看UDP端口占用用命令netstat-ano,发现没有162的端口被占用 2.service里没有看到snmp安装 1)打开设置中的[开发人员...
  • snmp trap日志

    千次阅读 2020-12-01 17:48:01
    日志类型有三种,file,syslog和snmp trap snmptrapd.conf 文件内容及参数 snmptrapd手册:http://www.net-snmp.org/docs/man/snmptrapd.conf.html,http://www.net-snmp.org/wiki/index.php/Snmptrapd 中文翻译...
  • snmp trap配置

    万次阅读 2016-12-23 12:03:11
    一、trap的用途 TRAP是提供从代理进程到管理站的异步报告机制。 为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要...
  • 参考下述典型案例:# 配置Agent的IP地址为1.1.1.1/24,并确保Agent与NMS之间路由可达。(配置步骤略)# 设置Agent... system-view[Agent] snmp-agent sys-info version v1[Agent] snmp-agent community read public...
  • 一、SNMP概述: 简单的网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。 目前有SNMPv1、SNMPv2、SNMPv3三种正式版本 ...
  • snmp trap发送及接收

    万次阅读 2014-09-12 22:30:33
    在进行winsnmp及其它api进行snmp开发时,基本上都会有一个接收trap的功能
  • SNMP中snmptrap的用法

    2020-12-19 23:42:24
    SNMP简单网络管理协议,其中其支持的一个命令snmptrap命令,用于模拟向管理机发送trap消息。启动陷阱方法:snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lf /var/log/net-snmptrap.log例如:snmptrap -v1 -c public ...
  • 采集技术比较 网络管理中常用来采集日志数据的方式包括文本方式采集、SNMP Trap方式采集和syslog方式采集,另外,其他采集方式,如Telnet 采集(远程控制命令采集)、串口采集等。我们如何选用比较合适的技术方式进行...
  • yum 安装snmp(前提本机虚拟机能连网) 先查看本机是否安装snmp rpm -qa|grep snmp 如果存在自带的,可以删掉 yum -y remove xxx(xxx代表rpm查到的软件包) 安装 yum -y install net-snmp-* (安装所有) 启动 ...
  • 1.登录被监控的设备的管理系统,配置snmptrap地址指向zabbix服务器或代理服务器。 snmptrap地址也叫陷阱。 2.配置或关闭防火墙,并验证是否能在zabbix服务器或代理服务器上收到设备的trap信息。2.1 旧版防火墙开放...
  • Logstash_input_snmptrap:被动采集方式,安全设备通过snmp发送日志过来,被动采集 关键字 团体名(communitystring):对于客户端相当于密码,默认为public,需要自行需改。 OID(对象标识符),是SNMP代理提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,427
精华内容 2,170
关键字:

snmptrap命令