目錄

簡介

必要條件

需求

採用元件

背景資訊

基本步驟

組態

驗證

簡介

本文檔介紹如何在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的必要性。

雖然排除OID通常在聚合服務路由器(ASR)/Catalyst交換機(CAT)/整合服務路由器(ISR)等裝置中追求簡單流程，但由於缺少檢視，在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}允許您在「讀取」和「讀取/寫入」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 ~]#