SNMP OID 구조와 snmpwalk를 이용해 OID 목록을 확인하는 방법

OID의 구조에 대해 설명하고, SNMP 에이전트의 OID 목록을 확인할 수 있는 도구인 SNMPWALK와 iREASONING MIB Browser의 사용법과, 원하는 OID를 찾는데 도움이 되는 정보들을 소개한다.

SNMP 에이전트가 정상적으로 구성되었는지, 내가 원하는 OID값이 맞는지 확인하는 가장 확실한 방법은, 에이전트에 실제로 데이터를 요청해 받아 보는 것이다. 에이전트가 어떤 Object들을 제공하는지 궁금할 때도 있을 것이다. 그리고 이 OID가 과연 뭐에 대한 값인지도 확인 해야 할 필요도 생길 것이다. 이 글은 리눅스 또는 윈도우 환경에서 에이전트에 WALK 날려 OID목록을 받아오는 방법과, OID 숫자열이 가지는 의미를 설명하고, 원하는 OID를 찾는데 도움이 될 사이트를 소개하고 있다.

OID(Object ID)

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

.1.3.6.1.4.1.25506.2.12.1.1.1.2.1

라는 OID가 있다고 가정하자. 이 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 매니저가 이 OID를 SNMP 에이전트에게 요청하면, 에이전트는 기본 관리자의 비밀번호를 응답해 준다. (대부분 장비의 첫번째 사용자는 기본 관리자이다.) 암호화 되지 않은 상태로 저장 했을 경우, 그냥 평문으로 암호가 노출된다. SNMP 에이전트 설정시 보안에 특별히 신경 써야 하는 이유이다.

또한, 특정한 업체에서 사용할 수 있는 영역이 있고, 대부분의 장비가 공통 적으로 사용할 수 있는 영역도 있다. 예를들어 '.1.3.6.1.2.1.1.3.0'의 경우 에이전트 장비의 동작시간을 리턴해 주는데, SNMP를 사용하는 모든 장비에서 공통으로 사용 할 수 있는 OID이다.

OID 목록 확인

여성 엔지니어가 돋보기를 들고 종이를 찾는 모습
SNMPWALK는 에이전트의 OID 를 찾는다.

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

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

리눅스 시스템에서

리눅스 시스템의 경우, 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

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" iso.3.6.1.2.1.1.6.0 = STRING: "SEOUL"

실행하면 이런식으로 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" .1.3.6.1.2.1.1.6.0 = STRING: "SEOUL"

윈도우 시스템에서

윈도우 시스템의 경우, SNMP 서비스를 설치하더라도 관련된 도구가 자동으로 설치 되지는 않는다. 별도의 도구를 다운로드 받아야 하는데, 위의 snmpwalk를 윈도우 용으로 포크한 것을 사용하거나, snmpwalk 기능을 지원하는 툴을 추가로 설치해야 한다. 그중 개인 사용자에게 무료로 제공되는, iREASONING의 MIB Browser를 사용해 보겠다.

iReasoning MIB Broswer 실행 화면
iReasoning MIB Broswer 실행 화면

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

iReasoning MIB Broswer의 Advanced Properties 설정 화면, 포트와 커뮤니티명과 버전을 입력하게 되어 있다.
접속에 필요한 부가 설정

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

iReasoning MIB Broswer 의 Operations를 선택하는 화면 Get Next 등이 보인다.
사용 가능한 명령들

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

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

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

iReasoning MIB Broswer 실행 화면 OID와 VALUE가 표시되고 있다.
에이전트의 데이터를 받아 온 모습

OID 레퍼런스

snmp walk를 통해 에이전트의 OID목록을 긁어 오는데 성공 했다면, 남은 일은 이 중에서 내가 사용할 OID가 무엇인지 찾아 내는 것이다. 하지만, 수 많은 OID 중에서 과연 내가 찾는 OID가 뭔지 알아내는건 꽤나 고달픈 일이다. 그리고 인터넷에는, 훨씬 이전부터 우리와 같은 생각을 했던 사람들이 정성껏 모아놓은 자료들이 있다. 제조사에 MIB (OID 정보를 담고있는 파일)를 내 놓으라고 해서 리스트를 확보하는게 가장 좋겠지만, 현실적으로 불가능할 때가 많다. 이런 레퍼런스들을 참고해 가며 내가 사용할 OID들을 찾아 가도록 하자. 필자가 추천하는 참고할 만한 사이트는 다음과 같다.

반응형