네트워크 공부 & 실습/네트워크 실습

[Network] SNMP 실습편 – snmpget과 snmpwalk로 장비 상태 확인하기 (2부)

강_토발즈 2025. 4. 22. 23:51

 

1. 실습 목표

  • 앞서 배운 SNMP 개념을 한 번더  숙지하고 실제로, SNMP 를 사용하면 어떤 정보들이 반환되는지 확인해보자!
  • SNMP 도구(snmpget, snmpwalk)를 사용해 실제 장비 상태를 조회해본다.
  • SNMP 프로토콜이 실제로 어떻게 정보를 주고받는지 체감해본다.

2. 실습 환경 준비

 2-1. 실습 대상 (Agent 역할) -> 내 데스크탑 (서버 역할) 즉 정보를 제공하는 역할이 된다.

  • 명령어로 snmp 가 작동할 수 있도록 서비스를 설치하고, 설정 파일을 열어 외부에서 접근할 수 있도록 하고 서비스를 재시작한다.
sudo apt install snmpd

 

명령어를 통한 설치 완료

 

설정파일 수정을 위해 편집기로 연다 ( 이제 vi 를 연습해야 하므로 vi 로 열었다!!)
햇갈리면 안되는게, 정보를 제공하는 서버는 snmpd.conf 파일 수정해야 하고, 정보를 요청하는 곳에서는 snmp.conf 를 만져야 한다!

sudo vi /etc/snmp/snmpd.conf

 


설정파일에서, agentaddress 는 127.0.0.1, [::1] 로 초기 설정이 되어 있는데, 이는 로컬 호스트 에게서만 요청을 받겠다는 의미이기 때문에 위와 같이 수정해면, IPv4 모든 인터페이스에서 161 포트를 열어두고, 내 네트워크 대역에 맞춰서 설정을 해 주면 된다.

저장하고 종료한 다음에, snmp 서비스를 재시작 하는 것으로 서버측 셋팅은 끝난다.

 

sudo systemctl restart snmpd




2-2. 실습 도구 (Manager 역할) -> 노트북 (관리자 역할) 서버로 부터 정보를 얻고 싶어하는 역할이다.

  • 노트북에서도 snmp 서비스를 설치한다.
sudo apt install snmp

 



3. SNMP 기본 명령어 사용

3-1. 단일 OID 조회하기 – snmpget

snmpget -v2c -c public <데스크탑 IP> 1.3.6.1.2.1.1.5.0
  • -v2c: SNMP v2c 버전 사용한 다는 것을 의미
  • -c public: community string (기본)
  • 1.3.6.1.2.1.1.5.0: 시스템 이름(sysName)의 OID (Object 식별자 = 각각의 정보를 식별하는 고유 번호)


노트북 -> 데스크탑 으로의 요청 결과에 대해서 서버 역할인 "데스크탑" 의 이름이 제대로 반환 되었다.

 

 

3-2. 전체 트리 탐색 – snmpwalk

snmpwalk -v2c -c public <데스크탑IP> 1.3.6.1.2.1.1
  • 시스템 그룹(sysDescr, sysUpTime, sysContact 등)을 한 번에 조회

 

 

뭔가 갑자기 많은 데이터들이 반환 되었다. 이제 어떤 내용이 반환 되었나 알아보자...!


4. 응답 데이터 해석

4-1. snmpget 결과 해석

snmpget -v2c -c public 192.168.0.27 1.3.6.1.2.1.1.5.0

 

  • 요청한 OID: 1.3.6.1.2.1.1.5.0 = sysName.0
  • 응답: = STRING: "kang-Linux-Ubuntu"
  • 이 장비(데스크탑)의 시스템 이름은 "kang-Linux-Ubuntu" 이다.
  • 보통 hostname과 같거나 SNMP 설정에서 지정한 이름으로 반환된다.

4-2. snmpwalk 결과 해석

snmpwalk -v2c -c public 192.168.0.27 1.3.6.1.2.1.1
  • 위 명령어는 system 그룹 전체를 조회하는 명령어 이다. 즉 데스크탑의 기본 정보 전체를 불러오게 된다.

<주요 항목 해석>

.1.3.6.1.2.1.1.1.0 sysDescr "Linux kang-Linux-Ubuntu 6.11..." OS 및 커널 정보
.1.3.6.1.2.1.1.2.0 sysObjectID "iso.3.6.1.4.1.8072.3.2.10" SNMP 장비 식별 OID
.1.3.6.1.2.1.1.3.0 sysUpTime "0:11:11.54" 부팅 후 11분 11초 지남
.1.3.6.1.2.1.1.4.0 sysContact "Me <me@example.org>" 시스템 관리자 이메일
.1.3.6.1.2.1.1.5.0 sysName "kang-Linux-Ubuntu" 시스템 이름
.1.3.6.1.2.1.1.6.0 sysLocation "Sitting on the Dock of the Bay" 물리적 위치 설명
.1.3.6.1.2.1.1.7.0 sysServices 72 제공 중인 서비스 레벨 (계층적 값)

 

그리고 나머지 .9.1.x.x 관련 값은 MIB 모듈 정보라고 한다.
즉, 이 장비가 어떤 MIB(데이터 그룹)를 가지고 있는지를 알려주는 메타 정보이다.

iso.3.6.1.2.1.1.9.1.3.4 = STRING: "The MIB module for SNMPv2 entities"

 

이 장비는 SNMPv2 관련 MIB 모듈을 지원한다는 뜻이다.

 

4-3. OID 에 대해서

 

어떻게 공부했는지 모르겠지만, 다른 분들의 포스팅을 보며 따라하다보니, OID fmf 3.6.1.2.1.1. 이렇게 거부감 없이 사용하는데, 이 것이 무엇을 의미하는지 정확히 알아야 직성이 풀릴 것 같다. 따라서 찾아보니

1. 3. 6. 1. 2. 1. 1. 5. 0
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └─ 인스턴스 번호 (0번 인스턴스 → 대부분 단일값)
│ │ │ │ │ │ └──── sysName (시스템 이름)
│ │ │ │ │ └────── system 그룹
│ │ │ │ └──────── MIB-2 (표준 관리 정보 베이스)
│ │ │ └────────── 인터넷(Internet)
│ │ └──────────── 디렉토리 없음
│ └────────────── OID 루트 (ISO = 1)


뭔가 어렵다. 이 값들을 외우는 것이 아니라, 보면서 찾을 수 있다고 하는데, 이건 나중에 따로 알아보도록 해야겠다.
OID 없이 MIB 로 요청이 가능하기도 하고, 트리를 탐색하면서 OID 번호를 알아낼 수 있다고 한다.

 

5. SNMP 를 사용해 보고 느낀 점

  • EMS/NMS 솔루션은 이런 방식으로 각 장비에서 상태를 수집하고 모니터링 한다는 것을 알게 됨.
  • Polling: SNMP GET/WALK을 주기적으로 요청하여 최신 정보를 수집할 수 있음.
  • Trap: 장비가 스스로 문제를 감지하면 SNMP 알람(TRAP)을 EMS로 전송한다.

 

6. 마무리

 


SNMP는 apt install 명령어로 단순하게 설치한 프로토콜처럼 보이지만,네트워크 장비, 서버, NAS 등 IT 인프라 상태를 자동으로 수집하고 관리하는 핵심 프로토콜 이다.
snmpget, snmpwalk 명령어만으로도 장비의 상태를 직접 확인하고, 실무에서 데이터가 어떻게 수집되는지 감을 잡을 수 있었다.
또 원하는 정보를 보다 정확하게 반환 받기 위해서는 SNMP 에서 사용하는 개념들을 정확하게 알고 사용해야 한다는 생각이 들었기에, OID 와 MIB 에 대해 추가적으로 학습하기로 하자!