一篇SNMP入門的文章
目錄
前言:現在的專案有裝置是用的snmp協議,需要進行對接,然後整理了一個文件出來方便理解,最後被要求在內部做了一次分享會,也就是現在的版本。章節分的不是很好,內容僅供參考!
一、SNMP概述
1.1、什麼是snmp
簡單網路管理協議(SNMP:Simple Network Management Protocol)是由網際網路工程任務組(IETF:Internet Engineering Task Force )定義的一套網路管理協議。該協議基於簡單閘道器監視協議(SGMP:Simple Gateway Monitor Protocol)。
1.2、SNMP應用場景
利用SNMP,一個管理工作站可以遠端管理所有支援這種協議的網路裝置,包括監視網路狀態、修改網路裝置配置、接收網路事件警告等。SNMP的基本思想:為不同種類的裝置、不同廠家生產的裝置、不同型號的裝置,定義為一個統一的介面和協議,使得管理員可以使用統一的網管面對這些需要管理的網路裝置進行管理。通過網路,管理員可以管理位於不同物理空間的裝置,從而大大提高網路管理的效率,簡化網路管理員的工作。
1.3、SNMP和UDP
SNMP採用UDP協議在管理端和agent之間傳輸資訊。 SNMP採用UDP 161埠接收和傳送請求,162埠接收trap,執行SNMP的裝置預設都必須採用這些埠。SNMP訊息全部通過UDP埠161接收,只有Trap資訊採用UDP埠162。
1.4、Snmp版本
SNMP目前共有v1,v2,v3三個版本,下圖從安全性對比了三個版本:
SNMPV1,V2均採用明文傳送,SNMPV3採用加密傳送,也就是說對應SNMPV1,V2用抓包工具能在資料包中直接看到團體名。
二、SNMP組成
在具體實現上,SNMP為管理員提供了一個網管平臺(NMS),又稱為【管理站】,負責網管命令的發出、資料儲存、及資料分析。被監管的裝置上執行一個SNMP代理(Agent)),代理實現裝置與管理站的SNMP通訊。
- 裝置:指在網路中需要管理和監控的裝置,例如提供服務的伺服器、路由器等,這些裝置必須支援snmp協議;
- 管理元件:一般來說指的是執行網路管理系統的計算機(也可以指在這個計算機上執行的監控軟體),這個計算機可能與被管理的網路裝置在地理上隔絕的,但是可以遠端監控和管理網路裝置,例如網咖的網管的電腦就可以看做一個管理元件,可以用來監控每個電腦的執行,以及管理你上網的時間並提出預警;
- 代理Agent:這是指執行在被管理裝置上的一個軟體模組,用來維護被管理裝置的管理資訊資料並可在需要時把管理資料傳送給管理元件;
-
- 代理有MIB(Management Information Base,管理資訊庫)物件變數,可以從管理資訊庫MIB收集資訊並回傳給管理元件;
- 管理資訊(MIB)庫可以理解成為agent維護的管理物件資料庫,MIB中定義的大部分管理物件的狀態和統計資訊都可以被NMS訪問。MIB是一個按照層次結構組織的樹狀結構,每個被管物件對應樹形結構的一個葉子節點,稱為一個object,擁有唯一的數字識別符號。在網路裝置的MIB庫中有由多個MIB模組定義的多組各自相關聯的物件,其實說白了裡面儲存的是網路裝置的屬性,比如系統資訊,網絡卡資訊,程序使用者數等等;
-
- 當網路管理協議在報文中使用MIB變數時,每個變數名後還要加一個字尾,以作為該變數的一個例項,以獲取MCV3000版本資訊的ODI為例: 1.3.6.1.4.1.16535.4.1.0
三、snmp命令
3.1、代理和管理站的模型
Snmp分2種角色:SNMP管理站(manager,我們的本機127.0.0.1)和SNMP代理(agent, 我們要操作的機器,比如 192.168.1.144)。管理站指的是運行了可以執行網路管理任務軟體的伺服器,通常被稱作為網路管理工作站(NMS),NMS負責取樣網路中agent的資訊,並接受agent的trap。代理是實際網路裝置中用來實現SNMP功能的部分。代理在UDP的161埠接收NMS的讀寫請求訊息,管理站在UDP的162埠接收代理的事件通告訊息。所以,一旦獲取裝置的訪問許可權(community,預設為public),就可以訪問裝置資訊、改寫和配置裝置引數。由於採用UDP協議,不需要在代理和管理站之間保持連線。
3.2、SNMP的操作命令
SNMP協議之所以易於使用,這是因為它對外提供了三種用於控制MIB物件的基本操作命令。它們是:Get、Set 和 Trap。
- Get:管理站讀取代理者處物件的值。它是SNMP協議中使用率最高的一個命令,因為該命令是從網路裝置中獲得管理資訊的基本方式。
- Set:管理站設定代理者處物件的值。它是一個特權命令,因為可以通過它來改動裝置的配置或控制裝置的運轉狀態。它可以設定裝置的名稱,關掉一個埠或清除一個地址解析表中的項等。
- Trap: 代理者主動向管理站通報重要事件。它的功能就是在網路管理系統沒有明確要求的前提下,由管理代理通知網路管理系統有一些特別的情況或問題 發生了。如果發生意外情況,客戶會向伺服器的162埠傳送一個訊息,告知伺服器指定的變數值發生了變化。通常由伺服器請求而獲得的資料由伺服器的161 埠接收。Trap 訊息可以用來通知管理站線路的故障、連線的終端和恢復、認證失敗等訊息。管理站可相應的作出處理。
- get-next-request操作:從代理程序處提取緊跟當前引數值的下一個引數值。
- get-response操作:返回的一個或多個引數值。這個操作是由代理程序發出的。
3.3、SNMP的訊息構成
SNMP協議定義了資料包的格式,及網路管理員和管理代理之間的資訊交換,它還控制著管理代理的MIB資料物件。因此,可用於處理管理代理定義的各種任務。
一條SNMP訊息由"版本號"、"SNMP共同體名"和"協議資料單元(PDU)"構成,資料包的長度不是固定的。
命令示例:snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.4.20
- 版本識別符(version identifier):用於說明現在使用的是哪個版本的SNMP協議,確保SNMP代理使用相同的協議,每個SNMP代理都直接拋棄與自己協議版本不同的資料報。
- 團體名(Community Name):團體(community)是基本的安全機制,用於實現SNMP網路管理員訪問SNMP管理代理時的身份驗證。類似於密碼,預設值為 public。團體名(Community name)是管理代理的口令,管理員被允許訪問資料物件的前提就是網路管理員知道網路代理的口令。如果把配置管理代理成可以執行Trap命令,當網路管理 員用一個錯誤的分割槽名查詢管理代理時,系統就傳送一個autenticationFailure trap報文。
- 協議資料單元(PDU):PDU (協議資料單元)是SNMP訊息中的資料區, 即Snmp通訊時報文資料的載體。PDU指明瞭SNMP的訊息型別及其相關引數
3.4、PDU(協議資料單元)
PDU (協議資料單元)是SNMP訊息中的資料區, 即Snmp通訊時報文資料的載體。
3.5、OID(Object Identifier)
每個管理物件都有自己的OID(Object Identifier),管理物件通過樹狀結構進行組織,OID由樹上的一系列整陣列成,整數之間用點( . )分隔開,樹的葉子節點才是真正能夠被管理的物件。
四、SNMP與TR069簡單對比
TR069 |
SNMP | |
---|---|---|
協議棧 | 完整,SOAP | 簡單 |
安全性 | 健全 | 缺乏 |
事物處理 | 完整,協議複雜,處理要求高 | 簡單 |
傳輸協議 | TCP可靠 | UDP不可靠 |
部署方式 | 靈活,可穿越NAT/防火牆 | 需分配固定IP,部署過程繁瑣 |
五、實踐
第一步、開啟win7的snmp開關,此處不詳細說明,百度一下
第三布、獲取IP資訊,開啟命令編輯器,輸入命令
snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.4.20
得到以下資訊:
IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
IP-MIB::ipAdEntAddr.172.16.100.11 = IpAddress: 172.16.100.1
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.172.16.100.11 = INTEGER: 11
IP-MIB::ipAdEntNetMask.127.0.0.1 = IpAddress: 255.0.0.0
IP-MIB::ipAdEntNetMask.172.16.100.11 = IpAddress: 255.255.2
IP-MIB::ipAdEntBcastAddr.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntBcastAddr.172.16.100.11 = INTEGER: 1
IP-MIB::ipAdEntReasmMaxSize.127.0.0.1 = INTEGER: 65535
IP-MIB::ipAdEntReasmMaxSize.172.16.100.11 = INTEGER: 65535
命令解釋:
-v 1|2c|3 指定SNMP協議版本
-c COMMUNITY 指定共同體字串
localhost 被管理裝置IP
1.3.6.1.2.1.4.20 機器Ip資訊的OID