SNMP OID 구조와 SNMPWALK·MIB Browser로 OID 찾는 방법

SNMP OID(Simple Network Management Protocol Object ID)구조와 리눅스 및 윈도우에서 SNMPWALK와 iReasoning MIB Browser를 이용해 에이전트의 OID 목록을 확인하는 방법을 설명한다.

SNMP(Simple Network Management Protocol) 에이전트가 정상적으로 구성되었는지 또는, 내가 원하는 OID값이 맞는지 확인하는 가장 확실한 방법은 에이전트(SNMP 타겟 장비)에 실제로 데이터를 요청해 받아 보는 것이다. 또한 에이전트가 어떤 Object들을 제공하는지, 특정 OID가 과연 무엇에 대한 값인지도 확인해야 할 필요가 있다.

본 글은 리눅스 또는 윈도우 환경에서 SNMPWALK를 이용해 에이전트의 OID목록을 받아오는 방법, OID 숫자열이 가지는 의미, 그리고 필요한 OID를 찾는데 도움이 될 사이트를 소개한다.

OID(Object ID)

OID(Object ID)는 SNMP 에이전트가 SNMP 매니저에게 제공해 줄 수 있는 데이터들을 구분하기 위한 고유 번호이다. OID는 ‘.‘으로 구분되는 숫자열 인데, 그냥 무작위로 있는게 아니라 나름의 규칙과 체계를 가진다. 예를들어, .1.3.6.1.4.1.25506.2.12.1.1.1.2.1 라는 OID는 아래와 같은 의미를 가진다.

OID .1.3.6.1.4.1.25506.2.12.1.1.1.2.1 의 의미
숫자 의미 사람의 말로 풀면
1 iso 국제표준 (이라 쓰고 ANSI라 읽는다..)
3 identified-organization 분류법에 따라,
6 dod 미 국방부
1 internet 개방 네트워크인, 인터넷에 참여하는
4 private 사적
1 enterprise 기업
25560 HP HP (구 화웨이 + 3Com)사 장비
2 hh3cCommon 의 공통 설정 항목중,
12 hh3cUser 사용자
1 hh3cUserObjects 객체의
1 hh3cUserInfoTable 사용자정보 테이블에 있는
1 hh3cUserInfoEntry 정보들 중에,
2 hh3cUserPassword 사용자 암호의
1 첫번째 항목 =기본 관리자 암호

즉, SNMP 매니저가 .1.3.6.1.4.1.25506.2.12.1.1.1.2.1를 SNMP 에이전트에게 요청하면, 에이전트 장비의 기본 관리자 비밀번호를 응답으로 돌려준다! (대부분 장비의 첫번째 사용자는 기본 관리자이다.) 만약, 암호화되지 않은 상태로 저장 했을 경우, 그냥 평문으로 암호가 노출되는 것이다. SNMP 에이전트 설정시 보안에 특별히 신경 써야 하는 이유이다.

스칼라(Scalar) OID와 테이블(Table) OID

SNMP에서 OID는 크게 스칼라(Scalar) 값과 테이블(Table) 값의 두 종류로 나뉜다. OID의 끝 부분을 보면 구분이 가능하다.

스칼라(Scalar) OID
OID는 0으로 끝난다.
GET 요청 시 .0을 포함해야 한다. 없을 경우 오류가 발생한다.
.1.3.6.1.2.1.1.3.0 (동작시간), .1.3.6.1.2.1.1.6.0 (장비위치) 등이 있다.
테이블(Table)
여러 행(Row)이 존재하며, 각 행을 식별하는 인덱스(Index)가 붙는다.
GET 요청 시 특정 인덱스 값만 읽을 수 있다.
.1.3.6.1.2.1.2.2.1.2.X (X번 랜카드의 이름), .1.3.6.1.2.1.2.2.1.8.X (X번 랜카드 상태)

공통 OID와 전용 OID

OID는 모든 SNMP 장비가 공통적으로 사용하는 영역과 특정 업체가 할당받아 사용하는 영역이 있다.

공통 OID
IETF에서 정의한 MIB-2(MIB-II) 구조에 포함되는 값으로 SNMP를 지원하는 모든 장비에서 동일
.1.3.6.1.2.1.로 시작
전용(Enterprise) OID
각 제조사가 필요에 따라 정의하는 엔터프라이즈(Enterprise) 영역
.1.3.6.1.4.1.로 시작
9(Cisco), 311(Microsoft), 11(HP) 등

예를 들어 특정 스위치의 포트 VLAN, CPU 사용률, 장비 온도, 사용자 계정 정보 등은 공통 OID로는 제공되지 않으며, 대부분 제조사 전용 OID를 통해 확인해야 한다.

OID 목록 확인

SNMP를 이용해 장비를 관리하기 위해서는 에이전트(관리대상) 장비에서 내가 원하는 항목을 제공하고 있는지, 그리고 그 항목을 읽어오기 위한 OID가 무엇인지 알고 있어야 한다. 보통 장비 제조사에 문의하면 알려주긴 하지만, 여의치 못한 경우라면 인터넷을 통해 검색해 보거나, OID 목록을 하나하나 뒤져보는 삽질을 해야 한다.

SNMP Walk를 수행하는 엔지니어
SNMPWALK

이런 상황에서 손 쉽게 사용할 수 있는 것이 SNMPWALK이다. (누가 지었는지는 몰라도, 이름 참 잘 지었다.) SNMPWALK는 에이전트가 가지고 있는 OID 목록들을 헤집고 돌아다니며(walking), 에이전트의 OID 목록과 값들을 모두 보여준다.

리눅스 시스템에서 SNMPWALK 사용하기

리눅스 시스템의 경우, SNMPD패키지를 설치하면 함께 설치된다. 기본 사용방법과 주요 옵션은 다음과 같다.

snmpwalk -v 2c -c public 192.168.123.123
  • -v : 사용할 SNMP 버전을 지정한다. 뒤에 붙을 수 있는 옵션은,
    • 1 : SNMP v1
    • 2c : SNMP v2 (아마 가장 많이 사용하게 될 것이다)
    • 3 : SNMP v3
  • -c : 버전 1,2에서 사용할 커뮤니티 네임을 적어준다.
  • 192.168.123.123 : 에이전트 (모니터할 타겟)의 HOST 주소.

SNMP 버전 3을 사용할 경우에는 좀 더 옵션들이 복잡하게 붙는다. 버전 2와 중복되는 것은 빼고 살펴보면,

snmpwalk -v 3 -l authPriv -u public -a SHA -A "PASSWORD1" -x AES -X "PASSWORD1" 192.168.123.123
  • -l : 보안레벨을 설정한다. 선택 가능한 옵션은
    • noAuthNoPriv : 암호화 안함
    • authNoPriv : 인증만 암호화
    • authPriv : 인증과 데이터 모두 암호화
  • -u : 에이전트에 접근할 사용자 명을 적는다
  • -a : 인증에 사용할 암호화 방식을 선택한다. 가능한 옵션은
    • MD5
    • SHA, SHA-224, SHA-256, SHA-384, SHA-512
  • -A : 인증 암호화 pass pharse
  • -x : 데이터 암호화 방식을 선택한다. 가능한 옵션은
    • DES
    • AES, AES-192, AES-256
  • -X : 데이터 암호화 pass pharse

아래는 SNMPWALK를 이용해 윈도우 시스템에서 제공하는 OID 목록을 조회한 예시이다.

newuser@debian:~$ snmpwalk -v 2c -c eqmakerread 192.168.123.123
iso.3.6.1.2.1.1.1.0 = STRING: "Hardware: Intel64 Family 6 Model 158 Stepping 9 AT/AT COMPATIBLE - Software: Windows Version 6.3 (Build 19045 Multiprocessor Free)"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.311.1.1.3.1.1
iso.3.6.1.2.1.1.3.0 = Timeticks: (15523306) 1 day, 19:07:13.06
iso.3.6.1.2.1.1.4.0 = STRING: "eqmaker@eqmaker.kr"
iso.3.6.1.2.1.1.5.0 = STRING: "WindowsSVR"
... 이하 생략 ...

실행하면 위의 예와 같이 OID와 해당 OID의 데이터가 표시된다. 참고로, OID의 시작이 iso로 표시되고 있다. snmpwalk의 옵션 중 하나로, 해석할 수 있는 OID 번호가 있을 경우 그 부분을 해석해서 보여 주는 것이다. 원하지 않을 경우 명령줄에 추가로 -O n옵션을 붙여주면, 원래의 OID 목록을 그대로 보여 준다.

newuser@debian:~$ snmpwalk -v 2c -c eqmakerread 192.168.123.123 -O n
.1.3.6.1.2.1.1.1.0 = STRING: "Hardware: Intel64 Family 6 Model 158 Stepping 9 AT/AT COMPATIBLE - Software: Windows Version 6.3 (Build 19045 Multiprocessor Free)"
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.311.1.1.3.1.1
.1.3.6.1.2.1.1.3.0 = Timeticks: (15557768) 1 day, 19:12:57.68
.1.3.6.1.2.1.1.4.0 = STRING: "eqmaker@eqmaker.kr"
.1.3.6.1.2.1.1.5.0 = STRING: "WindowsSVR"
... 이하 생략 ...

윈도우 시스템에서 MIB Browser 사용하기

윈도우 시스템의 경우, SNMP서비스를 설치하더라도 관련 도구가 자동으로 설치 되지는 않는다. 별도의 도구를 다운로드 받아야 하는데, 위의 snmpwalk를 윈도우 용으로 포크한 것을 사용하거나, snmpwalk 기능을 지원하는 툴을 추가로 설치해야 한다.

본 글에서는 개인 사용자에게 무료로 제공되는, iREASONING의 MIB Browser를 사용해 보겠다.

  1. 에이전트 주소 입력

    프로그램의 메인화면에서 Address 칸에 에이전트의 주소를 입력해 준다. 그리고 옆에 있는 Advanced Properties 버튼을 눌러 추가적인 설정을 입력해 준다.

    iReasoning MIB Browser의 초기 실행 화면, OID 입력 전 빈 상태의 인터페이스
    iReasoning MIB Browser – 초기 실행 화면
  2. 포트와 커뮤니티 입력

    사용할 포트와 커뮤니티 이름, 사용할 SNMP 버전을 선택해 주고 OK를 눌러준다.

    iReasoning MIB Browser에서 SNMP 에이전트 주소, 포트, 커뮤니티를 설정하는 Advanced Properties 화면
    iReasoning MIB Browser – Advanced Properties
  3. 작업 유형 선택

    작업의 유형을 선택해 준다. 6가지 옵션이 있는데, 각각의 기능은

    Get Next
    현재 OID의 다음 OID 1개를 찾아 가져 온다.
    Get
    현재 OID의 값을 가져 온다.
    Get Bulk
    SNMP v2부터 제공되며, 복수의 Get Next 명령을 한번에 실행해 준다.
    Get Subtree
    전체 서브트리를 가지고 온다.
    Walk
    현재 OID의 다음 OID 모두를 찾아 가져온다. Get Next를 연속적으로 반복하는 것.
    Set
    에이전트의 설정을 바꿔준다. (값을 가져오는게 아니라, 에이전트에 값을 쓰는 용도)
    이며, 자주 사용하게 될 유형은 Get Next, Get, Walk정도일 것이다.

    iReasoning MIB Browser에서 Get, GetNext, Walk 등 SNMP 작업 유형을 선택하는 Operations 메뉴
    iReasoning MIB Browser – Operations 메뉴
  4. GO 클릭

    작업의 유형이 변경되거나, GO 버튼을 누르면 에이전트로 해당 요청이 전송되고, 받아온 데이터들을 표의 형태로 표시해 준다.

    iReasoning MIB Browser가 SNMP 에이전트로부터 sysDescr, sysObjectID, sysUpTime 값을 조회한 결과 화면
    iReasoning MIB Browser – 동작 예시

OID 레퍼런스

SNMPWALK를 통해 에이전트의 OID목록을 긁어 오는데 성공 했다면, 남은 일은 이 중에서 내가 사용할 OID가 무엇인지 찾아 내는 것이다. 하지만, 수 많은 OID 중에서 과연 내가 찾는 OID가 뭔지 알아내는건 꽤나 고달픈 일이다. 그리고 인터넷에는, 훨씬 이전부터 우리와 같은 생각을 했던 사람들이 정성껏 모아놓은 자료들이 있다.

제조사에 MIB (OID 정보를 담고있는 파일)를 내 놓으라고 해서 리스트를 확보하는게 가장 좋겠지만, 현실적으로 불가능할 때가 많다. 이런 레퍼런스들을 참고해 가며 내가 사용할 OID들을 찾아 가도록 하자. 필자가 추천하는 참고할 만한 사이트는 다음과 같다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다