네트워크 장비 모니터링을 위한 SNMP
Simple Network Management Protocol

개요

주로 네트워크 장비의 Metric을 확인하는 모니터링 용도로 사용하지만, SNMP를 지원하는 컴퓨팅 머신이라면 모두 활용할 수 있다.

전제 조건

  • IP 네트워크 환경이 있다.
  • 관리용 서버(SNMP 서버)가 있다.
  • SNMP 프로토콜을 지원하는 기기다.

구성 요소

  • 매니저 (SNMP 서버)
    • 네트워크 감시 장치(서버)에 설치해서 사용하는 소프트웨어
  • 에이전트 (네트워크 기기/서버)
    • 네트워크 기기나 서버가 가진 기기의 상태 정보를 통보하는 기능
  • SNMP 프로토콜 (TCP/IP)
    • UDP 패킷에 실어서 주고받으며, 포트 번호는 161(SNMP), 162(TRAP)를 사용함.
  • MIB (Management Information Base)
    • SNMP로 관리되는 네트워크 기기나 서버가 자신의 상태를 외부에 알리기 위해서 공개하는 관리 정보.
    • RFC 1156으로 규정된 MIB1, RFC 1213으로 규정된 MIB2
    • MIB를 지원하는 기기에 일반적으로 포함된 표준 MIB와 기기 제조사마다 사양이 다른 사설(Private) MIB가 있다.
    • MIB의 구조는 트리 구조이며, 트리 구조의 마디(노드)는 번호를 붙여서 나타낸다. 이 번호열을 OID(Object ID)라고 한다.

매니저-에이전트 역할

  • 정보의 요청과 응답
    • 매니저가 에이전트에게 대상 기기의 정보를 요청 → 에이전트는 정보를 매니저에게 응답
  • 설정의 요청과 응답
    • 매니저가 에이전트에게 대상 기기의 설정 변경을 요청 → 에이전트는 설정을 변경하며 그 결과를 매니저에게 응답
  • 상태 변화의 통보
    • 에이전트가 매니저에게 대상 기기의 상태 변화를 통보

매니저-에이전트 통신 방식

  • 폴링 (Polling)
    • 매니저가 정기적으로 에이전트로부터 관리 정보를 추출
  • 트랩 (Trap)
    • 에이전트인 라우터나 스위치가 자신의 상태에 어떤 변화가 발생했을 때(장애 발생 등) 자발적으로 매니저인 SNMP 서버에게 정보를 통보

커뮤니티 이름

  • 매니저와 에이전트는 커뮤니티 이름으로 그룹화한다.
  • 매니저와 에이전트는 커뮤니티 이름이 같을 때만 통신한다.

버전별 차이

v1

  • 커뮤니티 이름이 포함된 패킷을 평문으로 전달함.
  • 기본적인 관리 정보 베이스(MIB)와 트랩 메시지를 사용함.

v2

  • 커뮤니티 이름이 포함된 패킷을 암호화해서 전달함.
  • 추가된 PDU 타입(예: GetBulkRequest)을 통해 대량의 데이터를 한 번에 전송할 수 있음.

v2c

  • 커뮤니티 값을 암호화하여 전달하는 것이 복잡해서 v1처럼 평문으로 전달하도록 원복함.

v3

  • (username, password) 인증 기능이 추가됨.
  • 이 외 다양한 보안 기능 추가됨.

관련 명령어 도구

snmpget

정확한 OID를 입력해야 해서 난 잘 사용하지 않음.

snmpget -v2c -l NoAuthNoPriv -c Auto_Wini3 61.111.18.165:161 1.3.6.1.2.1.1.1.0 
# output
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(58)SE2, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2011 by Cisco Systems, Inc.
Compiled Thu 21-Jul-11 02:13 by prod_rel_team"

snmpwalk

snmpwalk -v2c -l NoAuthNoPriv -c public <ip_address>:<port> [OID]
  • 도움말
    • -h : help
    • -H : 사용 가능한 옵션
  • -v : SNMP 버전 (1 | 2c | 3)
  • -l : security level (noAuthNoPriv | authNoPriv | authPriv)
  • -c : the community string
snmpwalk -v2c -l NoAuthNoPriv -c Auto_Wini3 61.111.18.165:161 1.3.6.1.2.1.1

MIB-2 OID (Object ID)

OID Tree

SNMP Explained: What You Must Know About Monitoring via MIB and OIDs

ex: 1.3.6.1.2.1 분해

1.3.6.1.2.1.1 system

ID Object Description Link
1.3.6.1.2.1.1.1 sysDescr System Description oidref
1.3.6.1.2.1.1.2 sysObjectID
1.3.6.1.2.1.1.3 sysUpTime
1.3.6.1.2.1.1.4 sysContact
1.3.6.1.2.1.1.5 sysName oidref
1.3.6.1.2.1.1.6 sysLocation
1.3.6.1.2.1.1.7 sysServices oidref

1.3.6.1.2.1.2 interfaces

ID Object Description Link
1.3.6.1.2.1.2.2.1.2 ifDescr Interface Description oidref
1.3.6.1.2.1.2.2.1.4 ifMtu oidref
1.3.6.1.2.1.2.2.1.5 ifSpeed oidref
1.3.6.1.2.1.2.2.1.10 ifInOctets oidref

1.3.6.1.2.1.3 at - Address Translation

ID Object Description Link
1.3.6.1.2.1.3 at Address translation oidref

1.3.6.1.2.1.4 ip - Internet Protocol

ID Object Description Link
1.3.6.1.2.1.4.22 ipNetToMediaTable SEQUENCE OF IpNetToMediaEntry oidref

1.3.6.1.2.1.31 ifMIB

ID Object Description Link
1.3.6.1.2.1.31.1 ifMIBObjects
1.3.6.1.2.1.31.1.1 ifXTable
1.3.6.1.2.1.31.1.1.1 ifXEntry
1.3.6.1.2.1.31.1.1.1.6 ifHCInOctets 인터페이스의 입력 바이트 수 CNRS. 데이터독에선 ifBandwidthInUsage라는 별칭을 씀.
1.3.6.1.2.1.31.1.1.1.10 ifHCOutOctets 인터페이스의 출력 바이트 수 CNRS. 데이터독에선 ifBandwidthOutUsage라는 별칭을 씀.

참조


최종 수정: 2024-07-23