SNMP Trap调试记录[通俗易懂]

SNMP Trap调试记录[通俗易懂]目录一、Trap与Inform二、Trap1、Agent端工作流程2、Manager端工作流程3、流程图三、调试四、SNMP中预定义的trap一、Trap与InformSNMPInformRequests功能允许路由器向SNMP管理器发送通知请求。路由器可以在发生特定事件时向SNMP管理器发送通知。例如,代理路由器可能在自身遇到错误情况时向管理器发…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

一、Trap与Inform

二、Trap

1、Agent端工作流程

2、Manager端工作流程

3、流程图

三、调试

四、SNMP中预定义的trap


 


一、Trap与Inform

SNMP Inform Requests功能允许路由器向SNMP管理器发送通知请求。

路由器可以在发生特定事件时向SNMP管理器发送通知。例如,代理路由器可能在自身遇到错误情况时向管理器发送消息。通知有两种格式:Trap和Inform。

Trap是不可靠的,因为接收器在收到Trap时不发送任何确认。发件人无法确定是否收到了Trap。但是,接收Inform请求的SNMP代理使用SNMP response PDU确认该消息。如果代理未收到Inform请求,则不会发送回复。如果发送方从未收到响应,则可以再次发送Inform请求。因此,Inform更有可能到达其预期目的地。

因为它们更可靠,所以Inform在路由器和网络中消耗更多资源。与Trap一起发送时丢弃的Trap不同,必须在内存中保留Inform请求,直到收到响应或请求超时。此外,Trap仅发送一次,而Inform可能会重试几次。重试会增加流量并导致网络上的开销增加。因此,Trap和Inform请求提供了可靠性和资源之间的权衡。如果SNMP管理器收到每个通知很重要,请使用Inform请求。另一方面,如果您担心网络上的流量或路由器中的内存,并且您不需要接收每个通知,请使用Trap。

二、Trap

SNMP Trap是SNMP的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。通过告警事件,管理站可以通过定义好的方法来处理告警。

1、Agent端工作流程

①编写MIB文件,确定好TRAP名称等信息(一般MIB设备厂商会提供)

②命令方式:发送各种TRAP命令(Manager地址后面一定要加端口号162),在Manager端看反应结果,在Agent端无反应

③自动触发:配置snmpd.conf设置触发TRAP,系统发生某类错误时会自动触发相应类型的TRAP,发送给Manager

④程序方式:一部份TRAP需要写C语言程序,用相应的api(send_easy_trap或send_v2trap)发送

2、Manager端工作流程

①配置snmptrapd.conf文件,设置访问权限

②将MIB文件导入到mibs文件夹中

③用perl等脚本语言编写处理trap的程序

④配置snmptrapd.conf文件,添加traphandler项,将不同的TRAP对应到不同的处理程序上

3、流程图

SNMP Trap调试记录[通俗易懂]

图中在测试机 M1 上启动 snmptrapd 进程,并且在 UDP 162 端口上监听 SNMP Trap 信息,一旦收到 Trap,snmptrapd 将所接收到的 Trap 信息内容打印到一个本地的文本文件中。 机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。

三、调试

snmptrapd安装路径:/usr/local/sbin/snmptrapd

其配置文件路径:/usr/local/sbin/snmptrapd.conf

添加如下配置文件内容:

authCommunity log,execute,net public

上面语句指明以“public”为“community”请求的snmp “notification”允许的操作。上面添加的是比较简单的配置,但可使snmptrapd程序运行起来并正确接收trap包。

服务器运行:

sudo snmptrapd -d -f -Lo

SNMP Trap调试记录[通俗易懂]

上面命令中的选项表示:

-C:表示不使用net-snmp默认路径下的配置文件snmptrapd.conf;

-c:指定snmptrapd.conf文件;

-d:显示收到和发送的数据报,通过这个选项可以看到数据报文;

-f:默认情况下,snmptrapd是在后台中运行的,加上这个选项,表示在前台运行;

-L:指定日志记录在哪里,后面的o表示直接输出到屏幕上,如果是跟着f表示日志记录到指定的文件中;

可通过snmptrapd -h查看命令帮助了解该命令的使用。

客户端运行:

sudo snmptrap -v1 -c public [管理端IP] 1.3.6.1.4.1.1  [代理端IP]  2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s test_snmptrap

各参数含义:

SNMP Trap调试记录[通俗易懂]

snmptrapd和snmptrap都在虚拟Ubuntu中执行的,所以snmp管理端IP和snmp代理IP一样。执行后,在执行snmptrapd的窗口中可接收到数据,如下:

Received 82 byte packet from UDP: [192.168.11.129]:38271->[192.168.11.129]:162

0000: 30 50 02 01  00 04 06 70  75 62 6C 69  63 A4 43 06    0P.....public.C.

0016: 06 2B 06 01  04 01 01 40  04 C0 A8 0B  81 02 01 02    .+.....@........

0032: 02 01 03 43  02 03 E8 30  29 30 0E 06  09 2B 06 01    ...C...0)0...+..

0048: 09 09 2C 01  02 01 02 01  0C 30 17 06  06 2B 04 01    ..,......0...+..

0064: 02 03 01 04  0D 74 65 73  74 5F 73 6E  6D 70 74 72    .....test_snmptr

0080: 61 70                                                 ap



2019-05-22 10:49:36 61 [192.168.11.129] (via UDP: [192.168.11.129]:38271->[192.168.11.129]:162) TRAP, SNMP v1, community public

SNMPv2-SMI::enterprises.1 Link Down Trap (3) Uptime: 0:00:10.00

SNMPv2-SMI::internet.9.9.44.1.2.1 = INTEGER: 12 SNMPv2-SMI::org.4.1.2.3.1 = STRING: "test_snmptrap"

SNMP Trap调试记录[通俗易懂]

上线:

SNMP Trap调试记录[通俗易懂]

下线(服务器端):

SNMP Trap调试记录[通俗易懂]

上线(代理端):

SNMP Trap调试记录[通俗易懂]

上线(服务器端):

SNMP Trap调试记录[通俗易懂]

测试(服务器端):

SNMP Trap调试记录[通俗易懂]

四、SNMP中预定义的trap

snmp协议中定义了6种基本的trap,这6种trap可以涵盖大部分设备的主要状态改变,与企业自定义trap配合使用,就可以处理几乎所有的重要状态改变情况。

(1).coldStart:snmp发送实体正在重新初始化,以修改代理的配置或协议实例的实现,特别是由于崩溃或重大故障而引起的意外重启。

(2).warmStart:发送实体正在重新初始化,但不修改代理的配置或协议实例的实现。

(3).linkDown:表示代理的一个通信连接失败。

(4).linkUP:表示代理的一个通信连接成功。

(5).authenticationFailure:表示发送方的snmp消息检验失败

(6).egpNeighborLoss:表示发送协议实体的EGP邻居已被标记为Down,相邻关系已经不存在。

 企业专用trap:snmp定义的6个trap可以涵盖大部分的情况,但是很多情况下设备有自己特殊的状态,企业也希望发送或接收自己定义的trap以得到特殊的消息。使用trap定义宏就可以定义企业自己的trap。企业设备发送自定义trap时,必须同时定义trap的MIB一起分发出去,否则,其他管理站不能识别自定义trap的格式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171354.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • USB协议简介「建议收藏」

    USB协议简介「建议收藏」1.USB协议简介https://blog.csdn.net/songze_lee/article/details/776580942017年08月28日23:20:16songze_lee阅读数:22978版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/songze_lee/article/details/77658094…

    2022年6月25日
    24
  • ASP.NET_.NET

    ASP.NET_.NET我们在《ASP.NETCore项目实战的课程》第一章里面给identityserver4做了一个全面的介绍和示例的练习。如果想完全理解本文所涉及到的话题,你需要了解的背景知识有:什么是OpenIdConnect(OIDC)OIDC对oAuth进行了哪些扩展?IdentityServer4提供的OIDC认证服务(服务端)ASP.NETCore的权限体系中的OIDC认证框架(客户端)什

    2022年10月20日
    0
  • 心脏与阴影,求阴影部分

    心脏与阴影,求阴影部分

    2022年1月9日
    42
  • 用激活码怎么永久激活idea_一键无痕视频教程

    用激活码怎么永久激活idea_一键无痕视频教程Idea激活码最新破解教程,Mac版激活至2299年,Idea激活码2021.3.3

    2022年4月20日
    261
  • Nexus 3的搭建和简单使用介绍

    搭建Nexus 3私服一、简介nexus 私服间于本地仓库和中央仓库直接。1、有两种安装方式:使用tomcat启动,Tgz使用自带的Jetty启动 ,zip包(推荐使用)2、下载地址 : Nexus oss3、环境准备: jdk8+ + maven3+二、安装步骤1、windos上安装– nexus 2.x 版本1、将bin添加到环境变量中,nexus2、修改/bin…

    2022年2月27日
    50
  • 返回值是函数_void函数怎么用

    返回值是函数_void函数怎么用通常,希望通过函数使主调函数得到一个确定的值,这就是函数的返回值。说明:1、函数的返回值是通过函数的return语句获得的。(1)return语句将被调函数中的一个确定值带回主调函数中去。(2)

    2022年8月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号