本格堅守四不一沒有政治主張:不知道、不清楚、不瞭解、不明白、沒有我的事!
[ start | index | login ]

2004-06-20 #2

Created by Ada. Last edited by Ada, 4 years and 99 days ago. Viewed 2,407 times. #6
[diff] [history] [edit] [rdf]
labels
Parent:Linux
attachments

使用 SNMP 查詢 ADSL Router (ATU-R) 狀態

補充說明:

  1. >>一個使用 SNMP 查詢網路設備狀態的範例
  2. 與 ADSL 相關的 MIB 參考:>>ADSL-LINE-MIB
我目前使用的網路是由 HiNET 所提供,硬體設施則是使用由中華電信出借的 Alcatel SPEEDTOUCH 340 這顆 ATU-R。

由於在系統中裝了 snmpd 服務,加上知道 Alcatel SPEEDTOUCH 340 也有提供 SNMP 代理服務 (必須使用 telnet 設定方式才能看到,若用 Web 設定界面是看不到的 ),所以就試著透過 SNMP 來看看這顆 ATU-R 有啥特殊資訊。

確認主機與 ATU-R 同網段

除非使用的是固定多 IP 制的連線模式,否則 ATU-R 會使用 bridge 模式來代轉使用者的網路連線。這通常給使用者一個 ATU-R 本身沒有 IP 的假象。

只要是網路設備必然會有一個 IP 來代表( HUB沒有就是了 :p),ATU-R 也不例外。它的預設 IP 是 192.168.1.1,只要系統能有一個 IP 與 ATU-R 的預設 IP 同一網段時即可存取 ATU-R 上的資訊,至少我們可以透過 telnet , web 或者是 snmp 方式向 ATU-R 進行存取作業。

我的系統中內建有 5 個網路界面,因此指定其中一個網路界面的 IP 為 192.168.1.2,當然你也可以透過 alias IP 的方式讓同一張網卡擁有兩個以上的 IP ,設定完畢後先 ping ping 看是否可以連上 ATU-R。

確認已安裝 snmp utility

在 Linux 環境下,只要安裝 net-snmp 套件後即可;若是 Windows 系統則請自己看著辦。

Gentoo Linux 中可以使用以下方式檢查是否安裝 net-snmp 套件。

www tmp # emerge -s net-snmp
Searching…
[ Results for search key : net-snmp ]
[ Applications found : 2 ]

* dev-perl/Net-SNMP Latest version available: 4.1.2 Latest version installed: [ Not Installed ] Size of downloaded files: 70 kB Homepage: >>http://www.cpan.org/modules/by-module/Net/Net-SNMP-4.1.2.readme Description: A SNMP Perl Module License: Artistic

* net-analyzer/net-snmp Latest version available: 5.0.9-r1 Latest version installed: 5.0.9-r1 Size of downloaded files: 2,290 kB Homepage: >>http://net-snmp.sourceforge.net/ Description: Software for generating and retrieving SNMP data. License: as-is

開始查詢 ATU-R 系統資訊

www tmp # snmpwalk 192.168.1.1 -c public -v 1 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Alcatel SPEEDTOUCH 340 version 7.1.0.31 (patch) (25 April 2001) T60L280.01/H2.3.1.5.01/1.4.8
Copyright (c) 2001
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.4684
SNMPv2-MIB::sysUpTime.0 = Timeticks: (83557662) 9 days, 16:06:16.62
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING:
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6

從以上可知 ATU-R 的產品名稱、版本編號、開機時間等,其他像連絡人資訊、系統名稱、系統位置則沒有設定。

查詢 ATU-R 網路設備資訊

www tmp # snmpwalk 192.168.1.1 -c public -v 1 1.3.6.1.2.1.2

資料很多,所以可以改查詢網路設備的型別。

www tmp # snmpwalk 192.168.1.1 -c public -v 1 1.3.6.1.2.1.2.2.1.2
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.2 = INTEGER: ppp(23)
IF-MIB::ifType.3 = INTEGER: ppp(23)
IF-MIB::ifType.4 = INTEGER: ppp(23)
IF-MIB::ifType.5 = INTEGER: ppp(23)
IF-MIB::ifType.6 = INTEGER: ppp(23)
IF-MIB::ifType.7 = INTEGER: ppp(23)
IF-MIB::ifType.8 = INTEGER: ppp(23)
IF-MIB::ifType.9 = INTEGER: ppp(23)
IF-MIB::ifType.10 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.11 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.12 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.13 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.14 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.15 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.16 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.17 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.18 = INTEGER: other(1)
IF-MIB::ifType.19 = INTEGER: adsl(94)
IF-MIB::ifType.20 = INTEGER: fast(125)
IF-MIB::ifType.21 = INTEGER: interleave(124)

不過因為數字型式的 OID 難以記憶,通常會使用文字式代名。

www tmp # snmpwalk 192.168.1.1 -c public -v 1 interfaces.ifTable.ifEntry.ifType
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.2 = INTEGER: ppp(23)
IF-MIB::ifType.3 = INTEGER: ppp(23)
IF-MIB::ifType.4 = INTEGER: ppp(23)
IF-MIB::ifType.5 = INTEGER: ppp(23)
IF-MIB::ifType.6 = INTEGER: ppp(23)
IF-MIB::ifType.7 = INTEGER: ppp(23)
IF-MIB::ifType.8 = INTEGER: ppp(23)
IF-MIB::ifType.9 = INTEGER: ppp(23)
IF-MIB::ifType.10 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.11 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.12 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.13 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.14 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.15 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.16 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.17 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.18 = INTEGER: other(1)
IF-MIB::ifType.19 = INTEGER: adsl(94)
IF-MIB::ifType.20 = INTEGER: fast(125)
IF-MIB::ifType.21 = INTEGER: interleave(124)

配合每一個界面的描述,大致上可以得知這 21 個界面的用途。

www tmp # snmpwalk 192.168.1.1 -c public -v 1 interfaces.ifTable.ifEntry.ifDescr
IF-MIB::ifDescr.1 = STRING: ethernet
IF-MIB::ifDescr.2 = STRING: ppp channel 1
IF-MIB::ifDescr.3 = STRING: ppp channel 2
IF-MIB::ifDescr.4 = STRING: ppp channel 3
IF-MIB::ifDescr.5 = STRING: ppp channel 4
IF-MIB::ifDescr.6 = STRING: ppp channel 5
IF-MIB::ifDescr.7 = STRING: ppp channel 6
IF-MIB::ifDescr.8 = STRING: ppp channel 7
IF-MIB::ifDescr.9 = STRING: ppp channel 8
IF-MIB::ifDescr.10 = STRING: ppp1
IF-MIB::ifDescr.11 = STRING: ppp2
IF-MIB::ifDescr.12 = STRING: ppp3
IF-MIB::ifDescr.13 = STRING: ppp4
IF-MIB::ifDescr.14 = STRING: ppp5
IF-MIB::ifDescr.15 = STRING: ppp6
IF-MIB::ifDescr.16 = STRING: ppp7
IF-MIB::ifDescr.17 = STRING: ppp8
IF-MIB::ifDescr.18 = STRING: bridge
IF-MIB::ifDescr.19 = STRING: ADSL physical interface
IF-MIB::ifDescr.20 = STRING: ADSL fast channel
IF-MIB::ifDescr.21 = STRING: ADSL interleaved channel

比對過 ifType 和 ifDescr 後,可以判定第 1 個網路界面是 ethernet,也就是接到內部網路的那個界面;第 18 個網路界面是 bridge, 若使用 bridge 模式時會在這個網路界面上產生 I/O;第 19 個網路界面是 adsl, 也就是 ADSL 實體線路,當線路異常時會在這個界面上產生反應。

範例:檢查網路是否斷線

透過 interfaces.ifTable.ifEntry.ifOperStatus.xx 可以查詢指定界面的連線狀態,如:

www tmp # snmpwalk 192.168.1.1 -c public -v 1 interfaces.ifTable.ifEntry.ifOperStatus.1
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
www tmp # snmpwalk 192.168.1.1 -c public -v 1 interfaces.ifTable.ifEntry.ifOperStatus.18
IF-MIB::ifOperStatus.18 = INTEGER: up(1)
www tmp # snmpwalk 192.168.1.1 -c public -v 1 interfaces.ifTable.ifEntry.ifOperStatus.19
IF-MIB::ifOperStatus.19 = INTEGER: up(1)

查詢某個 OID 的意義

當查詢某個裝置的資訊時,發現有無法明確辨識的 SNMP 標籤時其實可以透過 net-snmp 套件所提供的轉譯工具,將標籤轉成較為明確的說明,如 ATU-R 中有這個一個標籤 IF-MIB::ifLastChange,他的實際意義可以這樣查詢:

www tmp # snmptranslate -Td -OS IF-MIB::ifLastChange
IF-MIB::ifLastChange
ifLastChange OBJECT-TYPE
  -- FROM       IF-MIB, RFC1213-MIB
  SYNTAX        TimeTicks
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "The value of sysUpTime at the time the interface entered
            its current operational state.  If the current state was
            entered prior to the last re-initialization of the local
            network management subsystem, then this object contains a
            zero value." 
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) 9 }

也可以查詢 IF-MIB::ifOperStatus 的完整說明。

www tmp # snmptranslate -Td -OS IF-MIB::ifOperStatus
IF-MIB::ifOperStatus
ifOperStatus OBJECT-TYPE
  -- FROM       IF-MIB, RFC1213-MIB
  SYNTAX        INTEGER { up(1), down(2), testing(3), unknown(4), dormant(5), notPresent(6), lowerLayerDown(7) }
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "The current operational state of the interface.  The
            testing(3) state indicates that no operational packets can
            be passed.  If ifAdminStatus is down(2) then ifOperStatus
            should be down(2).  If ifAdminStatus is changed to up(1)
            then ifOperStatus should change to up(1) if the interface is
            ready to transmit and receive network traffic; it should
            change to dormant(5) if the interface is waiting for
            external actions (such as a serial line waiting for an
            incoming connection); it should remain in the down(2) state
            if and only if there is a fault that prevents it from going
            to the up(1) state; it should remain in the notPresent(6)
            state if the interface has missing (typically, hardware)
            components."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) 8 }

應用

當我們知道如何查詢指定硬體的 SNMP 資訊後,即可加以整理作為系統效能的參考依據或是錯誤警示等,或者透過 MRTG 等其他工具將數據資訊以圖示方式顯示出來。這部份就是個人的創意問題了。

no comments | post comment
【搜尋】

【求助】

  1. 如何指定格式化的文字
  2. 如果字太小
【SnipSnap 強化方案】
>>SnipIt 誕生
>>功能討論
>>功能確認

< July 2010 >
SunMonTueWedThuFriSat
123
45678910
11121314151617
18192021222324
25262728293031

【RSS 訂閱】




【雜想分類區】
美食小吃
生活雜想
職場遭遇戰
休閒娛樂
台北居、大不易
錯誤正在橫行中
廣告異聞錄
神秘事件簿
電影
健康管理
資訊電腦
科高地球
手機應用
新聞馬後炮
動漫世界
管理眾人之事
專案管理
歌曲歌詞
嘸爽啦!
部落格記錄
惡搞裝笨耍白爛
歧視非IE用戶之網頁
關於我
CSS
RSS

【與 Ada 聯絡】

【有趣的 Blog】
>>什麼都破,什麼都爛,什麼都不奇怪
>>酪梨壽司的日記
>>去吧!錯誤特攻隊!
>>隨裕而安
>>荒謬大觀
>>網路黑貓
>>瑞克梅添涼 DALIREAL
>>鳥毅的blog
>>潛艦 - >>反垃圾信
>>窮留學生懶人食譜
>>約耳談軟體

【網路貼紙】
XHTML 1.0 validated CSS validated
RSS 2.0 validated Powered by SnipSnap
Powered by Gentoo Linux
網站使用 UTF-8 編碼 網站所在地-台灣
Onion Club 洋蔥酷樂部 Powered By PostgreSQL
我是台灣人

【網路同盟】
怠墮管理者同盟

【PCDVD 七八區 RSS】




【PCDVD 疑雜區 RSS】




【網路串連】











【參訪團】

snipsnap.org | Copyright 2000-2002 Matthias L. Jugel and Stephan J. Schmidt