SNMP 的基礎與應用

ExtremeXOS 網路架構大師課程

👋 課程導言

歡迎來到 ExtremeXOS 網路架構課程。今天我們要來深入探討網管人員的「聽診器」—— SNMP。 在專業的網路管理實務中,無論是管理小型辦公室的基礎設備,還是維運橫跨多國的大型雲端資料中心,SNMP 始終是監控網路健康狀態不可或缺的基石。 本課程將化繁為簡,不讓生硬的 OID 或 MIB 術語成為學習障礙,用最直觀且深入淺出的方式,帶領大家掌握 SNMP 的核心技術與應用。

1

核心概念 (Concept)

一句話定義

SNMP (Simple Network Management Protocol) 是一種標準化的應用層協定,用於在 IP 網路上「監控」與「管理」設備的狀態。

生活化比喻:醫院的健康檢查

🏥 醫療場景

  • 醫生 (Doctor):負責發問、記錄數據的人。
  • 病患 (Patient):被檢查的對象。
  • 病歷表 (Chart):上面有標準的欄位(如血壓、心跳、身高)。
  • 問診 (Checkup):醫生問:「你現在血壓多少?」病患回答:「120/80」。
  • 緊急求救 (Emergency):病患突然心臟病發,主動按鈴呼叫醫生。

🌐 網路世界 (SNMP)

  • NMS (Manager):網管伺服器,負責收集資料。
  • Agent (Device):交換器、路由器等設備。
  • MIB/OID:資料結構,定義了哪串數字代表 CPU 使用率或流量。
  • Polling (Get Request):NMS 問設備:「Port 1 流量多少?」設備回答數據。
  • Trap / Inform:設備發生 Link Down 或過熱,主動發送警報給 NMS。
2

運作原理 (Mechanism)

技術元件詳解

1. 管理資訊庫 (MIB) 與 OID

MIB 就像是圖書館的分類索引,是一個樹狀結構。樹上的每一個節點都有一個唯一的編號,稱為 OID (Object Identifier)

例如:.1.3.6.1.2.1.1.1 通常代表設備的系統描述 (sysDescr)。

2. 溝通語言 (Operations)

  • Get / GetNext / GetBulk:NMS 向設備索取資料 (讀取)。
  • Set:NMS 修改設備設定 (寫入,例如關閉某個 Port)。
  • Trap:設備主動通報異常 (射後不理,UDP)。
  • Inform:設備主動通報 (需要 NMS 回覆確認,較可靠)。

3. 傳輸層協定

使用 UDP
Port 161 (Agent 監聽,接收查詢)
Port 162 (NMS 監聽,接收 Trap)

版本演進與關鍵參數

版本 安全性 (Security) 特點
SNMPv1 極低 (明文 Community) 最古老,不支援 64-bit 計數器 (無法準確統計 10G 流量)。
SNMPv2c 低 (明文 Community) 目前最常用。效能佳,支援 64-bit counters,支援 GetBulk。
SNMPv3 高 (加密 + 驗證) 支援 Auth (MD5/SHA) 與 Priv (DES/AES),配置較複雜但安全。
大師提示: 在內網環境,為了除錯方便,v2c 仍是主流;但在跨越公網或高安全區域,務必使用 v3。
3

架構視覺化 (Visuals)

SNMP 監控拓撲圖

此圖展示了 NMS 如何透過 UDP 161/162 與不同區域的設備進行互動。

graph TD subgraph Mgmt ["管理中心 (Management VLAN)"] NMS["NMS Server
(Manager)"] DB[("Log Database")] NMS -->|"儲存歷史數據"| DB end subgraph Core ["核心網路 (Core)"] CoreSW["Core Switch
(ExtremeXOS)"] end subgraph Edge ["邊緣網路 (Edge)"] AccessSW1["Access Switch 1"] AccessSW2["Access Switch 2"] end NMS -- "UDP 161 (Get/Set)" --> CoreSW NMS -- "UDP 161" --> AccessSW1 CoreSW -.-> |"UDP 162 (Trap Alert!)"| NMS AccessSW2 -.-> |"UDP 162 (Trap Alert!)"| NMS CoreSW --- AccessSW1 CoreSW --- AccessSW2 style NMS fill:#f9f,stroke:#333,stroke-width:2px style CoreSW fill:#bbf,stroke:#333,stroke-width:2px

Polling 與 Trap 互動流程

sequenceDiagram participant NMS as NMS Manager participant Agent as Switch (Agent) Note over NMS, Agent: 情境一:NMS 主動查詢 (Polling) NMS->>Agent: GetRequest (OID: ifInOctets.1) Agent-->>NMS: Response (Value: 500230 Bytes) Note over NMS, Agent: 情境二:發生異常 (Trap) Agent->>Agent: 偵測到 Port 1 Link Down Agent->>NMS: Trap (OID: linkDown, Port: 1) Note right of NMS: NMS 不會回覆 Trap (UDP) Note over NMS, Agent: 情境三:發生異常 (Inform - 可靠傳輸) Agent->>NMS: InformRequest (Link Down) NMS-->>Agent: Response (確認收到)
4

實務應用場景 (Use Case)

案例:企業總部流量監控與異常告警

情境描述

公司的 ERP 系統最近常變慢。網管團隊懷疑是核心交換器的 Uplink 頻寬被其他流量塞滿。 我們需要利用 SNMP 定期收集流量數據繪製成圖表 (如 MRTG/Cacti/PRTG),並在 Port 斷線時收到通知。

ExtremeXOS 設定範例

Extreme Networks
# 1. 設定 SNMP v2c Community 字串 (唯讀)
X460G2.1 # configure snmp add community readonly public_view

# 2. 指定 Trap 接收伺服器
X460G2.2 # configure snmp add trapreceiver 192.168.10.100 community private_trap

# 3. 啟用特定 Trap 事件 (如 Link Down/Up)
X460G2.3 # enable snmp traps port-up-down ports all

# 4. 檢視設定
X460G2.4 # show management

Cisco IOS 設定範例 (對照)

Cisco
! 1. 設定 Community (RO = Read Only)
Switch(config)# snmp-server community public_view ro

! 2. 指定 Trap 接收者
Switch(config)# snmp-server host 192.168.10.100 version 2c private_trap

! 3. 啟用 Traps
Switch(config)# snmp-server enable traps

優缺點分析

優點
  • 標準化協定,支援幾乎所有廠商。
  • Polling 機制可產生長期的歷史趨勢圖。
  • Trap 機制可提供即時的故障通知。
缺點
  • 頻繁 Polling 可能消耗設備 CPU (Control Plane)。
  • v1/v2c 為明文傳輸,易被竊聽 Community String。
  • UDP 傳輸不保證 Trap 一定會送達 (除非改用 Inform)。
5

大師隨堂測驗 (Quiz)

Q1. 預設情況下,SNMP Agent (設備端) 監聽哪一個 UDP Port 來接收 NMS 的查詢?

答案:B (161)
解析:Agent (交換器) 使用 UDP 161 接收 NMS 的 Get/Set 請求;而 NMS 使用 UDP 162 接收 Agent 發出的 Trap。

Q2. 關於 SNMP 版本的敘述,下列何者正確?

答案:C
解析:v1 與 v2c 僅使用 Community String (明文) 驗證。v3 才是真正支援安全性 (User-based Security Model) 的版本。v1 也不支援 64-bit Counter。

Q3. 如果您希望設備發出警報時,必須確認 NMS 有收到,否則重傳。應使用哪種機制?

答案:D (Inform)
解析:Trap 是「射後不理」(Fire and Forget),NMS 不會回覆 Ack。Inform 則要求 NMS 回覆確認,若未收到確認,Agent 會重試。

Q4. OID (Object Identifier) 在 SNMP 架構中的角色為何?

答案:B
解析:OID 就像是圖書館的索書號或導航的 GPS 座標,用來精確定位 MIB 中的某個數值 (例如 CPU loading)。

Q5. 在 ExtremeXOS 中,若要設定一個僅供讀取的 Community string 名為 "monitor",指令應為何?

答案:B
解析:選項 A 是 Cisco 的語法。選項 B 才是 ExtremeXOS 的標準語法 (`configure snmp add community readonly [name]`)。