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 에 대해 추가적으로 학습하기로 하자!
'네트워크 공부 & 실습 > 네트워크 실습' 카테고리의 다른 글
| [VPN] Raspberry Pi 를 VPN 의 EndPoint 로 만들기 (1) | 2025.05.26 |
|---|---|
| [Network]포트가 열렸는지 확인하는 가장 간단한 방법 – Netcat(nc) 개념과 실습 (0) | 2025.05.07 |
| [Network] MTU 직접 ping 명령어로 실험해보기 (0) | 2025.04.18 |
| [Network] 내 컴퓨터에 IP가 두 개 있으면 뭐가 좋을까? (0) | 2025.04.17 |
| [Network] ip link 로 네트워크 인터페이스 상태 확인하기 (0) | 2025.04.15 |