사용 매뉴얼
개요
SNMP 앱은 네트워크 장비의 정보를 조회하고 모니터링할 수 있는 다양한 쿼리 명령어를 제공합니다. 여기서는 주요 명령어의 사용 방법을 설명합니다.
SNMP(Simple Network Management Protocol)는 네트워크 장비의 상태를 모니터링하고 관리하기 위한 표준 프로토콜입니다. 주로 라우터, 스위치, 서버, 방화벽 등의 네트워크 장비에서 사용되고, 관리자는 SNMP를 통해 장비의 성능, 장애, 구성 상태를 SNMP 매니저에서 확인할 수 있습니다.
SNMP는 관리 시스템(Manager), 관리 대상(Agent) 구조로 동작합니다.
- Manager: 네트워크를 모니터링하고 SNMP 요청(Request)을 전송하는 주체. 로그프레소 소나는 Manager 역할을 합니다.
- Agent: 장비 내부에서 실행되어, 요청받은 데이터를 응답하거나 알림(Trap)을 전송하는 주체. 네트워크 장비는 Agent 역할을 합니다.
- MIB(Management Information Base): 관리 객체를 계층적으로 정의한 데이터베이스
- OID(Object Identifier): MIB 내의 관리 객체를 고유하게 식별하는 계층적 번호. OID는 루트에서 리프까지의 경로가 특정 관리 객체를 나타냅니다.
SNMP 버전
SNMP는 여러 버전이 존재합니다. 가장 널리 사용되는 버전은 SNMPv2c와 SNMPv3입니다. SNMP 앱은 SNMPv2c, SNMPv3를 지원합니다.
| 버전 | 주요 특징 | 보안 수준 |
|---|---|---|
| SNMPv1 | 최초 버전. 단순한 요청/응답 구조와 Trap 지원 | 인증 미지원 (공용 커뮤니티 문자열만 사용) |
| SNMPv2c | v1 기능 확장: Bulk Request, 향상된 Trap 기능 지원 | 여전히 단순 커뮤니티 문자열 기반 (보안 취약) |
| SNMPv3 | 인증 및 암호화 지원. 사용자 기반 접근 제어 (User-based Security Model, USM) 도입 | 강력한 인증/암호화 (MD5/SHA, DES/AES 지원) |
SNMPv2c는 SNMPv1의 한계를 개선한 버전으로, Bulk Request를 통해 한 번에 여러 데이터를 조회할 수 있고, Inform 메시지를 통해 트랩을 양방향으로 교환할 수 있습니다. 그러나 여전히 커뮤니티 문자열(community string)을 이용한 단순 인증만 제공하므로 보안상 취약합니다. 보안이 크게 요구되지 않는 폐쇄망 환경이나 장비 모니터링용으로 주로 사용됩니다.
SNMPv3는 보안 기능을 강화한 최신 버전으로, 다음과 같은 기능을 제공합니다.
- 인증(Authentication): 메시지 출처 검증 (MD5, SHA 등)
- 암호화(Privacy): 데이터 전송 암호화 (DES, AES 등)
- 접근 제어(Access Control): 사용자 기반 보안 모델(USM)과 뷰 기반 접근 제어(VACM) 지원
SNMPv3는 사용자 계정, 인증 프로토콜, 암호화 키 설정이 필요하며, 보안이 중요한 네트워크 환경에서 권장됩니다.
기본 MIB
SNMP 앱은 MIB(Management Information Base) 파일을 사용하여 OID를 사람이 읽을 수 있는 이름으로 변환합니다. 예를 들어, SNMPv2-MIB, IF-MIB, IP-MIB 등이 있습니다.
SNMP 앱에는 다음과 같은 표준 MIB가 포함되어 있습니다:
- SNMPv2-SMI, SNMPv2-TC, SNMPv2-MIB, SNMPv2-CONF: SNMP v2 기본 정의
- SNMP-FRAMEWORK-MIB: SNMP 프레임워크
- IF-MIB, IANAifType-MIB: 인터페이스 정보
- IP-MIB, INET-ADDRESS-MIB: IP 프로토콜 정보
- TCP-MIB: TCP 프로토콜 정보
- UDP-MIB: UDP 프로토콜 정보
- HOST-RESOURCES-MIB: 호스트 리소스(CPU, 메모리, 디스크)
- ENTITY-MIB, IANA-ENTITY-MIB: 물리적 엔티티 정보
- POWER-ETHERNET-MIB: PoE 관련 정보
- UUID-TC-MIB: UUID 타입 정의#
MIB 내장 앱 지원
SNMP 앱은 MIB 파일을 내장하고 있는 앱이 설치되어 시작되면 다음과 같이 동작합니다.
- 앱이 설치되어 시작되면 SNMP 앱이 번들 이벤트를 감지합니다.
- 새 번들의
/mib/디렉터리에서.txt확장자의 MIB 파일을 스캔합니다. - 발견된 MIB 파일을 로드하여 기존 MIB와 함께 전체 MIB를 다시 로드합니다.
- OID 이름 해석에 새로운 MIB가 즉시 적용됩니다.
범용 OID
여기서는 여러 벤더의 장비에서 공통적으로 사용되는 일반적인 OID를 소개합니다.
System Group (1.3.6.1.2.1.1)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.1.1.0 | sysDescr | 시스템 설명 |
| 1.3.6.1.2.1.1.2.0 | sysObjectID | 시스템 객체 ID |
| 1.3.6.1.2.1.1.3.0 | sysUpTime | 시스템 가동 시간 (TimeTicks) |
| 1.3.6.1.2.1.1.4.0 | sysContact | 시스템 연락처 |
| 1.3.6.1.2.1.1.5.0 | sysName | 시스템 이름 |
| 1.3.6.1.2.1.1.6.0 | sysLocation | 시스템 위치 |
| 1.3.6.1.2.1.1.7.0 | sysServices | 시스템 서비스 |
Interface Group (1.3.6.1.2.1.2)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.2.1.0 | ifNumber | 인터페이스 개수 |
| 1.3.6.1.2.1.2.2.1.1 | ifIndex | 인터페이스 인덱스 |
| 1.3.6.1.2.1.2.2.1.2 | ifDescr | 인터페이스 설명 |
| 1.3.6.1.2.1.2.2.1.3 | ifType | 인터페이스 타입 |
| 1.3.6.1.2.1.2.2.1.4 | ifMtu | MTU 크기 |
| 1.3.6.1.2.1.2.2.1.5 | ifSpeed | 인터페이스 속도 (bps) |
| 1.3.6.1.2.1.2.2.1.6 | ifPhysAddress | MAC 주소 |
| 1.3.6.1.2.1.2.2.1.7 | ifAdminStatus | 관리 상태 (1=up, 2=down, 3=testing) |
| 1.3.6.1.2.1.2.2.1.8 | ifOperStatus | 동작 상태 (1=up, 2=down) |
| 1.3.6.1.2.1.2.2.1.9 | ifLastChange | 마지막 상태 변경 시각 |
| 1.3.6.1.2.1.2.2.1.10 | ifInOctets | 수신 바이트 (32비트 카운터) |
| 1.3.6.1.2.1.2.2.1.11 | ifInUcastPkts | 수신 유니캐스트 패킷 |
| 1.3.6.1.2.1.2.2.1.12 | ifInNUcastPkts | 수신 논유니캐스트 패킷 |
| 1.3.6.1.2.1.2.2.1.13 | ifInDiscards | 수신 폐기 패킷 |
| 1.3.6.1.2.1.2.2.1.14 | ifInErrors | 수신 에러 패킷 |
| 1.3.6.1.2.1.2.2.1.16 | ifOutOctets | 송신 바이트 (32비트 카운터) |
| 1.3.6.1.2.1.2.2.1.17 | ifOutUcastPkts | 송신 유니캐스트 패킷 |
| 1.3.6.1.2.1.2.2.1.18 | ifOutNUcastPkts | 송신 논유니캐스트 패킷 |
| 1.3.6.1.2.1.2.2.1.19 | ifOutDiscards | 송신 폐기 패킷 |
| 1.3.6.1.2.1.2.2.1.20 | ifOutErrors | 송신 에러 패킷 |
IP Group (1.3.6.1.2.1.4)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.4.1.0 | ipForwarding | IP 포워딩 활성화 여부 |
| 1.3.6.1.2.1.4.2.0 | ipDefaultTTL | 기본 TTL |
| 1.3.6.1.2.1.4.3.0 | ipInReceives | 수신된 IP 패킷 수 |
| 1.3.6.1.2.1.4.4.0 | ipInHdrErrors | 헤더 에러 패킷 수 |
| 1.3.6.1.2.1.4.20.1.1 | ipAdEntAddr | IP 주소 테이블 - IP 주소 |
| 1.3.6.1.2.1.4.20.1.2 | ipAdEntIfIndex | IP 주소 테이블 - 인터페이스 인덱스 |
| 1.3.6.1.2.1.4.20.1.3 | ipAdEntNetMask | IP 주소 테이블 - 넷마스크 |
TCP Group (1.3.6.1.2.1.6)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.6.5.0 | tcpActiveOpens | 능동 연결 시도 횟수 |
| 1.3.6.1.2.1.6.6.0 | tcpPassiveOpens | 수동 연결 수락 횟수 |
| 1.3.6.1.2.1.6.9.0 | tcpCurrEstab | 현재 ESTABLISHED 상태 연결 수 |
UDP Group (1.3.6.1.2.1.7)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.7.1.0 | udpInDatagrams | 수신된 UDP 데이터그램 수 |
| 1.3.6.1.2.1.7.4.0 | udpOutDatagrams | 송신된 UDP 데이터그램 수 |
Host Resources (1.3.6.1.2.1.25)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.2.1.25.1.1.0 | hrSystemUptime | 시스템 가동 시간 |
| 1.3.6.1.2.1.25.1.5.0 | hrSystemNumUsers | 로그인 사용자 수 |
| 1.3.6.1.2.1.25.1.6.0 | hrSystemProcesses | 실행 중인 프로세스 수 |
| 1.3.6.1.2.1.25.2.2.0 | hrMemorySize | 총 메모리 크기 (KB) |
| 1.3.6.1.2.1.25.3.3.1.2 | hrProcessorLoad | CPU 로드 (%) |
UCD-SNMP (Net-SNMP) MIB (1.3.6.1.4.1.2021)
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.4.1.2021.10.1.3.1 | ssCpuUser | CPU User 사용률 (%) |
| 1.3.6.1.4.1.2021.10.1.3.2 | ssCpuSystem | CPU System 사용률 (%) |
| 1.3.6.1.4.1.2021.10.1.3.3 | ssCpuIdle | CPU Idle 비율 (%) |
| 1.3.6.1.4.1.2021.4.5.0 | memTotalReal | 총 실제 메모리 (KB) |
| 1.3.6.1.4.1.2021.4.6.0 | memAvailReal | 사용 가능한 실제 메모리 (KB) |
| 1.3.6.1.4.1.2021.4.11.0 | memTotalFree | 전체 여유 메모리 (KB) |
| 1.3.6.1.4.1.2021.9.1.6.1 | dskPath | 디스크 마운트 경로 |
| 1.3.6.1.4.1.2021.9.1.7.1 | dskDevice | 디스크 장치 이름 |
| 1.3.6.1.4.1.2021.9.1.8.1 | dskTotal | 디스크 전체 크기 (KB) |
| 1.3.6.1.4.1.2021.9.1.9.1 | dskAvail | 디스크 사용 가능 크기 (KB) |
| 1.3.6.1.4.1.2021.9.1.10.1 | dskPercent | 디스크 사용률 (%) |
벤더별 OID
여기서는 Cisco, Palo Alto Networks의 장비 전용 OID를 소개합니다.
Cisco 전용 OID
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.4.1.9.2.1.56.0 | avgBusy5 | 5분 평균 CPU 사용률 (%) |
| 1.3.6.1.4.1.9.9.48.1.1.1.5 | cpmCPUTotal5min | 5분 평균 CPU 사용률 (%) |
| 1.3.6.1.4.1.9.9.48.1.1.1.6 | cpmCPUTotal1min | 1분 평균 CPU 사용률 (%) |
| 1.3.6.1.4.1.9.9.109.1.1.1.1.3 | cpmCPUMemoryUsed | 사용 중인 메모리 (bytes) |
| 1.3.6.1.4.1.9.9.109.1.1.1.1.5 | cpmCPUMemoryFree | 여유 메모리 (bytes) |
Palo Alto 전용 OID
| OID | 이름 | 설명 |
|---|---|---|
| 1.3.6.1.4.1.25461.2.1.2.1.1.0 | panSessionActive | 활성 세션 수 |
| 1.3.6.1.4.1.25461.2.1.2.1.2.0 | panSessionMax | 최대 세션 수 |
| 1.3.6.1.4.1.25461.2.1.2.1.19.0 | panSessionUtilization | 세션 사용률 (%) |
| 1.3.6.1.4.1.25461.2.1.2.2.1.0 | panGPGWUtilizationPct | GlobalProtect 게이트웨이 사용률 (%) |
쿼리 확장 명령어
SNMP 앱은 쿼리 확장 명령어 통해 다음과 같은 기능을 제공합니다.
- SNMP Get: 특정 OID 값 조회(snmpv2-get, snmpv3-get)
- SNMP Get Next: 다음 OID 값 조회(snmpv2-getnext, snmpv3-getnext)
- SNMP Bulk Get: 여러 OID를 효율적으로 일괄 조회(snmpv2-bulkget, snmpv3-bulkget)
- SNMP Walk: OID 트리 순회(snmpv2-walk, snmpv3-walk)
- SNMP Status: 장비 상태 및 시스템 정보 조회(snmpv2-status, snmpv3-status)
- SNMP Scalars: 여러 스칼라 OID를 하나의 레코드로 조회(snmpv2-scalars, snmpv3-scalars)
- SNMP Interface Tables: 인터페이스 트래픽 통계 및 델타 계산(snmpv2-iftables, snmpv3-iftables)
각 확장 명령어의 설명서에서 사용 예를 참고하세요.
문제 해결
Request timeout 오류
원인:
- 네트워크 연결 문제
- 방화벽이 SNMP 포트(161/UDP) 차단
- 잘못된 커뮤니티/프로파일 설정
- 장비가 SNMP를 지원하지 않거나 비활성화됨
해결 방법:
-
timeout과 retry 값 증가
-
네트워크 연결 확인
-
방화벽 규칙 확인 (Windows)
Community name required 오류 (SNMPv2c)
원인: 커뮤니티 문자열이 지정되지 않음
해결 방법:
장비에 설정된 실제 커뮤니티 이름 확인하고 명시적으로 커뮤니티 지정하세요.
Authentication failed 오류 (SNMPv3)
원인:
- 잘못된 사용자 이름/비밀번호
- 잘못된 인증 프로토콜 선택
- 장비에 해당 사용자가 등록되지 않음
해결 방법:
-
프로파일 설정 확인:
- 사용자 이름이 정확한지 확인
- 인증 비밀번호가 정확한지 확인
- 인증 프로토콜(MD5/SHA)이 장비 설정과 일치하는지 확인
-
장비의 SNMPv3 사용자 설정 확인:
OID가 이름으로 표시되지 않음
원인: 해당 OID의 MIB 파일이 로드되지 않음
해결 방법:
-
벤더별 MIB 파일이 앱에 추가되어 있지 않기 때문입니다. 앱에 벤더 전용 OID를 추가해야 합니다.
MIB 파일 다운로드 소스:
- Cisco: https://www.cisco.com/c/en/us/support/mibs.html
- Palo Alto: https://docs.paloaltonetworks.com/resources/mib
- Fortinet: https://docs.fortinet.com/product/fortigate/mib
- Net-SNMP: http://www.net-snmp.org/docs/mibs/
Invalid scalar OID 오류 (snmpv2-scalars, snmpv3-scalars 명령어)
원인: scalars 명령어는 스칼라 OID만 지원하며, 반드시 .0으로 끝나야 합니다.
해결 방법:
# 잘못된 예 (테이블 OID)
snmpv2-scalars community=public host=192.168.1.1 oid=1.3.6.1.2.1.2.2.1.2
# 올바른 예 (스칼라 OID, .0으로 끝남)
snmpv2-scalars community=public host=192.168.1.1 oid=1.3.6.1.2.1.1.1.0
# 테이블 데이터는 walk 명령어 사용
snmpv2-walk community=public host=192.168.1.1 oid=1.3.6.1.2.1.2.2
32비트 카운터 오버플로우 문제
원인: ifInOctets, ifOutOctets 등의 32비트 카운터는 약 4GB에서 오버플로우가 발생합니다.
해결 방법:
-
SNMP 앱의 iftables 명령어는 자동으로 32비트 오버플로우를 처리합니다.
-
수동 계산이 필요한 경우 64비트 카운터를 사용하세요
대역폭 사용률이 100% 초과
원인:
- ifSpeed 값이 실제 인터페이스 속도와 다를 때
- 버스트 트래픽으로 순간 대역폭 초과할 때
- 측정 interval이 너무 짧을 때
해결 방법:
-
interval을 길게 설정하여 평균화
-
ifSpeed 값 확인. 필요시 장비에서 인터페이스 속도 재설정하세요.
특정 인터페이스만 필터링하고 싶음
현재 상태: iftables 명령어는 Ethernet 인터페이스(ifType=6)만 필터링
다른 타입 필터링 방법:
walk로 모든 인터페이스 조회 후 쿼리에서 필터링
snmpv2-walk community=public host=192.168.1.1 oid=1.3.6.1.2.1.2.2
| search ifType=117 # gigabitEthernet만 필터링
| search ifType=161 # ieee8023adLag (Link Aggregation)만 필터링
SNMP 응답 속도가 느림
원인:
- 장비의 SNMP 에이전트 성능 제한
- 네트워크 지연
- 너무 많은 OID 동시 조회
해결 방법:
-
snmpv2-bulkget, snmpv3-bulkget 명령어를 사용하세요(snmpv2-walk, snmpv3-walk보다 빠릅니다.)
-
여러 호스트 조회 시 병렬 처리 활용
-
필요한 OID만 선별하여 조회
Unresolved OID 오류
원인:
- MIB 파일에 해당 OID가 정의되지 않음
- 잘못된 OID 입력
해결 방법:
-
OID 형식 확인 (숫자로만 구성, 점으로 구분)
-
MIB 없이 숫자 OID로도 조회 가능
부록: 참고 자료
SNMP 프로토콜 문서
- RFC 1157: SNMPv1
- RFC 1213: MIB-II
- RFC 3411-3418: SNMPv3
- RFC 2578: SMIv2 (MIB 구조)
유용한 MIB 브라우저 도구
- iReasoning MIB Browser (무료): http://www.ireasoning.com/mibbrowser.shtml
- ManageEngine MibBrowser (무료): https://www.manageengine.com/products/mibbrowser-free-tool/
- net-snmp tools (오픈소스): http://www.net-snmp.org/
SNMP 테스트 도구
Linux/Unix - net-snmp 명령어
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.1.0
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2
snmpbulkwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2
Windows - PowerShell SNMP cmdlets
온라인 OID 조회
- OID Repository: http://www.oid-info.com/
- CISCO OID Lookup: https://snmp.cloudapps.cisco.com/Support/SNMP/do/BrowseOID.do