この特集のトップページへ
>
この回のトップページへ
atサブツリーの配下には,IPアドレスと物理的なアドレス(MACアドレスなど)との対応表を保持するオブジェクトが含まれる。しかしRFC1213では,atサブツリーは非推奨となっており,過去との互換性のためだけに使われる。よって本稿での説明は割愛する。
IPネットワークの場合,次に説明するipサブツリー(1.3.6.1.2.1.4)のipNetToMediaTableサブツリー(1.3.6.1.2.4.22)以下に,IPアドレスと物理的なアドレスとの対応表を含むオブジェクトが存在するので,必要があればそちらの情報を利用すればよい。
ipサブツリーは,IP情報を保持する階層ツリーだ。interfacesサブツリー(1.3.6.1.2.1.3)と同じく,ネットワークを流れるパケット数のほか,各インタフェースに割り当てられたIPアドレスや物理アドレス,そして,ルーティング情報なども保存されている。ipサブツリーはTable 4に示すように,多大なオブジェクトを含む。
Table 4 ipサブツリー(1.3.6.1.2.1.4)
OID |
1.3.6.1.2.1.4.1 |
サブツリー名 |
ipForwarding |
用途 |
ゲートウェイとして動作し,パケット中継がされているかどうかのフラグ。1で中継していることを,0で中継していないことを示す。たとえば2枚のネットワークカードを装着し,ゲートウェイとして動作させている場合には,1となる |
OID |
1.3.6.1.2.1.4.2 |
サブツリー名 |
ipDefaultTTL |
用途 |
IPパケットのTTL(生存時間)に設定されるデフォルト値 |
OID |
1.3.6.1.2.1.4.3 |
サブツリー名 |
ipInReceives |
用途 |
全インタフェースを通じて取得したパケットの総数(エラーパケットも含む) |
OID |
1.3.6.1.2.1.4.4 |
サブツリー名 |
ipInHdrErrors |
用途 |
全インタフェースを通じて取得したパケットのうち,ヘッダにエラーがあったために破棄したパケット数 |
OID |
1.3.6.1.2.1.4.5 |
サブツリー名 |
ipInAddrErrors |
用途 |
全インタフェースを通じて取得したパケットのうち,宛先のIPアドレスが無効であったために破棄したパケット数 |
OID |
1.3.6.1.2.1.4.6 |
サブツリー名 |
ipForwDatagrams |
用途 |
(ゲートウェイとして動作しているときに)中継したパケットの総数 |
OID |
1.3.6.1.2.1.4.7 |
サブツリー名 |
ipInUnknownProtos |
用途 |
全インタフェースを通じて取得したパケットのうち,プロトコルが不明であったため破棄したパケット数 |
OID |
1.3.6.1.2.1.4.8 |
サブツリー名 |
ipInDiscards |
用途 |
パケットを受信したものの,受信バッファ不足などで破棄してしまったパケット数 |
OID |
1.3.6.1.2.1.4.9 |
サブツリー名 |
ipInDelivers |
用途 |
正常に受け取ったIPパケット(ICMP含む)の総数 |
OID |
1.3.6.1.2.1.4.10 |
サブツリー名 |
ipOutRequests |
用途 |
送信を試みたIPパケット(ICMP)の総数(中継パケットは含まない) |
OID |
1.3.6.1.2.1.4.11 |
サブツリー名 |
ipOutDiscards |
用途 |
送信バッファ不足などで送信できなかったパケットの総数 |
OID |
1.3.6.1.2.1.4.12 |
サブツリー名 |
ipOutNoRoutes |
用途 |
送信先への経路(ルーティング情報)が不明であるため送信できなかったパケットの総数 |
OID |
1.3.6.1.2.1.4.13 |
サブツリー名 |
ipReasmTimeout |
用途 |
フラグメントされたパケットを再構築するためにバッファに保持しておく最大秒数 |
OID |
1.3.6.1.2.1.4.14 |
サブツリー名 |
ipReasmReqds |
用途 |
フラグメントの再構築が必要とされたパケット数 |
OID |
1.3.6.1.2.1.4.15 |
サブツリー名 |
ipReasmOKs |
用途 |
フラグメントが正しく再構築できたパケット数 |
OID |
1.3.6.1.2.1.4.16 |
サブツリー名 |
ipReasmFails |
用途 |
フラグメントが正しく再構築できなかったパケット数 |
OID |
1.3.6.1.2.1.4.17 |
サブツリー名 |
ipFragOKs |
用途 |
正しくフラグメントされたパケット数 |
OID |
1.3.6.1.2.1.4.18 |
サブツリー名 |
ipFragFails |
用途 |
正しくフラグメントできなかったパケット数 |
OID |
1.3.6.1.2.1.4.19 |
サブツリー名 |
ipFragCreates |
用途 |
作成されたフラグメントパケット数 |
OID |
1.3.6.1.2.1.4.20 |
サブツリー名 |
ipAddrTable |
用途 |
IPアドレス情報を含む階層ツリー。下位にipAddrEntryサブツリーを含む。値はない。機器に設定されているIPアドレスの数だけ配列状に構成される |
OID |
1.3.6.1.2.1.4.20.1 |
サブツリー名 |
ipAddrEntry |
用途 |
下位にIPアドレス情報を含むための階層ツリー。値はない |
OID |
1.3.6.1.2.1.4.20.1.aaa.bbb.ccc.ddd |
サブツリー名 |
ipAdEntAddr |
用途 |
それぞれのIPアドレス。値はaaa.bbb.ccc.ddd。これが配列のインデックス値になる |
OID |
1.3.6.1.2.1.4.20.2.aaa.bbb.ccc.ddd |
サブツリー名 |
ipAdEntIfIndex |
用途 |
このIPアドレスに割り当てられているインタフェースのインデックス番号。interfacesサブツリー下にあるifIndexの値と同じ |
OID |
1.3.6.1.2.1.4.20.3.aaa.bbb.ccc.ddd |
サブツリー名 |
ipAdEntNetMask |
用途 |
このIPアドレスに設定されたサブネットマスク値 |
OID |
1.3.6.1.2.1.4.20.4.aaa.bbb.ccc.ddd |
サブツリー名 |
ipAdEntBcastAddr |
用途 |
このIPアドレスに設定されたブロードキャストアドレスの値 |
OID |
1.3.6.1.2.1.4.20.5.aaa.bbb.ccc.ddd |
サブツリー名 |
ipAdEntReasmMaxSize |
用途 |
このIPアドレスを通じて送受信できるIPデータグラムの最大バイト数(フラグメントが必要とされる限界バイト数) |
OID |
1.3.6.1.2.1.4.21 |
サブツリー名 |
ipRouteTable |
用途 |
IPルーティング情報を含む階層ツリー。下位にipRouteTableサブツリーを含む。値はない。機器に設定されているルーティング情報の数だけ配列状に構成される |
OID |
1.3.6.1.2.1.4.21.1 |
サブツリー名 |
ipRouteEntry |
用途 |
下位にルーティング情報を含むための階層ツリー。値はない |
OID |
1.3.6.1.2.1.4.21.1.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteDest |
用途 |
ルーティング情報の到達先のIPアドレス。値はaaa.bbb.ccc.ddd。デフォルトゲートウェイの場合,0.0.0.0。これが配列のインデックス値になる |
OID |
1.3.6.1.2.1.4.21.2.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteIfIndex |
用途 |
このルーティング情報に関連するインタフェースのインデックス番号。interfacesサブツリー下にあるifIndexの値と同じ |
OID |
1.3.6.1.2.1.4.21.3.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMetric1 |
用途 |
このルーティング情報のメトリック値(優先順位) |
OID |
1.3.6.1.2.1.4.21.4.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMetric2 |
用途 |
このルーティング情報の代替メトリック値その1 |
OID |
1.3.6.1.2.1.4.21.5.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMetric3 |
用途 |
このルーティング情報の代替メトリック値その2 |
OID |
1.3.6.1.2.1.4.21.6.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMetric4 |
用途 |
このルーティング情報の代替メトリック値その3 |
OID |
1.3.6.1.2.1.4.21.7.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteNextHop |
用途 |
このルーティング情報の次の到達先となるIPアドレス。いい換えればゲートウェイのIPアドレス |
OID |
1.3.6.1.2.1.4.21.8.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteType |
用途 |
このルーティング情報のルーティングタイプ。1(その他)2(ルートなし),3(直接),4(非直接。ゲートウェイを経由する場合など)のいずれかの値 |
OID |
1.3.6.1.2.1.4.21.9.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteProto |
用途 |
このルーティング情報のルーティングプロトコル。1(その他),2(ローカル,静的なルーティング),5(EGP),6(GGP),8(RIP)など。取りうるすべての値についてはRFC1213を参照のこと |
OID |
1.3.6.1.2.1.4.21.10.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteAge |
用途 |
このルーティング情報が有効になってから経過した秒数 |
OID |
1.3.6.1.2.1.4.21.11.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMask |
用途 |
このルーティング情報のサブネットマスク値。デフォルトゲートウェイの場合,0.0.0.0 |
OID |
1.3.6.1.2.1.4.21.12.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteMetric5 |
用途 |
このルーティング情報の代替メトリック値その4 |
OID |
1.3.6.1.2.1.4.21.13.aaa.bbb.ccc.ddd |
サブツリー名 |
ipRouteInfo |
用途 |
このルーティング情報の追加情報を示すオブジェクトのOID。追加情報がない場合には0.0 |
OID |
1.3.6.1.2.1.4.22 |
サブツリー名 |
ipNetToMediaTable |
用途 |
IPアドレスから物理アドレスに変換するためのマッピングテーブルを含む階層ツリー。下位にipNetToMediaEntry階層ツリーを含む。値はない |
OID |
1.3.6.1.2.1.4.22.1 |
サブツリー名 |
ipNetToMediaEntry |
用途 |
下位にIPアドレスから物理アドレスに変換するための情報を含むための階層ツリー。値はない |
OID |
1.3.6.1.2.1.4.22.1.1.x.aaa.bbb.ccc.ddd |
サブツリー名 |
ipNetToMediaIfIndex |
用途 |
この変換テーブルに関連するインタフェースのインデックス番号。interfacesサブツリー下にあるifIndexの値と同じ。xの値とも同じ |
OID |
1.3.6.1.2.1.4.22.1.2.x.aaa.bbb.ccc.ddd |
サブツリー名 |
ipNetToMediaPhysAddress |
用途 |
このIPアドレスに関連付けられる物理アドレス(MACアドレスなど) |
OID |
1.3.6.1.2.1.4.22.1.3.x.aaa.bbb.ccc.ddd |
サブツリー名 |
ipNetToMediaNetAddress |
用途 |
このIPアドレス自身。aaa.bbb.ccc.dddと同じ |
OID |
1.3.6.1.2.1.4.22.1.4.x.aaa.bbb.ccc.ddd |
サブツリー名 |
ipNetToMediaType |
用途 |
IPアドレスと物理アドレスとの対応設定方法。1(その他),2(無効),3(動的割り当て),4(静的割り当て)のいずれか |
OID |
1.3.6.1.2.1.4.23 |
サブツリー名 |
ipRoutingDiscards |
用途 |
(動的なルーティングプロトコルを使っている場合に)有効だったが破棄されてしまったルーティングテーブルの総数。 |
|
※xはインタフェースのインデックス番号。aaa.bbb.ccc.dddはIPアドレス
ipサブツリーはinterfacesサブツリーと同様に,いくつかの項目がインデックスの付いた階層構造になっている。階層構造をとっているのは,IPアドレス情報が格納されているipAddrTableサブツリー,ルーティング情報が格納されているipRouteTableサブツリー,IPアドレスと物理アドレスとの変換情報が格納されているipNetToMediaTypeサブツリーだ。
ここでは,ルーティング情報が格納されているipRouteTableサブツリーを見てみよう。ipRouteTableサブツリーには,1.3.6.1.2.1.4.21というOIDが割り当てられている。そこでsnmpwalkコマンドを使って,その一覧を取得してみる。
$ snmpwalk localhost private .1.3.6.1.2.1.4.21
ip.ipRouteTable.ipRouteEntry.ipRouteDest.0.0.0.0 = IpAddress: 0.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteDest.127.0.0.0 = IpAddress: 127.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteDest.192.168.0.0 = IpAddress: 192.168.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex.0.0.0.0 = 2
ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex.127.0.0.0 = 2
ip.ipRouteTable.ipRouteEntry.ipRouteIfIndex.192.168.0.0 = 2
ip.ipRouteTable.ipRouteEntry.ipRouteMetric1.0.0.0.0 = 1
ip.ipRouteTable.ipRouteEntry.ipRouteMetric1.127.0.0.0 = 0
ip.ipRouteTable.ipRouteEntry.ipRouteMetric1.192.168.0.0 = 0
ip.ipRouteTable.ipRouteEntry.ipRouteNextHop.0.0.0.0 = IpAddress: 192.168.0.1
ip.ipRouteTable.ipRouteEntry.ipRouteNextHop.127.0.0.0 = IpAddress: 0.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteNextHop.192.168.0.0 = IpAddress: 0.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteType.0.0.0.0 = indirect(4)
ip.ipRouteTable.ipRouteEntry.ipRouteType.127.0.0.0 = direct(3)
ip.ipRouteTable.ipRouteEntry.ipRouteType.192.168.0.0 = direct(3)
ip.ipRouteTable.ipRouteEntry.ipRouteProto.0.0.0.0 = local(2)
ip.ipRouteTable.ipRouteEntry.ipRouteProto.127.0.0.0 = local(2)
ip.ipRouteTable.ipRouteEntry.ipRouteProto.192.168.0.0 = local(2)
ip.ipRouteTable.ipRouteEntry.ipRouteMask.0.0.0.0 = IpAddress: 0.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteMask.127.0.0.0 = IpAddress: 255.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteMask.192.168.0.0 = IpAddress: 255.255.255.0
ip.ipRouteTable.ipRouteEntry.ipRouteInfo.0.0.0.0 = OID: .ccitt.zeroDotZero.0
ip.ipRouteTable.ipRouteEntry.ipRouteInfo.127.0.0.0 = OID: .ccitt.zeroDotZero.0
ip.ipRouteTable.ipRouteEntry.ipRouteInfo.192.168.0.0 = OID: .ccitt.zeroDotZero.
|
上は,ネットワークカードを1枚装着していて,そのネットワーク番号が192.168.0.0/24(192.168.0.0/255.255.255.255),デフォルトゲートウェイが192.168.0.1の環境でsnmpwalkコマンドを実行した結果だ。
この結果を見ると,“0.0.0.0”,“192.168.0.0”,“127.0.0.0”という3つの配列要素があることがわかる。これらはそれぞれデフォルトゲートウェイ,192.168.0.0/24のネットワーク,ループバックインタフェースに相当する。このように,ipサブツリーには,それぞれの値が,配列状に保存されている。
ここではsnmpwalkコマンドを使って,ipサブツリーの下にあるipRouteTableサブツリーを参照したが,もちろん,snmpgetコマンドを使って特定のOIDを指定すれば,その特定のオブジェクトに保存されている値を取得することもできる。
たとえば,デフォルトゲートウェイとなっているIPアドレスを取得したいとしよう。各ルーティング情報のゲートウェイ情報は,“1.3.6.1.2.1.4.21.1.7.aaa.bbb.ccc.ddd”というOIDをもつオブジェクトに格納されている。aaa.bbb.ccc.dddは,ルーティング情報の到着先となるIPアドレスで,デフォルトゲートウェイの場合には,“0.0.0.0”だ。よって,次のようにsnmpgetコマンドを実行すればよい。
$ snmpget localhost private .1.3.6.1.2.1.4.21.1.7.0.0.0.0
ip.ipRouteTable.ipRouteEntry.ipRouteNextHop.0.0.0.0 = IpAddress: 192.168.0.1
|
この結果を見ると,このホストのデフォルトゲートウェイは,192.168.0.1に設定されているということがわかる。
などといろいろ説明してきたが,小規模なシステムでは,静的なルーティングが設定されることが多く,あまりルーティング情報を監視したい場面はないだろう。
それよりネットワーク監視として重要なのは,ipInHdrErrors(1.3.6.1.2.1.4.4)やipInAddrErrors(1.3.6.1.2.1.4.5)といった壊れたり宛先不明となっているパケット数だ。あまりにこれらの数が多いようだと,ネットワークがハードウェア的に不安定であったり,第三者があえて壊れたIPパケットを送信して攻撃を仕掛けているといった状況が考えられるからだ。