SNMP |
目錄· 概論和基礎觀念 · SNMP基本元件 · SNMP架構 · SNMP協定 · 開發和使用 · 使用舉例 簡單網絡管理協定(SNMP,Simple Network Management Protocol)構成了網際網路工程工作小組(IETF,Internet Engineering Task Force)定義的internet協定簇的一部分。該協定能夠支援網絡管理系統,用以監測連接配接到網絡上的裝置是否有任何引起管理上關注的情況。它由一組網絡管理的标準組成,包含一個應用層協定(application layer protocol)、資料庫模型(database schema),和一組資料物件。 概論和基礎觀念 在典型的SNMP用法中,有許多系統被管理,而且是有一或多個系統在管理它們。每一個被管理的系統上有運作一個叫做代理者(agent)的軟體元件,且透過SNMP對管理系統報告資訊。 基本上,SNMP代理者以變量呈現管理資料。管理系統透過GET,GETNEXT和GETBULK協定指令取回資訊,或是代理者在沒有被詢問的情況下,使用TRAP或INFORM傳送資料。管理系統也可以傳送配置更新或控制的請求,透過SET協定指令達到主動管理系統的目的。配置和控制指令隻有當網絡基本結構需要改變的時候使用,而監控指令則通常是常态性的工作。 可透過SNMP存取的變量以階層的方式結合。這些分層和其他中繼資料(例如變量的類型和描述)以管理資訊庫(MIBs)的方式描述。 SNMP基本元件 一個SNMP管理的網絡由下列三個關鍵元件組成: 網絡管理系統(NMSs,Network-management systems) 被管理的裝置(managed device) 代理者(agent) 一個網絡管理系統執行應用程式,以該應用程式監視并控制被管理的裝置。也稱為管理實體(managing entity),網絡管理者在這兒與網絡裝置進行互動。網絡管理系統提供網絡管理需要的大量運算和記憶資源。一個被管理的網絡可能存在一個以上的網絡管理系統。 一個被管理的裝置是一個網絡節點,它包含一個存在于被管理的網絡中的SNMP代理者。被管理的裝置透過管理資訊庫(MIB)收集并儲存管理資訊,并且讓網絡管理系統能夠透過SNMP代理者取得這項資訊。 代理者是一種存在于被管理的裝置中的網絡管理軟體模組。代理者控制本地機器的管理資訊,以和SNMP相容的格式傳送這項資訊。 SNMP架構 從體系結構上來講,SNMP架構由主代理、子代理和管理站組成。 主代理 主代理是一個在可執行SNMP的網絡元件上運作的軟體,可回應從管理站發出的SNMP要求。它的角色類似用戶端/伺服器結構術語中的伺服器。主代理依賴子代理提供有關特定功能的管理資訊。 如果系統目前擁有多個可管理的子系統,主代理就會傳遞它從一個或多個子代理處收到的請求。這些子代理在一個子系統以及對那個子系統進行監測和管理操作的接口内為關心的物件模組化。主代理和子代理的角色可以合并,在這種情況下我們可以簡單的稱之為代理(agent)。 子代理 子代理是一個在可執行SNMP的網絡元件上運作的軟體,執行在特定子系統的特定管理資訊庫(MIB,Management Information Base)中定義的資訊和管理功能。子代理的一些能力有: 蒐集主代理的資訊 配置主代理的參數 回應管理者的要求 産生警告或陷阱 對協定和管理資訊結構的良好分離使得使用SNMP來監測和管理同一網絡内上百的不同子系統非常簡單。MIB模型運作管理OSI參考模型的所有層,并可以擴充至諸如資料庫,電子郵件以及J2EE參考模型之類的應用。 管理站 管理者或者管理站提供第三個元件。它和一個用戶端/伺服器結構下的使用者端一樣工作。它根據一個管理者或應用程式的行為發出管理操作的請求,也接收從代理處獲得的TRAP。 SNMP協定 SNMP第一版和SMI規格的資料型态 SNMP第一版SMI指定許多SMI規格的資料型态,它們被分為兩大類: 簡單資料型态 泛應用資料型态 SNMP第二版和管理資訊結構 SNMP第二版SMI在RFC 2578之中描述,它在SNMP第一版的SMI規格資料型态上進行增加和強化,例如位元串(bit strings)、網絡位址(network addresses)和計數器(counters)。 SNMP協定在OSI模型的應用層(第七層)運作,在第一版中指定五種核心PDU: GET REQUEST GETNEXT REQUEST GET RESPONSE SET REQUEST TRAP 其他PDU在SNMP第二版加入,包含: GETBULK REQUEST INFORM SNMP第二版SMI資訊子產品 SNMP第二版SMI也指定了資訊子產品來詳細說明一群相關連的定義。有三種SMI資訊子產品:MIB子產品、回應狀态、能力狀态。 SNMP第三版 SNMP第三版由RFC 3411-RFC 3418定義,主要增加SNMP在安全性和遠端配置方面的強化。 SNMP第三版提供重要的安全性功能: 資訊完整性:保證封包在傳送中沒有被竄改。 認證:檢驗資訊來自正确的來源。 封包加密:避免被未授權的來源窺探。 開發和使用 第一版 SNMP的第一個RFC系列出現在1988年: RFC 1065:基于TCP/IP網絡的管理資訊的結構和認定 RFC 1066:以基于TCP/IP網絡的網絡管理為基礎的管理資訊 RFC 1067:一個簡單網絡管理協定 這些協定被廢除經由: RFC 1155:基于TCP/IP網絡的管理資訊的結構和認定 RFC 1156:以基于TCP/IP網絡的網絡管理為基礎的管理資訊 RFC 1157:一個簡單網絡管理協定 SNMP協定工作在OSI模型的應用層(第七層)。它(在第一版中)指定了四種核心協定資料單元(PDU): GET,用來得到一條管理資訊 GETNEXT,用來反複得到管理資訊的序列 SET,用來給一個被管理的子系統制造一個變化 TRAP,用來報告一個關于被管理子系統的警告或其他異步事件 典型的,SNMP為代理使用UDP端口161,為管理站使用UDP端口162。 第一版因為其脆弱的安全性而備受争議。用戶端的認證使用明碼傳送。在80年代,SNMP第一版被設計出來的時期,網際網路标準的認證/安全并不被主要的協定設計團體所重視。 第二版 SNMP第二版(RFC 1441–RFC 1452)修訂了第一版并且包含了在性能、安全、機密性和管理者之間通信這些領域的改進。它引入了GETBULK以取代反覆的GETNEXT,藉以在單個請求中擷取大量的管理資料。然而,SNMP第二版的新安全系統被認為過于複雜,而不被廣泛接受。 SNMP v2c(基于社群的SNMP第二版)定義于RFC 1901–RFC 1908,一開始也非正式的被稱為SNMP第1.5版。SNMPv2c包含SNMP第二版除了受争議的新SNMP第二版安全模型以外的部份,并以SNMP第一版的簡單的基于社群的安全性方案取而代之。 SNMP v2u(基于使用者的SNMP第二版)定義于RFC 1909–RFC 1910。這是一個SNMP第一版和SNMP第二版的折衷方案,試圖提供比SNMP第一版更好的安全性,又不遭遇SNMP第二版的高複雜度。這産生一個被商業化的變種,稱為SNMP v2*,而且它的機制最後被SNMP第三版的兩個安全性架構之一采用。 SNMP第一版和SNMPv2c的互操作性 在目前的指定中,SNMP第二版和SNMP第一版在兩個關鍵領域不相容:訊息格式和協定操作。SNMPv2c 訊息使用和SNMP第一版不同的标頭和協定資料單元(PDU)格式。SNMPv2c也使用兩個沒有在SNMP第一版指定的協定操作。此外,RFC 1908定義兩個可能的SNMP第一版/第二版共存政策:代理伺服器代理(proxy agents)和雙語網絡管理系統(bilingual network-management systems)。 第三版 Internet工程工作小組(IETF)把在RFC3411-RFC3418(STD0062)中定義的SNMP第三版作為2004年的标準版本。IETF将先前的版本定為“Obsolete”或“Historical”。 實際上,SNMP實作通常支援多個版本:典型的SNMPv1、SNMPv2c以及SNMPv3。參見RFC3584“Internet标準網絡管理架構第一、二、三版間的共存”。 SNMP第三版提供三項重要的服務:認證、隐私和存取控制。 使用舉例 監控裝置正常運作時間 (sysUpTimeInstance) 作業系統版本清單 (sysDescr) 收集接口資訊 (ifName, ifDescr, ifSpeed, ifType, ifPhysAddr) 測量網絡接口吞吐量 (ifInOctets, ifOutOctets) 查詢遠端ARP快取 (ipNetToMedia) 下面的輸出作為在一個路由器上的snmpwalk的例子展示了裝置的基本資訊: snmpwalk -c public punch system SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software IOS (tm) C2600 Software (C2600-IO3-M), Version 12.2(15)T5, RELEASE SOFTWARE (fc1) TAC Support: http://www.cisco.com/tac Copyright (c) 1986-2003 by cisco Systems, Inc. Compiled Thu 12-Jun-03 15:49 by eaarm SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.187 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (835747999) 96 days, 17:31:19.99 SNMPv2-MIB::sysContact.0 = STRING: wikiuser SNMPv2-MIB::sysName.0 = STRING: punch SNMPv2-MIB::sysLocation.0 = STRING: test SNMPv2-MIB::sysServices.0 = INTEGER: 78 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.0 |