![見出し画像](https://assets.st-note.com/production/uploads/images/125376140/rectangle_large_type_2_f7afcbf123aca4516747d317f3f3b1f8.png?width=1200)
MIB-IIによるネットワーク管理(system,interface編)
「実践SNNMP教科書」の第10章から復刻した記事です。
MIB-II(2)は、TCP/IPで通信する機器の標準的なMIBです。RFC1213で定義されて以来、ほとんどのSNMP対応機器が対応しています。MIB-IIは、9つのグループから構成されています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
コラム:MIB-IIとMIB-I
MIB-IIのII(2)は、MIB-I(1)の後継バージョンという意味です。SNMPで最初に定義されたのがMIB-Iです。もともとはMIBと呼ばれていました。ネットワーク製品のカタログなどで、MIB-I/MIB-II対応などと記載されたものを見かけます。しかし、厳密には、この表現は正しくありません。MIB-Iは、もはや標準仕様ではないのと、MIB-IIは、MIB-Iの仕様を包含しているので、MIB-II対応というだけで十分だと思います。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
systemグループ
systemグループは、主に、エージェントが搭載された機器の情報を提供するためのグループです。
systemグループのツリー構造
+--system(1)
|
+-- -R-- String sysDescr(1)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- ObjID sysObjectID(2)
+-- -R-- TimeTicks sysUpTime(3)
+-- -RW- String sysContact(4)
| Textual Convention: DisplayString
| Size: 0..255
+-- -RW- String sysName(5)
| Textual Convention: DisplayString
| Size: 0..255
+-- -RW- String sysLocation(6)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- INTEGER sysServices(7)
| Range: 0..127
+-- -R-- TimeTicks sysORLastChange(8)
| Textual Convention: TimeStamp
|
+--sysORTable(9)
|
+--sysOREntry(1)
| Index: sysORIndex
|
+-- ---- INTEGER sysORIndex(1)
| Range: 1..2147483647
+-- -R-- ObjID sysORID(2)
+-- -R-- String sysORDescr(3)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- TimeTicks sysORUpTime(4)
Textual Convention: TimeStamp
![](https://assets.st-note.com/img/1703320890045-ICxDZE1xqb.png?width=1200)
![](https://assets.st-note.com/img/1703320802406-5D9KMwZSmz.png?width=1200)
systemグループを利用したネットワーク管理のポイントを以下に説明します。
①ノード検索時のノード種別の特定
主に、sysObjectIDの値によって、ノードの種別を特定できます。SNMPマネージャは、ノードの種別によって、アイコンの変更や実施するポーリングの登録を行います。
②管理者、設置場所、ノードの名前などの管理情報の取得/設定
③sysUpTimeによる稼働時間の取得。
sysUpTimeにより再起動の発生を監視することができます。図10-3に示すように、sysUpTimeを定期的に取得し、差分を計算します。もし再起動が発生すれば、差分値は、負の値になります。この方法により、PINGなどのポーリングによりノードのダウンが検出できなかった場合でも再起動の発生が検出できるのです。
![](https://assets.st-note.com/img/1703321057987-YMXAPHksVi.png?width=1200)
④対応しているMIBモジュールの確認
sysORTableを取得することによりエージェントが対応しているMIBモジュールを確認することができます。但し、sysORTableに情報を正しく対応しているエージェントは、少ないのが現状です。
interfaceグループ
interfaceグループは、管理対象ノードのネットワークI/Fに関する情報を提供します。MIB-IIが定義された当初は、ネットワークI/Fのうち、ノード自身がIPパケットを送受信するために使用するI/Fのみが、interfaceグループの対象とされていました。しかし、現状は、スイッチングHUBなどのポートもinterfaceグループの対象となっています。interfaceグループの情報は、ネットワークI/Fの種類に依存しない汎用的な情報になっています。このため、SNMPマネージャが管理対象ノードとネットワークとの接続状態を管理するために欠かせない情報です。
interfaceグループのツリー構造
+--interfaces(2)
|
+-- -R-- INTEGER ifNumber(1)
|
+--ifTable(2)
|
+--ifEntry(1)
| Index: ifIndex
|
+-- -R-- INTEGER ifIndex(1)
+-- -R-- String ifDescr(2)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- EnumVal ifType(3)
| Values: other(1), regular1822(2), hdh1822(3), ddn-x25(4),
| rfc877-x25(5), ethernet-csmacd(6),
| iso88023-csmacd(7), iso88024-tokenBus(8),
| iso88025-tokenRing(9), iso88026-man(10),
| starLan(11), proteon-10Mbit(12), proteon-80Mbit(13),
| hyperchannel(14), fddi(15), lapb(16), sdlc(17),
| ds1(18), e1(19), basicISDN(20), primaryISDN(21),
| propPointToPointSerial(22), ppp(23),
| softwareLoopback(24), eon(25), ethernet-3Mbit(26),
| nsip(27), slip(28), ultra(29), ds3(30), sip(31),
| frame-relay(32)
+-- -R-- INTEGER ifMtu(4)
+-- -R-- Gauge ifSpeed(5)
+-- -R-- String ifPhysAddress(6)
| Textual Convention: PhysAddress
+-- -RW- EnumVal ifAdminStatus(7)
| Values: up(1), down(2), testing(3)
+-- -R-- EnumVal ifOperStatus(8)
| Values: up(1), down(2), testing(3)
+-- -R-- TimeTicks ifLastChange(9)
+-- -R-- Counter ifInOctets(10)
+-- -R-- Counter ifInUcastPkts(11)
+-- -R-- Counter ifInNUcastPkts(12)
+-- -R-- Counter ifInDiscards(13)
+-- -R-- Counter ifInErrors(14)
+-- -R-- Counter ifInUnknownProtos(15)
+-- -R-- Counter ifOutOctets(16)
+-- -R-- Counter ifOutUcastPkts(17)
+-- -R-- Counter ifOutNUcastPkts(18)
+-- -R-- Counter ifOutDiscards(19)
+-- -R-- Counter ifOutErrors(20)
+-- -R-- Gauge ifOutQLen(21)
+-- -R-- ObjID ifSpecific(22)
interfaceグループのMIBオブジェクトは、以下のように分類できます。
①ネットワークI/Fの数
ifNumberによって、ネットワークI/Fの数を取得できますが、ifTableの行数によって取得できるので、あまり意味のない情報です。
②ネットワークI/Fの属性
ifTableから、ネットワークI/Fの種類、スピード、MACアドレス、MTUサイズなどの属性が取得できます。
![](https://assets.st-note.com/img/1703321218815-5puTMfafDN.png?width=1200)
![](https://assets.st-note.com/img/1703321289582-9BcXD7CPA2.png?width=1200)
③ネットワークI/Fの状態
SNMPマネージャからの監視にいおいて、ネットワークI/Fの状態は、管理MAP上の回線の接続状態を決めるために必要です。ネットワークI/Fの状態は、ifTableのifAdminStatusとifOperStatusを取得して決定します。
また、ifAdminStatusの値を書き換えることによりネットワークI/Fの起動/停止が可能です。但し、管理用のネットワークI/Fを停止してしまうと、同じマネージャからは元には戻せなくなるので注意が必要です。
![](https://assets.st-note.com/img/1703321504203-5ukyNxJCJF.png?width=1200)
④ネットワークI/Fの通信統計情報
ネットワークI/Fの通信統計情報の取得値は、取得したまま判断するのではなく、単位時間値などに変換して、トラフィック量、エラー発生量などの判断や、グラフ表示を行います。
![](https://assets.st-note.com/img/1703321838070-yiAHJDjzwe.png?width=1200)
TWSNMP FCではパネルによりネットワークI/Fの状態と通信量を取得できます。
![](https://assets.st-note.com/img/1703322058431-14fcwsb6tX.png?width=1200)
⑤ネットワークI/Fの詳細情報
interfaceグループのMIBオブジェクトは、ネットワークI/Fの種類に依存しない汎用的な情報です。エージェントが、特定の種類(イーサネットなど)のI/FのMIBをサポートしている場合は、ifSpecificの値によって、対応しているMIBの種類を示します。イーサネットMIBなどが定義されていますが、実装されているエージェントが少ないので、これらの情報が参照されることは、ほとんどありません。
最近のネットワークの管理のために通信量を測定するためにMIB-IIのifTableを使うことはおすすめしません。ネットワークの通信が高速化されているので32ビットのカウンターだとするぐに0に戻るためです。代わりにifXTable を使うのがよいです。
![](https://assets.st-note.com/img/1703322585021-8p2imzVzXA.png?width=1200)
バイト数が64ビットのカウンターになっています。
取得すると
![](https://assets.st-note.com/img/1703322631566-kT1kIeKxaO.png?width=1200)
TWSNMP FCのパネルやトラフィック測定ではifXTableが利用できる場合には自動でその値を利用します。
ここから先は
![](https://assets.st-note.com/production/uploads/images/14333815/profile_ee1accba5615957e5029db85d57fdb0a.jpg?fit=bounds&format=jpeg&quality=85&width=330)
実践SNMP教科書 復刻版
20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。