简介
本文档介绍如何在SNMP v2和v3配置中排除Nexus 5k、7k和9K中的OID。
先决条件
要求
思科建议您在实施对象标识符(OID)排除之前了解以下主题:
- 熟悉简单网络管理协议(SNMP)
- 访问设备配置模式
- 了解要排除的OID
- 了解SNMP社区和用户配置
使用的组件
本文档中的信息基于对以下Nexus型号的实验室测试:
- Nexus 5k
- Nexus 7k
- Nexus 9k
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
在SNMP的世界中,您经常遇到管理信息库(MIB)树解析遇到障碍的情况,在特定OID处停滞有时会导致窗口超时或类似问题。当持续轮询故障的OID触发既不必要也不具影响的警报时,就会出现另一个常见问题。摆脱这些类型的场景的一种可能方法是创建例外项,指示设备跳过该特定OID并继续执行MIB结构的其余部分。通过引导设备绕过故障的OID并继续执行MIB结构的其余部分,您可以促进MIB树的顺利流动。
注意:请务必注意,此排除项会影响我们从MIB树中读取数据的方式。在继续这些排除之前,请谨慎并确保必须使用OID。
在聚合服务路由器(ASR)/Catalyst交换机(CAT)/集成服务路由器(ISR)等设备中,排除OID通常遵循简单流程,但是在Nexus设备中克服这一挑战因缺少视图而显得更为复杂。本文引入角色并将其映射到社区/用户,从而深入探讨了一种创新方法,提出了在Nexus 5k、7k和9K设备上的SNMP v2和v3配置中排除OID的解决方案。
基本步骤
访问配置模式:
#conf t
定义OID排除的作用:
#role name <name_of_role>
#rule 1 permit read feature snmp
#rule 2 deny {read/ read-write} oid <oid_you_want_to_exclude>
提示:{read/ read-write}允许您在“read”和“read-write”SNMP操作之间进行选择。“读取”操作通常涉及检索信息,而“读写”操作涉及检索和修改信息。您可以根据自己的喜好选择读/写。
退出配置模式:
#exit
将配置应用到SNMP社区/用户。
对于SNMPv2:
#snmp-server community <name_of_community_you_want_to_map> group <name_of_role>
对于SNMPv3:
#snmp-server user <user_to_map_with> <name_of_role> auth {sha/md5} <authentication_password> priv {aes/des} <priv_password>
配置
注意:本示例包括对OID 1.3.6.1.2.1.2.2.1.3 (ifType)的排除。确保将ifType OID替换为要排除的OID。
定义要排除OID ifType的角色:
switch#
switch# config t
Enter configuration commands, one per line. End with CNTL/Z.
switch(config)# role name deny_oid
switch(config-role)# rule 1 permit read feature snmp
switch(config-role)# rule 2 deny read oid 1.3.6.1.2.1.2.2.1.3
switch(config-role)# exit
switch(config)# exit
switch# sh role name deny_oid
Role: deny_oid
Description: new role
Vlan policy: permit (default)
Interface policy: permit (default)
Vrf policy: permit (default)
-------------------------------------------------------------------
Rule Perm Type Scope Entity
-------------------------------------------------------------------
2 deny read oid 1.3.6.1.2.1.2.2.1.3
1 permit read feature snmp
switch#
创建具有deny_oid角色的SNMPv2社区:
switch(config)# snmp-server community snmpv2user group deny_oid switch(config)# exit switch# sh snmp community Community Group / Access context acl_filter _________ ______________ _______ __________ snmpv2user deny_oid switch#
正在创建具有deny_oid角色的SNMPv3用户:
switch# config t Enter configuration commands, one per line. End with CNTL/Z. switch(config)# snmp-server user snmpv3user deny_oid auth sha password!123 priv ? WORD Privacy password for user (Max Size 134) switch(config)# snmp-server user snmpv3user deny_oid auth sha password!123 priv password!123 switch(config)# do sh snmp user ______________________________________________________________ SNMP USERS ______________________________________________________________ User Auth Priv(enforce) Groups acl_filter ____ ____ _____________ ______ __________ admin md5 aes-128(no) network-admin snmpv3user sha aes-128(no) deny_oid ______________________________________________________________ NOTIFICATION TARGET USERS (configured for sending V3 Inform) ______________________________________________________________ User Auth Priv ___ ____ ____ switch(config)#
确认
注意:测试用户“trial”用于检查ifType OID的轮询。其余用户已使用deny_oid角色进行映射,并且未显示ifType OID的任何数据,如下所示。
无排除的SNMPwalk:
注意:在整个文章中,a.b.c.d用于代替设备的IP地址。
[root@user ~]# snmpwalk -v2c -c trial a.b.c.d 1.3.6.1.2.1.2.2.1.3 IF-MIB::ifType.83886080 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436207616 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436208128 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436208640 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436209152 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436209664 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436210176 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436210688 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436211200 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436211712 = INTEGER: ethernetCsmacd(6) ^C
具有已排除OID的SNMPv2的SNMPwalk:
[root@user ~]# snmpwalk -v2c -c snmpv2user a.b.c.d 1.3.6.1.2.1.2.2.1.3 IF-MIB::ifType = No Such Object available on this agent at this OID
注意:创建了新用户“trialv3”来演示不排除OID的轮询。
不排除OID的SNMPwalk:
[root@user ~]# snmpwalk -v3 -u trialv3 -l authPriv -a sha -A 'password!123' -x aes -X 'password!123' a.b.c.d 1.3.6.1.2.1.2.2.1.3 IF-MIB::ifType.83886080 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436207616 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436208128 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436208640 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436209152 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436209664 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436210176 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436210688 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436211200 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436211712 = INTEGER: ethernetCsmacd(6) IF-MIB::ifType.436212224 = INTEGER: ethernetCsmacd(6) ^C [root@user ~]#
具有已排除OID的SNMPv3用户的SNMPwalk:
[root@user ~]# snmpwalk -v3 -u snmpv3user -l authPriv -a sha -A 'password!123' -x aes -X 'password!123' a.b.c.d 1.3.6.1.2.1.2.2.1.3 IF-MIB::ifType = No Such Object available on this agent at this OID [root@user ~]#