概述
snmp全稱Simple Network Management Protocol
,中文名為簡單網絡管理協議
,屬於應用層協議。
版本
SNMP目前共有v1、v2、v3三個版本
-
v1
SNMP的最初版本
-
v2c
在v1的基礎上增加 ·共同體· 字段(community,實質上是密碼)
-
v3
增加認證和對密文傳輸的支持
架構
SNMP協議主要由兩個部分組成:SNMP管理站(NMS)
、SNMP代理(Agent)
。
SNMP管理站:這是一個中心節點,負責手記維護各個SNMP元素的信息,並對這些信息進行處理,最后反饋給網絡管理員,相當於大腦
的角色。
SNMP代理:代理運行在各個被管理的網絡節點上,負責統計該節點的各項信息,並且負責與SNMP管理站交互,接收並執行管理站的命令上傳各種本地的網絡信息。
傳輸層協議
SNMP傳輸層協議選用udp
。 SNMP采用UDP 161端口接收和發送請求,162端口接收trap,執行SNMP的設備缺省都必須采用這些端口。SNMP消息全部通過UDP端口161接收,只有Trap信息采用UDP端口162。
操作方式
SNMP提供了三種操作方式:
-
Get操作
管理員讀取設備數據
-
Set操作
管理員設置設備數據
-
Trap操作
設備在重要狀況改變時主動向管理員通報事件的發生
協議數據單元PDU
SNMP定義了5中PDU對應上述3種操作,
-
get-request
從代理(本質上是設備)獲取一個或多個參數值
-
get-next-request
從代理緊接着取出下一個參數值
-
set-request
設置代理一個或多個參數值
-
get-response
對上述三種請求的響應
-
trap
設備主動上報的數據
-
get-bulk(v2c)
GetBulk操作所對應的基本操作是GetNext,通過對Non repeaters和Max repetitions參數的設定,高效率地從Agent獲取大量管理對象數據,如果get-request中的參數有一個不存在,請求照樣會被正常執行;而在SNMPv1種將收到一個錯誤消息
-
inform(v2c)
相當於Trap的升級版,但是Trap消息發出去之后不會收到響應消息,而inform消息在發出之后能收到響應消息
SNMP報文結構
報文結構如下
-
版本號
表明當前使用的版本,管理站和代理之間的版本號必須相同才能通信
-
團體名
團體(community)是基本的安全機制,用於實現SNMP網絡管理員訪問SNMP管理代理時的身份驗證。類似於密碼,默認值為 public。團體名(Community name)是管理代理的口令,管理員被允許訪問數據對象的前提就是網絡管理員知道網絡代理的口令。
-
PDU
數據載體
詳細的報文結構如下:
表1: pdu類型
PDU類型 | 名稱 |
---|---|
0 | get-request |
1 | get-next-request |
2 | get-response |
3 | set-request |
4 | trap |
表2: 差錯狀態
差錯狀態 | 名字 | 描述 |
---|---|---|
0 | noError | 無錯誤 |
1 | tooBig | 代理無法將回答裝入到一個SNMP報文中 |
2 | noSuchName | 操作指明了一個不存在的變量 |
3 | badValue | 一個set操作指明了一個無效值或無效語法 |
4 | readOnly | 管理進程試圖修改一個只讀變量 |
5 | genErr | 某些其他差錯 |
表3: trap類型
trap類型 | 名字 | 說明 |
---|---|---|
0 | coldStart | 代理進行了初始化 |
1 | warmStart | 代理進行了重新初始化 |
2 | linkDown | 一個接口從工作狀態變為故障狀態 |
3 | linkUp | 一個接口從故障狀態變為工作狀態 |
4 | authenticationFailure | 從SNMP管理進程接收到具有一個無效共同體的報文 |
5 | egpNeighborLoss | 一個EGP相鄰路由器變為故障狀態 |
6 | enterpriseSpecific | 代理自定義事件,需要用后面的“特定代碼”來指明 |
MIB管理信息庫
管理信息(MIB)庫可以理解成為agent維護的管理對象數據庫,MIB中定義的大部分管理對象的狀態和統計信息都可以被NMS訪問。MIB是一個按照層次結構組織的樹狀結構,每個被管對象對應樹形結構的一個葉子節點,稱為一個object,擁有唯一的對象標識符(oid),OID由樹上的一系列整數組成,整數之間用點( . )分隔開
M I B被划分為若干個組,如system、interfaces、 at(地址轉換)和ip組等。iso.org.dod.internet.private.enterprise( 1 . 3 . 6 . 1 . 4 . 1)這個標識,是給廠家自定義而預留的,比如華為的為1.3.6.1.4.1.2011,華三的為1.3.6.1.4.1.25506。
mib樹有點類似linux文件系統各個snmp設備中的mib前綴都是一樣的
注意⚠️:當網絡管理協議在報文中使用MIB變量時,每個變量名后還要加一個后綴,以作為該變量的一個實例。如ipInReceives的實例數字表示為:1.3.6.1.2.1.4.3.0
snmp開發
windows和mac都內置snmp服務,默認都是不開啟的
-
windows開啟snmp
https://jingyan.baidu.com/article/7f766dafe17d394101e1d0f9.html
-
mac開啟snmp
-
golang snmp sdk
-
免費的MIB 瀏覽器