620 likes | 1.05k Views
SNMP. Dr. Hsiang-Fu Yu National Taipei University of Education Original by 台灣培生教育出版股份有限公司. Overview. 組成網路管理系統的元件 SNMP 封包的欄位 SNMP 協定的資料單元 (Protocol Data Unit, PDU) MIB tree 的結構 MIB-2 object 及 object identifier SNMP 指令示範 SNMP 的安全設定.
E N D
SNMP Dr. Hsiang-Fu Yu National Taipei University of Education Original by 台灣培生教育出版股份有限公司
Overview • 組成網路管理系統的元件 • SNMP 封包的欄位 • SNMP 協定的資料單元 (Protocol Data Unit, PDU) • MIB tree 的結構 • MIB-2 object 及 object identifier • SNMP 指令示範 • SNMP 的安全設定
Management Station/Management Agent Communication • 網路管理環境中的基本元件 • Management application • Management process • SNMP • Management MIB • Communication architecture • Agent process • Agent MIB
Management Application • 存取位於 management agent 中的資訊 • 呈現的資料常對映部份或全部 ISO 網路管理類別 • 這些類別包括 fault management、configuration management、performance management、security management及accounting management • 某些 NMS 應用程式提供與類別相關的分析,並且以圖形表示 • 本書使用的 NMS 是由 Apptitude 公司提供的 Meterware/Analyzer
Management Process (管理程序) • 由一個或多個管理程序所組成,這些管理程序是應用層的程式 • 例如某個管理程序從 MIB 資料結構存取管理應用程式所請求的 MIB 變數,然後傳送給 SNMP 模組
Management Station SNMP • SNMP 封包包含 • Version number • Community string • SNMP command • Variables
Management Agent SNMP • Management station 傳送訊框給 agent 的 MAC 層 • 附加的封包傳送給 TCP/IP 協定處理 • SNMP 的封包傳送給應用層的 SNMP 模組 • SNMP 程序解壓縮 MIB 變數後,再傳送給適當的 agent process
Agent Process • 映射變數到某個子系統,子系統設定該變數值 • 傳回變數值給 SNMP • SNMP 建立 SNMP 標頭,並傳送標頭、變數、及變數值給 TCP/IP 傳輸層 • MAC 層建立訊框,並傳送訊框給management station,然後傳送變數值給 management application
Management Station/Management Agent Communication (cont.) • 執行網路管理的重要元件 • Management station 的 MIB 以及其中儲存的 MIB 變數 • 請求、顯示、及分析 MIB 值的 management application • 建立請求及回覆訊息的 SNMP。 • Management agent 的 agent process。將請求的變數傳給子系統,子系統設定變數值,然後再送給 SNMP 模組 • 目前的 SNMP 有三種版本,SNMPv1 是網路上的普及版本
SNMP 封包 • Version • Management station 及 management agent 所使用的 SNMP 版本 • 本書以 SNMP 代表 SNMPv1,在版本欄位中,以“0”編碼表示 SNMP 第一版
SNMP 封包 (cont.) • Community Name • 是 SNMP 的密碼 • Management station 及 management agent 必須使用相同的 community name,否則訊框會被棄置 • Management agent 可以使用 community name 來管制 management station 存取 MIB 變數值,兩者也必須使用相同的 SNMP 版本,否則訊框會被棄置 • SNMP 的群體名稱沒有加密,所以沒有防止網路入侵的安全措施。SNMPv3 則對此多所改良
SNMP 封包 (cont.) • Protocol Data Unit (PDU) for the SNMP Get-Request, Get-Next-Request and Set-Request • Request ID • 整數,是 management station 送到 agent 的請求識別碼 • Management agent 送出的回覆也使用此欄位,讓 management station 的 SNMP 可以將請求及回覆建立關聯
PDU (cont.) • Error Status • 在“Get-Request”訊息,這個欄位的值是0 • 在“Get-Response”訊息,management agent 使用這個欄位通知 management station,以此得知是否收到正確 PDU • 若發生 錯誤,本欄位將回覆“非0”的值。本欄位有六個可能的值 • noError = 0 • tooBig = 1 = “PDU has too many bytes” • noSuchName = 2 = “there is no object with this name” • badValue = 3 = “integer identifying the PDU type is bad” • readOnly = 4 = “incorrect implementation of SNMP” • genErr = 5 = “unspecified errors of other types”
PDU (cont.) • Error Index • 整數,由1開始 • 在“Get-Response”訊息,當 VarBindList 引起 Error Status 欄位出現錯誤碼時,Error Index 指示 VarBindList 中的第一個錯誤變數 • 對 Management station 請求的 PDU 而言,“Error Status”及“Error Index”的值均為0 • VarBindList • 一連串 Variable ID 與 Variable Value 的組合
VarBindList • Variable ID • Contain the Object Identifier of the variable defined in SMI • The Object Identifier defines the path to the object in the MIB tree • Variable Value 可能是整數、8進位字串或 IP 位址。 • Management station 可以在一個請求封包中請求很多變數值,所以 VarBindList 可以包含若干欄位的組合,每個請求值對應到一欄位
SNMP 指令 • SNMP 定義5種指令,括號中的數字對應其相關的 PDU 種類 • Get-Request(0) • 請求 management agent 的 MIB,提供一個值或一組值 • Get-Next-Request(1) • 請求提供 MIB 樹中,比現有的 Object Identifier 的詞彙順序更大的下一個 Object Identifier 的值 • Management station 不斷使用這個指令,可以“走”過全部的 MIB tree,得到所有變數的值,而不必指定任何變數的Identifier • Get-Response(2) • Management agent 將請求值回覆給 management station
SNMP 指令 (cont.) • Set-Request(3) • 設定(或更改)management agent 中 MIB 的值 • Trap(4) • Management agent 主動傳送訊息給management station。警告訊息由 agent 的alarm/event 組合來啟動。目的是通知management station 可能發生需要網路管理員採取行動的事件
SNMP Trap PDU • Enterprise • 包含由授權廠商為發出警告訊息的設備子系統所定義 Object Identifier • Agent Address • 網路設備的 IP 位址
SNMP Trap PDU (cont.) • Generic Trap Number • 以整數代表 SNMP RFC 1157 所定義7種警告 • Specific Trap Number • 代碼;management station 也許需為設備建立專用MIB,以了解此碼含意 • Time Stamp • 設備 agent 自啟動後經過的時間,精確度達0.01秒 • VarBindList • 包含圖6.4中的全部或部份資訊以及其他可以用來解決問題的資訊,例如:Object Identifier 以及識別特定錯誤的相關值
Structure of Management Information (SMI) • 為了讓 management agent 找到請求值,必須提供 agent process 可以使用的資料結構 • Agent process 可以使用該資料結構,映射Object Identifier 到設備子系統的儲存值 • MIB 有階層式的樹狀結構,MIB 的每個物件都有一個 Object Identifier,即圖6.4中的Variable ID • Object Identifier 定義物件在樹狀結構中的位置。每個物件都有個名稱。也可以定義相關物件的群組
SMI (cont.) • 每個物件都有型別(如整數),而型別可以是 simple 或 constructed • Simple 型別的物件只包含一個值 • Constructed 型別的物件包含其他 simple 物件,而 constructed 型別中的 simple 物件可以有不同的型別
SMI (cont.) • SMI 使用部分的 Abstract Syntax Notation One (ASN.1) 來正式定義 MIB 物件 • RFC 1155 • ANS.1 描述物件的型別,並定義物件的格式,包括物件名稱、型別,例如: • 是否可被 management station 存取; • 若可存取,其型別就可能是唯讀、可讀-寫、或不可存取
SMI (cont.) • SMI object tree 的部分物件是由樹根開始 • 樹中的每個節點包含物件的名稱及識別碼 • 識別碼由一組數字組成,其中以點號(.)分開 • 識別碼定義由樹根到物件的路徑,數字0表示根節點 • 圖6.6特別標示方塊所指示的路徑可以組成物件名稱為 sysDescr(1)的識別碼:1.3.6.1.2.1.1.1
SMI (cont.) • MIB 中擁有很多物件,均可依照上述方法來識別,因此該物件樹便可無限深入 • MIB 物件是相關的,例如包含網路設備介面資訊的物件可放在同一個群組 • 現在 MIB 的標準為 MIB-2 • MIB-2 原本包括10個群組,後來又新增了13個群組,稱為 extensions • system、interfaces、address translation(at)、internet protocol(ip)、internet control management protocol(icmp)、transmission control protocol(tcp)、unreliable datagram protocol(udp)、exterior gateway protocol(egp)、transmission、simple network management protocol(snmp)
SMI (cont.) • MIB-2 的物件無法滿足所有使用者及廠商的需求,所以很多廠商為其設備建立專用的MIB • 這些 MIB 列在 private(4) 節點的子節點Enterprise 節點之下,如圖6.6所示 • 在使用者取得廠商提供的 MIB 後,會編譯該物件並載入 management station 中,以存取設備中的更多物件 • MIB 的一個重要 extension 是遠端監視(RMON)。RMON 的物件包含網路區段的流量資訊
SMI (cont.) • 為瞭解如何識別及取得 MIB 值,以及資料擷取的過程,先來認識較普遍的例子 ─ 從 table 取得物件值 • 為了讓討論實際且有趣,將使用表6.1的 IP Routing Table 為例子。展開圖6.6中的 MIB-2(1)物件,用以顯示 ipRouteTable 物件,結果如圖6.7
ipRoute Dest (1) ipRoute ifindex (2) ipRoute Metric 1 (3) ipRoute Metric 2 (4) ipRoute Metric 3 (5) ipRoute Metric 4 (6) ipRoute NextHop (7) ipRoute Type (8) ipRoute Protocol (9) ipRoute Age (10) ipRoute Mask (11) ipRoute Metric 5 (12) ipRoute Info (13) 10.3.4.3 1 10.3.4.4 2 10.3.4.5 3 SMI (cont.) • Table 6-1: ipRouteTable = 1.3.6.1.2.1.4.21
SNMP 指令實例 • ip 是原 mib-2 的10個物件之一 • group (9) 是保留給 OSI 的 MIB 物件 • ip 物件包含23個物件,ipRouteTable 為其一 • ipRouteTable 包括 ipRouteEntry(1)物件,這個物件又包含了13個 column object • ipRouteTable 物件的 instance (實體)是表格中所有的值;column object 的實體是某一行的一個值
Get-Request 指令實例 • 假設 management station 要存取 column object ipRouteNextHop 的實體,需要提供以下 Object Identifier 給 SNMP • ipRouteTable 的識別碼是1.3.6.1.2.1.4.21 • ipRouteEntry 的識別碼是1.3.6.1.2.1.4.21.1 • ipRouteNextHop 的識別碼是1.3.6.1.2.1.4.21.1.7
Get-Request 指令實例 (cont.) • SNMP 使用 index object (指標物件)來選擇列 • 指標物件可以是一個或多個 column objects • ipRouteTable 使用一個指標物件,即 ipRouteDestination • 需要 ipRouteNextHop 實體時,因為 ipRouteDestination 指標物件的值是10.3.4.5,所以管理站提供下列的實體識別碼給 SNMP:1.3.6.1.2.1.4.21.1.7.10.3.4.5
Get-Request 指令實例 (cont.) • 某一列的某一個 column object 的實體識別碼是這 column object 的識別碼後加上這一列的指標物件實體所組成 • 在本例中,此 column object 的識別碼是1.3.6.1.2.1.4.21.7,這一列的指標物件實體是10.3.4.5
Get-Request 指令實例 (cont.) • 使用 SNMP 應用程式的指令行介面時,在命令列符號之後輸入下面的指令 • Get-Request(1.3.6.1.2.1.4.21.1.7.10.3.4.5)或 • Get-Request(ipRouteNextHop.10.3.4.5) • 這指令將產生1.3.6.1.2.1.4.21.1.7.10.3.4.5,這個識別碼可放在圖6.4的 Variable ID 欄中
Get-Request 指令實例 (cont.) • 若需要這一列的更多實體,例如: ipRouteifIndex 及 ipRouteNextHop,可以輸入下列指令 • Get-Request(1.3.6.1.2.1.4.21.1.2.10.3.4.5,1.3.6.1.2.1.4.21.1.7.10.3.4.5)或 • Get-Request(ipRouteifIndex.10.3.4.5,ipRouteNextHop.10.3.4.5) • The instance of a simple object is indicated by appending “.0” • Ex. sysDescr.0
Get-Next-Request 指令實例 • Get-Next-Request 會照詞彙順序 (lexicographical) 取得下一物件 • “getnext sysDescr.0”指令會得到1.3.6.1.2.1.1.2.0,這是 sysObjectID.0 的物件識別碼 • 這個值也等於1.3.6.1.4.1.311.1.1.3.1.3 • 在 SMI 樹中,這是 enterprises 分支(1.3.6.1.4.1)上節點的值。Enterprises 的表示數字是311,即 IBM • 從回覆值得知:IBM IntelliStation 伺服器中網路管理子系統的 IAB 授權值是 311
Get-Next-Request 指令實例 (cont.) • 使用“Get-Request”指令時,若請求的物件沒有值,得到的回覆會是“空白”或錯誤訊息 • 使用“Get-Request”存取很多數值時,若某個請求物件沒有值,就不會有回覆值 • “Get-Next-Request”指令可以克服這個問題 • Ex, Get-Next-Request (sysDescr, sysObjectID, sysUpTime) • Get-Response((sysDescr.0 =值), (sysObjectID.0 =值),(sysUpTime.0 =值)).
Get-Next-Request 指令實例 (cont.) • 假設這個設備所請求的 sysDescr 是錯的或是請求的管理站不能存取這個物件,給予下列相同指令時 • Get-Next-Request (sysDescr, sysObjectID, sysUpTime) • Agent 送出的“Get-Response”將是 • Get-Response ((sysObjectID.0 =值), (sysObjectID.0 =值), (sysUpTime.0 =值)). • 依照下列的詞彙順序,“Get-Response”送回第一個(sysObjetID.0 =值),因為這是無效 sysDescr之後的下一個有值物件 • SysDescr 〔1.3.6.1.2.1.1.1〕 • SysDescr.0 〔1.3.6.1.2.1.1.1.0〕 • sysObjectID 〔1.3.6.1.2.1.1.2〕 • sysObjectID.0 〔1.3.6.1.2.1.1.2.0〕
Get-Next-Request 指令實例 (cont.) • 使用下列指令時 • Get-Next-Request(sysDescr.1, sysObjectID, sysUpTime) • 因為 sysDescr.1 不是有效的實體識別碼,“Get-Next-Request”指令依照詞彙順序,得到下一個物件,也就是 sysObjetID.0。另外兩個請求的物件是對的,所以如預期取得正確值 • “Get-Next-Request”指令的特性是可以依照詞彙順序,由任何點取得 MIB 中的所有值。
Get-Next-Request 指令實例 (cont.) • 因為 SNMP 無法回覆表中所有的值或任一列的所有值時,SNMP 依照詞彙順序,回覆下一個可以取得的物件實體 • Ex. Get-Next-Request (ipRouteDestination.10.3.4.5) • Get-Response (ipRouteifIndex.10.3.4.5 = 1)
Set 指令 • Set 指令寫入物件的值。例如,若要改變設備的 sysContact,可以使用下面的指令 • Set-Request (sysContact = 名稱) • Get-Response (sysContact =名稱) • 這兩個指令的 VarBindList 都是“sysContact|名稱” • 也可使用 SNMP 的“Set-Request”來增加或刪除表格中的一列。但結果和 management agent 的實作有關。
Security • Authentication 為 SNMP 安全的第一道防線 • community name 認證 management station 及 agent 之間的訊息 • Receiver 的資料庫中必須有 sender 使用的 community name ,否則訊息會被丟棄 • community name 定義 SNMP 群體表示一個 agent 與一組 management stations 間的關係 • 數個 management stations 可以存取一個 agent 的訊息。同理,一個 agent 可傳送警告訊息給數個 management stations
Security (cont.) • Authorization 提供第二道安全保護防線,決定 management station 對 MIB 物件的使用權限 • SNMP access mode 決定一組權限,agent 可以選擇唯讀或讀-寫模式存取 MIB 物件 • 另一組權限是由 MIB view 所決定。MIB view 是一組 MIB 物件,可以限制 management station 使用 SNMP access mode 來存取物件 • SNMP community profile 定義為 SNMP access mode 及 MIB view 的組合 • SNMP access policy 定義為 SNMP Community 及 SNMP Community Profile 的組合
Security (cont.) • Agent 必須維護 a table of SNMP Access Policy, 這個表格映射 community name 到 SNMP Access Policy • 當 agent 收到訊息後,以訊息中的 community name 檢視這個表格。若存在則 management station 依照對應的存取政策來存取 MIB 物件 • MIB Access 與 SNMP Access Mode 不同,MIB Access 被定義在 RFC 1155 (SMI),作為 MIB Object 被存取權限的選項 • MIB Access 和 SNMP Access Mode 的效果如下表
SNMP Access Mode MIB Access Resolution Read-Only Read-Only Object available for Get and Trap operations Read-Write Object available for Get and Trap operations Write-Only Object available for Get and Trap operations but the value is implementation dependent Not-accessible Object is unavailable Read-Write Read-Only Object available for Get and Trap operations Read-Write Object available for Get, Set and Trap operations Write-Only Object available for Get, Set and Trap operations but the value is implementation dependent for Get and Trap operations Not-Accessible Object is unavailable Security (cont.) • Table 6-3: Resolution of SNMP Access Mode and MIB Access
SNMP NMS 應用程式 • 大多數 NMS 都包含瀏覽 MIB 的應用程式。這個程式提供 MIB 圖形化外觀,可以清楚顯示回覆的物件值 • 反白顯示物件後,再點選“Get”按鈕,就可以建立“Get-Request”或“Get-Next-Request”指令 • 傳送指令到 SNMP 後, SNMP 將建立正確的 PDU,再把 PDU 傳送給反白顯示設備的 agent • “Set”按鈕(右上的藍/紅按鈕)可以更改反白顯示的 MIB 物件值。結果將傳送到視窗的底部面板
SNMP 的訊息捕捉 • 封包有三種型別:IP、UDP 及 SNMP • SNMP 使用 UDP 做為傳輸層協定,以減少管理訊框的經常成本 • 表6.4列出“Get-Next-Request”訊息的解碼以供比較,這些資料也顯示在圖6.13的 SNMP 部份