528. SNMP (Simple Network Management Protocol)
핵심 인사이트: 전국의 편의점(네트워크 장비) 매출과 재고(상태)를 매일 점장에게 물어보려면 벅차다. SNMP는 본사(매니저)가 전국 지점(에이전트)에 "오늘 매출 얼마야?" 하고 묻거나, 지점에 강도가 들면 지점에서 "살려줘요!" 하고 본사로 즉각 경보(Trap)를 보내는 네트워크 관리의 절대 표준이다.
Ⅰ. SNMP (Simple Network Management Protocol)의 개념
TCP/IP 네트워크 상에서 수많은 라우터, 스위치, 서버 등의 네트워크 장비들을 중앙에서 원격으로 감시하고 제어하기 위한 표준 관리 프로토콜입니다. 이름에 'Simple'이 들어간 것처럼 구조가 단순하고 가벼워서 거의 모든 벤더(Cisco, Juniper 등)의 장비에 기본으로 탑재되어 있습니다.
Ⅱ. SNMP의 주요 구성 요소
[ NMS (관리 시스템) ] [ 관리 대상 장비들 ]
┌───────────────────────┐ ┌─────────────────────┐
│ 👤 SNMP Manager │ │ 🤖 SNMP Agent │
│ (수집 및 통제 센터) │ │ (라우터, 스위치) │
│ │ (1) Get 요청 │ │
│ UDP 161 포트 │ ─────────────────▶ │ UDP 161 포트 │
│ │ (2) Response │ │
│ │ ◀───────────────── │ │
│ │ │ │
│ UDP 162 포트 │ ◀───────────────── │ (3) Trap (경보) │
│ (경보 수신 전용) │ (온도 이상 발생!) │ │
└───────────────────────┘ └─────────────────────┘
- SNMP Manager (매니저): 본사 역할을 하는 관리 시스템(NMS)입니다. 에이전트에게 정보를 달라고 요청하거나, 제어 명령을 내립니다.
- SNMP Agent (에이전트): 지점 역할을 하는 관리 대상 장비(라우터 등)에 탑재된 소프트웨어입니다. 매니저의 요청에 응답하고, 관리 데이터를 MIB(Management Information Base) 형태로 유지합니다.
- MIB (Management Information Base): 장비가 가지고 있는 정보(예: CPU 사용량, 온도, 포트 상태)들을 트리 구조로 정리해 놓은 데이터베이스입니다.
Ⅲ. 주요 통신 메시지 (UDP 161 / 162)
SNMP는 빠르고 가벼운 통신을 위해 UDP 프로토콜을 사용합니다.
| 메시지 | 방향 | 설명 | 사용 포트 |
|---|---|---|---|
| Get Request | Manager ➔ Agent | 특정 정보(예: CPU 온도)의 값을 하나 달라고 요청합니다. | UDP 161 |
| Get Next Request | Manager ➔ Agent | 테이블 형태의 데이터(예: 라우팅 테이블)를 연속해서 다음 값을 달라고 요청합니다. | UDP 161 |
| Set Request | Manager ➔ Agent | 장비의 특정 설정 값(예: 장비 이름 변경)을 변경하도록 지시합니다. | UDP 161 |
| Response | Agent ➔ Manager | Get이나 Set 요청에 대한 정상 처리 결과나 에러를 응답합니다. | UDP 161 |
| Trap (트랩) | Agent ➔ Manager | 🌟 장비에 심각한 장애(링크 다운, 과열)가 발생했을 때, 매니저가 묻지 않아도 에이전트가 먼저 자발적으로 경보를 날립니다. | UDP 162 |
Ⅳ. 실무 활용
실무에서는 SolarWinds, PRTG, Zabbix 같은 화려한 모니터링 대시보드(NMS)를 구축하는데, 이 화면에 띄워지는 모든 CPU 그래프와 트래픽 게이지 곡선이 바로 뒤에서는 SNMP를 통해 1분 단위로 수집된 데이터들입니다.
📢 섹션 요약 비유: 본사 사장(매니저)이 지점장(에이전트)에게 "이번 달 장부(MIB) 좀 보내봐(Get)" 하면 보내주고(Response), 지점장이 맘대로 "가게 문 닫아라(Set)" 지시할 수 있는 시스템입니다. 가장 중요한 건, 가게에 불이 나면 사장이 묻기도 전에 지점장이 119(포트 162)로 "불났어요!(Trap)" 하고 먼저 소리치는 기능입니다.