소개
이 문서에서는 SNMP v2 및 v3 컨피그레이션에서 Nexus 5k, 7k 및 9K의 OID를 제외하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
OID(Object Identifier) 제외를 구현하기 전에 다음 주제에 대해 알고 있는 것이 좋습니다.
- SNMP(Simple Network Management Protocol)에 익숙함
- 디바이스 컨피그레이션 모드에 액세스
- 제외할 OID 이해
- SNMP 커뮤니티 및 사용자 컨피그레이션 이해
사용되는 구성 요소
이 문서의 정보는 다음과 같은 Nexus 모델에 대한 랩 테스트를 기반으로 합니다.
- Nexus 5k
- Nexus 7k
- Nexus 9k
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
SNMP 환경에서는 MIB(Management Information Base) 트리의 구문 분석이 장애에 직면하여 특정 OID에서 정지하는 상황이 종종 발생하여 윈도우 시간 초과 또는 유사한 문제가 발생할 수 있습니다. 또 다른 일반적인 문제는 문제가 많은 OID에 대한 지속적인 폴링이 필요하지 않거나 영향이 없는 알림을 트리거할 때 발생합니다. 이러한 종류의 시나리오를 제거하는 한 가지 가능한 방법은 제외를 생성하여 디바이스에서 특정 OID를 건너뛰고 나머지 MIB 구조를 진행하도록 지시하는 것입니다. 문제가 있는 OID를 우회하고 MIB 구조의 나머지를 진행하도록 디바이스를 지정하여 MIB 트리의 원활한 흐름을 구성할 수 있습니다.
참고: 이 제외는 MIB 트리에서 데이터를 읽는 방법에 영향을 줄 수 있습니다. 이러한 제외를 진행하기 전에 주의하고 OID의 필요성을 확인하십시오.
OID를 제외할 경우 일반적으로 ASR(Aggregation Services Router)/CAT(Catalyst switch)/ISR(Integrated Service Router)과 같은 디바이스에서 간단한 프로세스가 필요하지만, 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#
역할로 SNMPv2 커뮤니티 deny_oid 생성:
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)#
확인
참고: ifType OID의 폴링을 확인하기 위해 테스트 사용자 'trial'을 사용했습니다. 나머지 사용자는 deny_oid 역할로 매핑되었으며 그림과 같이 ifType OID에 대한 데이터가 표시되지 않았습니다.
제외 없는 SNMPwalk:
참고: 기사 전체에서 장치의 IP 주소 대신 a.b.c.d가 사용됩니다.
[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
참고: OID를 제외하지 않고 폴링을 설명하기 위해 새 사용자 'trialv3'이 생성되었습니다.
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 ~]#