본문 바로가기

Compute

Overview of SNMP

SNMP 기본 내용

  • 네트워크 환경에서 장비들의 주요 성능과 기능을 모니터링
  • 장비의 문제 발생 시 또는 특이점을 전달
  • 이를 위해서 SNMP 프로토콜 개발
  • SNMP Manager는 정보를 수집하는 주체
  • SNMP Agent는 정보를 제공하는 주체

Simple Network Management Protocol - Wikipedia

 

SNMP 버전

SNMPv1

  • 평문 값으로 Community String을 이용하여, SNMP Manager와 Agent간 인증
  • 대량의 정보 수집 불가

 

SNMPv2

  • 보안 취약점을 개선하기 위해 Community String 값을 암호화하여 전송
  • 대량 정보 수집 기능 추가

 

SNMPv2c

  • SNMPv2의 Community String 값을 암호화하여 전송하는 방식이 너무 복잡하여 다시 Community String을 평문으로 전송하는 방식 채용

 

SNMPv3

  • Community String 대신 Username과 Password를 제공하는 방식으로 변경
  • Password는 암호화 알고리즘으로 암호화 된 값과 Hash 알고리즘으로 생성한 인증 값 2가지로 구성

 

SNMP Message

Get은 장비로부터 정보 조회

  • GetRequest
  • GetResponse
  • GetNextRequest : SNMPv2에서 추가된 대량 정보 조회를 위해 사용
  • GetNextResponse

 

Set은 장비 정보 변경

 

Trap은 Agent에서 문제 발생 시 Manager로 전송할 때 사용

 

Get과 Set은 161/udp 를 사용하며, Trap은 12/udp 사용

 

Ojbect ID(OID)

  • SNMP에서는 장비의 기능과 설정 사항을 OID 값을 통해서 구별
  • 예를 들어, 장비의 CPU 사용률 중 1분, 5분 사용률은 서로 다른 OID 값으로 제공
  • Vendor 별로 사용하는 OID는 Private OID
  • 공통으로 사용하는 OID는 Public OID

 

Management Information Base(MIB)

MIB는 OID를 모아놓은 파일

Vendor마다 다양한 OID를 소유하고 이를 SNMP Manager에게 제공하여 추가 관제를 가능토록 함

 

MIB Browser(https://www.ireasoning.com/mibbrowser.shtml)를 이용하여 조회 가능

아래 예제에서는 SNMP Manager에서 snmpwalk -m ALL -c public -v 2c 192.168.1.100 IF-MIB::ifDescr 를 통해 아래 결과를 조회한 것과 MIB Browser를 조회한 결과가 동일한 것을 확인

[root@localhost mibs]# snmpwalk -m ALL -c public -v 2c 192.168.1.100 IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: Device vmnic0 at 25:00.0 ixgben
IF-MIB::ifDescr.2 = STRING: Device vmnic1 at 25:00.1 ixgben
IF-MIB::ifDescr.3 = STRING: Device vmnic2 at 26:00.0 ixgben
IF-MIB::ifDescr.4 = STRING: Device vmnic3 at 26:00.1 ixgben
IF-MIB::ifDescr.5 = STRING: Device vusb0 at 00:00.0 cdce
IF-MIB::ifDescr.6 = STRING: Traditional Virtual VMware switch: vSwitch0
IF-MIB::ifDescr.7 = STRING: Traditional Virtual VMware switch: vSwitch1
IF-MIB::ifDescr.8 = STRING: Virtual interface: vmk0 on vswitch vSwitch0 portgroup: Management Network
IF-MIB::ifDescr.9 = STRING: Virtual interface: vmk1 on vswitch vSwitch1 portgroup: Mgmt2

 

 

추가로 SNMP Manager에서 위 결과 조회 시 수집한 Packet을 보면, 실제로 SNMP Message 중 Get Message를 확인할 수가 있습니다.

SNMP Manager가 192.168.1.41, SNMP Agent는 192.168.1.100 입니다.

358        4.549011        192.168.1.41        192.168.1.100        SNMP        86        get-next-request 1.3.6.1.2.1.2.2.1.2
361        4.551151        192.168.1.100        192.168.1.41        SNMP        118        get-response 1.3.6.1.2.1.2.2.1.2.1
362        4.551228        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.1
364        4.551357        192.168.1.100        192.168.1.41        SNMP        118        get-response 1.3.6.1.2.1.2.2.1.2.2
365        4.551387        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.2
368        4.551489        192.168.1.100        192.168.1.41        SNMP        118        get-response 1.3.6.1.2.1.2.2.1.2.3
369        4.551515        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.3
372        4.551647        192.168.1.100        192.168.1.41        SNMP        118        get-response 1.3.6.1.2.1.2.2.1.2.4
373        4.551671        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.4
375        4.551762        192.168.1.100        192.168.1.41        SNMP        115        get-response 1.3.6.1.2.1.2.2.1.2.5
376        4.551786        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.5
378        4.551880        192.168.1.100        192.168.1.41        SNMP        130        get-response 1.3.6.1.2.1.2.2.1.2.6
380        4.551903        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.6
382        4.551989        192.168.1.100        192.168.1.41        SNMP        130        get-response 1.3.6.1.2.1.2.2.1.2.7
383        4.552012        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.7
385        4.552103        192.168.1.100        192.168.1.41        SNMP        160        get-response 1.3.6.1.2.1.2.2.1.2.8
386        4.552126        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.8
389        4.552235        192.168.1.100        192.168.1.41        SNMP        147        get-response 1.3.6.1.2.1.2.2.1.2.9
390        4.552259        192.168.1.41        192.168.1.100        SNMP        87        get-next-request 1.3.6.1.2.1.2.2.1.2.9
392        4.552346        192.168.1.100        192.168.1.41        SNMP        88        get-response 1.3.6.1.2.1.2.2.1.3.1

Frame 358: 86 bytes on wire (688 bits), 86 bytes captured (688 bits)

Ethernet II, Src: VMware_bb:fc:fd (00:50:56:bb:fc:fd), Dst: VMware_67:d2:ec (00:50:56:67:d2:ec)
Internet Protocol Version 4, Src: 192.168.1.41, Dst: 192.168.1.100
User Datagram Protocol, Src Port: 51556, Dst Port: 161
Simple Network Management Protocol
    version: v2c (1)
    community: public
    data: get-next-request (1)
        get-next-request
            request-id: 109657875
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1.2.2.1.2: Value (Null)
                    Object Name: 1.3.6.1.2.1.2.2.1.2 (iso.3.6.1.2.1.2.2.1.2)
                    Value (Null)
    [Response In: 361]
 
Frame 361: 118 bytes on wire (944 bits), 118 bytes captured (944 bits)
Ethernet II, Src: VMware_67:d2:ec (00:50:56:67:d2:ec), Dst: VMware_bb:fc:fd (00:50:56:bb:fc:fd)
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 192.168.1.41
User Datagram Protocol, Src Port: 161, Dst Port: 51556
Simple Network Management Protocol
    version: v2c (1)
    community: public
    data: get-response (2)
        get-response
            request-id: 109657875
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1.2.2.1.2.1: "Device vmnic0 at 25:00.0 ixgben"
                    Object Name: 1.3.6.1.2.1.2.2.1.2.1 (iso.3.6.1.2.1.2.2.1.2.1)
                    Value (OctetString): "Device vmnic0 at 25:00.0 ixgben"
    [Response To: 358]
    [Time: 0.002140000 seconds]