간이 망 관리 프로토콜(Simple Network Management Protocol, SNMP)은 IP 네트워크상의 장치로부터 정보를 수집 및 관리하며, 또한 정보를 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜이다. SNMP를 지원하는 대표적인 장치에는 라우터, 스위치, 서버, 워크스테이션, 프린터, 모뎀 랙 등이 포함된다.
SNMP는 네트워크 모니터링의 목적으로 네트워크 관리에서 널리 사용된다. SNMP는 관리 정보 베이스(Management Information Base, MIB) 상에 관리 중인 시스템의 상태와 설정을 변수의 형태로 관리할 수 있게 해준다. 이러한 변수들은 관리 프로그램에 의해 원격에서 질의될 수 있으며, 경우에 따라서는 원격에서 값을 설정할 수도 있다.
SNMP는 IETF 가 정의한 인터넷 프로토콜 스위트의 일부분이다. 현행 프레임워크 아키텍처는 RFC 3411 (STD 62) 이 정의한다[1]. 전송은 UDP 를 쓰며 에이전트는 161 번, 트랩 수신기는 162 번 포트를 듣는다.

SNMP는 일반적으로, 하나 이상의 관리 컴퓨터("매니저"라고 칭한다)는 컴퓨터 네트워크에서 호스트나 장치들의 그룹을 관리하거나 감시하는 일을 맡는다. 관리를 받는 각각의 시스템은 에이전트라는 이름의 소프트웨어 구성 요소를 실행하여 SNMP를 통해 정보를 매니저로 전달한다.
SNMP 관리 네트워크는 3가지 구성 요소를 이룬다:
에이전트가 내놓는 값은 OID(Object Identifier)라는 점 구분 숫자열로 식별한다. 1.3.6.1.2.1.1.5.0 은 sysName.0 이고, 1.3.6.1.2.1 (mib-2) 아래에 시스템·인터페이스·IP 같은 표준 객체가, 1.3.6.1.4.1 (enterprises) 아래에 제조사별 객체가 있다. MIB 파일은 이 숫자열에 이름과 형식을 붙여 주는 정의서다.
| OID | 이름 | 내용 |
|---|---|---|
1.3.6.1.2.1.1 |
system | 장비 이름 · 설명 · 가동 시간 · 위치 |
1.3.6.1.2.1.2 |
interfaces | 인터페이스 목록과 송수신 카운터 |
1.3.6.1.2.1.25 |
host | 프로세스 · 저장 장치 · CPU (HOST-RESOURCES-MIB) |
1.3.6.1.4.1.2021 |
ucdavis | Net-SNMP 확장 — 로드 · 메모리 · 디스크 |
SNMP 메시지는 UDP 데이터그램 하나에 담긴다. v1/v2c 메시지 구조는 다음과 같다.
| 필드 | 내용 |
|---|---|
| IP 헤더 · UDP 헤더 | 전송 |
| 버전 | 0 = v1, 1 = v2c, 3 = v3 |
| 커뮤니티 | v1/v2c 의 평문 비밀번호 역할 문자열 (기본값 public 은 바꾼다) |
| PDU 유형 | GetRequest · GetNextRequest · GetBulkRequest(v2c+) · SetRequest · Response · Trap · InformRequest(v2c+) |
| 요청 ID | 요청과 응답을 짝짓는 번호 |
| 오류 상태 · 오류 색인 | 응답의 오류 코드와 문제가 된 변수 위치 |
| 변수 바인딩 | (OID, 값) 쌍의 목록 |
v3 는 커뮤니티 대신 사용자 기반 보안 모델(USM)을 쓰며 메시지 헤더에 보안 파라미터가 추가된다.
| 버전 | 인증 | 암호화 | 비고 |
|---|---|---|---|
| v1 | 커뮤니티 문자열 (평문) | 없음 | 32비트 카운터만. 거의 쓰지 않는다 |
| v2c | 커뮤니티 문자열 (평문) | 없음 | GetBulk · 64비트 카운터. 사내망 모니터링에서 여전히 흔하다 |
| v3 | 사용자 + HMAC (MD5 · SHA · SHA-256 등) | DES · AES | 보안 수준 noAuthNoPriv · authNoPriv · authPriv. 외부에 노출되는 장비는 v3 authPriv 만 허용한다 |
리눅스에서 SNMP 에이전트(snmpd)와 클라이언트 명령(snmpget · snmpwalk 등)의 사실상 표준 구현은 Net-SNMP 다. 현행 버전은 5.9.4 이다[2].
# RHEL 계열
dnf install net-snmp net-snmp-utils
# Debian · Ubuntu
apt install snmpd snmp
# v2c — 장비 이름 하나
snmpget -v2c -c ${COMMUNITY} 192.168.1.1 1.3.6.1.2.1.1.5.0
# v2c — system 서브트리 전체
snmpwalk -v2c -c ${COMMUNITY} 192.168.1.1 1.3.6.1.2.1.1
# v3 authPriv
snmpwalk -v3 -l authPriv -u ${USER} -a SHA -A ${AUTH_PASS} -x AES -X ${PRIV_PASS} 192.168.1.1 system
# 인터페이스 이름과 수신 바이트
snmpwalk -v2c -c ${COMMUNITY} 192.168.1.1 ifDescr
snmpwalk -v2c -c ${COMMUNITY} 192.168.1.1 ifHCInOctets
ifDescr 처럼 이름으로 부르려면 MIB 파일이 있어야 한다. Debian/Ubuntu 는 snmp-mibs-downloader 패키지를 설치하고 /etc/snmp/snmp.conf 의 mibs : 줄을 주석 처리한다.
/etc/snmp/snmpd.conf)# v2c 읽기 전용, 특정 대역만
rocommunity ${COMMUNITY} 192.168.1.0/24
# 시스템 정보
sysLocation Seoul DC1 Rack 12
sysContact ops@example.com
# 디스크 · 로드 임계 (UCD-SNMP-MIB)
disk / 10%
load 8 8 8
systemctl enable --now snmpd
# 방화벽
firewall-cmd --permanent --add-service=snmp && firewall-cmd --reload
# 로컬 확인
snmpwalk -v2c -c ${COMMUNITY} localhost system
v3 사용자는 snmpd 를 멈춘 뒤 net-snmp-create-v3-user -ro -a SHA -A ${AUTH_PASS} -x AES -X ${PRIV_PASS} ${USER} 로 만든다.
snmp_exporter 를 앞에 둔다.RFC 3411 "An Architecture for Describing SNMP Management Frameworks" (STD 62, 2002-12) — 2026-09-20 확인. https://www.rfc-editor.org/rfc/rfc3411.html ↩︎
Net-SNMP 최신 버전 5.9.4 — 2026-09-20 확인. https://www.net-snmp.org/ ↩︎