FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Wireshark で SNMP OID のシンボル名解決

今回は「Windows 版の Wireshark で SNMP パケットの OID をシンボル名に変換しよう!」という、Wireshark についての小ネタです。

Step1. 32bit 版 Wireshark をインストールする


今回の最大のポイントです。Windows 環境で SNMP パケットをキャプチャする場合は、必ず 32bit 版を使用するようにしましょう。

というのも、2011年8月時点での最新リリースである 1.6.1 の Release Note の Known Problems の欄に以下の一文が記載されていることからも分かる通り、64bit 版のインストーラを使用した場合、SNMP のパケットをデコードするために必要なライブラリである libsmi がインストールされず、OID からシンボル名への名前解決を行うことができません。

The 64-bit Windows installer does not ship with libsmi.


実際に、Wireshark のプリファレンス設定画面でも、64bit 版では以下のように該当するメニューが無効化されていることがわかります。

64bit 版
wireshark_1-3r.png
32bit 版
wireshark_1-4r.png
今回は Wireshark のダウンロード画面 から Windows PortableApps (32-bit) をダウンロードし、適切なディレクトリに展開します。以降のフォルダやファイルのパスの記述は PortableApps 版をもとにして記述しますので、インストーラーを使用する場合は適切な名前に読み替えて下さい。

Step2. MIB ファイルを MIB フォルダに配置する


参照したいオブジェクトが定義された MIB ファイルを MIB フォルダに配置します。PortableApps の場合、MIB フォルダは \WiresharkPortable\App\Wireshark\snmp\mibs および \WiresharkPortable\Data\snmp\mibs になります。前者のフォルダはデフォルトで存在し、Wireshark にバンドルされている多数の標準 MIB が格納されているので、ユーザが追加するエンタープライズ MIB 等は後者のフォルダにまとめて置いておくとよいでしょう。

Net-SNMP と比較した場合、Wireshark のロード対象 MIB の指定方式の長所として、MIB の依存関係を自動的に解決してくれる点が挙げられます。取りあえず関連しそうな MIB をすべて MIB フォルダに入れておき、その中からロードしたい MIB モジュールを指定すれば、後は必要な MIB モジュールを判断して個別にロードしてくれます。Net-SNMP で MIBS=ALL を指定した時のように全ての MIB が読み込まれてしまうといったことはありません。

今回は Cisco 機器のトラップをキャプチャして分析するため、Cisco の FTP サイト から v1.tar.gz および v2.tar.gz をダウンロードして展開し、v2.tar.gz に含まれる全ての MIB と、v1.tar.gz から抽出した SMIv1 形式のものしか存在しない MIB ファイル(OLD-CISCO-XXX-MIB 等)を \WiresharkPortable\Data\snmp\mibs に配置しておきます。

なお、MIB をロードするためには、MIB ファイルの名前がモジュール名と一致している必要があり、拡張子についても「.txt」「.my」「.mib」「.smiv2」「.sming」もしくは「拡張子無し」という特定の拡張子名を使用しなければならないという制約があります。CISCO-GENERAL-TRAPS-MIB.my のようにファイル名とモジュール名が異なる MIB では、ファイル名を変更する必要があるので注意して下さい。

また、エンタープライズ MIB の中には libsmi のチェックに引っかかってロードできないものもあり、内容の書き換えが必要となるケースもあります。こうしたものについては、libsmi パッケージ に含まれる smilint などで個別に確認して対処する必要があります。

Step3. Wireshark の設定を行う


準備が整ったら、Wireshark の設定を行います。

1. Wireshark 起動後の初期画面から、Edit >> Preferences... を選択します。

2. User Interface: Name Resolution を選択して、「Enable OID Resolution」「Suppress SMI errors」にチェックをいれ、OK ボタンを押します。

wireshark_1-5r.png

※ 「Suppress SMI errors」のチェックは必須ではなく、むしろ正しい設定の確認という観点ではチェックを外した方がよい面もありますが、追加の MIB モジュールをロードするよう指定すると、起動時に SNMPv2-SMI のインポートエラーが必ず表示されてしまうという問題があります。

wireshark_1-14.png

新しい MIB をロードする際には一時的にチェックを外して Wireshark を再起動し、問題ないことを確認できたら再度チェックを入れておくとよいでしょう。

3. 再度 Name Resolution 画面を開くと、先ほどは無かったボタンが 2 つ表示されるので、「SMI(MIB and PIB)modules」をクリックします。

wireshark_1-6r.png

4. 「New」ボタンを押して、追加でロードする MIB のモジュール名(ファイル名ではないので注意)を入力します。

wireshark_1-7r.png

今回は CISCO-OSPF-TRAP-MIB を読み込んでみます。

wireshark_1-8.png

上記の操作を行うと、\WiresharkPortable\Data\smi_modules というファイルが作成され、GUI で指定した MIB の一覧が書き込まれます。ロード対象のモジュールの数が多く、GUI からの登録が面倒な場合はこのファイルを直接編集してもよいでしょう(先頭のコメントに触るなと書いてありますが…)。

5. 設定を完了して OK ボタンを押すと、設定変更は再起動後に有効になる旨のメッセージが表示されるので、Wireshark を再起動します。

再起動完了後は、Internals >> Supported Protocols (slow!) >> Display Filter Fields の画面から、ロードされているおおよその MIB を確認できます。

wireshark_1-16.png

上記画面では、ロード対象として指定した CISCO-OSPF-TRAP-MIB に加えて、その前提 MIB である OSPF-MIB(や、CISCO-OSPF-MIB)がロードされていることがわかります。

※ ここで表示されるのはフィールドのシンボル名解決の対象となるオブジェクトのみで、具体的には MIB の中で OBJECT-TYPE として定義されているものになります。TRAP-TYPE や NOTIFICATION-TYPE として定義されているものは表示されませんので注意しましょう。

Step 3. SNMP パケットを受信する


設定が完了したら、SNMP パケットを受信して動作を確認してみましょう。

以下の画面は、CISCO-OSPF-TRAP-MIB に定義されている cospfIfConfigError トラップを受信した場合の表示例です。

wireshark_1-17.png

他の MIB オブジェクトも同様の手順でシンボル名に解決できますので、色々な MIB をロードして試してみましょう。

スポンサーサイト

テーマ : おすすめソフトウェア
ジャンル : コンピュータ

プロフィール

米麹

筆者: 米麹
某社に勤務する SE です。
ここでは本職とは関係のない趣味的な検証情報などを書いていきます。

注意事項とお願い
記事の内容は掲載時点のもので、現在は異なる可能性があります。情報に誤りや不適切な事項があった場合には、コメントやメールフォームでご指摘下さい。
また、本サイトの情報を利用することによって生じたいかなる損害についても、筆者は責任を負いかねますのでご了承下さい。
カレンダー
07 | 2011/08 | 09
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最新記事
月別アーカイブ
カテゴリ
全記事表示リンク

全ての記事を表示する

検索フォーム
メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。