Movatterモバイル変換


[0]ホーム

URL:


Jの衝動書き日記

さらりーまんSEの日記でございます。

トップ>仕事>SNMP Trapの中身を覗いてみる

SNMP Trapの中身を覗いてみる

 お仕事でSNMP Trapをあれこれと扱ったので、復習としてメモを残しておく。

 

 

SNMP Trapのパケット構成

 SNMP Trap(Version v2c)は以下の構成をとる。

f:id:newWell:20130905134223j:plain

 

 また、上記の各項目は以下のように3つのフィールドで構成される。

f:id:newWell:20130905134222j:plain

 

なおデータ長は、

  1. 127バイト以下は1バイトで表し、
  2. 127バイト以上は『8|データフィールド数,データフィールド1,データフィールド2……』

で表す。

例)
     150 → 81 96
     500 → 82 01 F4 → データフィールド数は2で01 F4がデータフィールド

 パケットの中身を見てみる

以下のコマンドを実行し、SNMP Trapを送信してみる。

 snmptrap -v 2c -c test 192.168.1.10 '' .1.3.6.1.4.1.8072.99999 .1.3.6.1.4.1.8072.99999.1 s "Test Message"

それをパケットキャプチャし、SNMP Trapの部分を抜き出したのが以下になる。

  30 62 02 01 01 04 04 74 65 73 74 a7 57 02 04 3f
  ba 5a c0 02 01 00 02 01 00 30 49 30 10 06 08 2b
  06 01 02 01 01 03 00 43 04 10 f1 9e 47 30 18 06
  0a 2b 06 01 06 03 01 01 04 01 00 06 0a 2b 06 01
  04 01 bf 08 86 8d 1f 30 1b 06 0b 2b 06 01 04 01
  bf 08 86 8d 1f 01 04 0c 54 65 73 74 20 4d 65 73
  73 61 67 65

 

1.キャプチャしたデータの内容を確認

 先頭を見ると30とあるのでSequence型だとわかる。長さは62とあるため98バイト(98は16進数では62)だ。以下の赤い部分がその内容となる。

 30 62 02 01 01 04 04 74 65 73 74 a7 57 02 04 3f
  ba 5a c0 02 01 00 02 01 00 30 49 30 10 06 08 2b
  06 01 02 01 01 03 00 43 04 10 f1 9e 47 30 18 06
  0a 2b 06 01 06 03 01 01 04 01 00 06 0a 2b 06 01
  04 01 bf 08 86 8d 1f 30 1b 06 0b 2b 06 01 04 01
  bf 08 86 8d 1f 01 04 0c 54 65 73 74 20 4d 65 73
  73 61 67 65

  次に、データの内容を見る。

 

2. Trapのパケット構成

SNMP Trapはv2cの形式で送信されている。各フィールドを色付けすると以下のようになる。

  30 6202 01 01 04 04 74 65 73 74a7 5702 04 3f
  ba 5a c002 01 0002 01 0030 49 30 10 06 08 2b
  06 01 02 01 01 03 00 43 04 10 f1 9e 47 30 18 06
  0a 2b 06 01 06 03 01 01 04 01 00 06 0a 2b 06 01
  04 01 bf 08 86 8d 1f 30 1b 06 0b 2b 06 01 04 01
  bf 08 86 8d 1f 01 04 0c 54 65 73 74 20 4d 65 73
  73 61 67 65

  1. SNMP Version 
    • Interger(02) | 長さ:1 | 値:1 → v2cを示す
  2. コミュニティ名
    • OCTET STRING(04) | 長さ:4 |値: 74(t) 65(e) 73(s) 74(t) →  test
  3. PDU Type
    • SNMPv2-Trap(a7) 長さ:87 ※形式の指定はない
  4. リクエストID
    • Integer(02) | 長さ:4 | 値:3fba5ac0(16進) → 1069177536
  5. エラーステータス
    •  Integer(02) | 長さ:1 | 値:0
  6. エラーインデックス
    • Integer(02) | 長さ:1 | 値:0
  7. Trapデータ
    • Sequence(30)| 長さ:73 |

TrapデータはSequence型なので、次にこの中身を見てみる。

 

3. Trapデータの内容

TrapはSequenceの形で複数存在する。OID:値の組で定義される。

また、最初の2件はsysupTime.0(赤字の部分)とsysTrapOID.0(青字の部分)となる。

  30 62 02 01 01 04 04 74 65 73 74 a7 57 02 04 3f
  ba 5a c0 02 01 00 02 01 00 30 4930 10 06 08 2b
  06 01 02 01 01 03 00 43 04 10 f1 9e 4730 18 06
  0a 2b 06 01 06 03 01 01 04 01 00 06 0a 2b 06 01
  04 01 bf 08 86 8d 1f30 1b 06 0b 2b 06 01 04 01
  bf 08 86 8d 1f 01 04 0c 54 65 73 74 20 4d 65 73
  73 61 67 65

  1. sysupTime.0
    • Sequence(30)|長さ:16
      • OID(06) | 長さ:8 | 値:2b 06 01 02 01 01 03 00
        • 値は、OID 1.3.6.1.2.1.1.3.0(sysupTime.0) を示す
        • 先頭の1.3が2b となるのは、OIDの変換規則で40 x 1 + 3と最初は変換されるため
      • TimeTicks(43) | 長さ:4 | 値: 10f19e47(16進) → 284270151
  2. sysTrapOID.0
    • Sequence(30)|長さ:24
      • OID(06) | 長さ:10 | 値:2b 06 01 06 03 01 01 04 01 00
        • 値は、OID 1.3.6.1.6.3.1.1.4.1.0(sysTrapOID.0)を示す
      • OID(06) | 長さ:10 | 値:2b 06 01 04 01 bf 08 86 8d 1f
        • 値は、OID1.3.6.1.4.1.8072.99999(enterprises.8072.99999)を示す※送信したTrapのOID
        • bf 08 → 1011111100001000 01111110001000 → 8072 ※先頭ビットを取り除き連結させる
        • 86 8d 1f → 10000110 1000110100011111000011000011010011111 → 99999
  3. enterprises.8072.99999.1
    • Sequence(30)| 長さ:27
      • OID(06) | 長さ:11 | 値:2b 06 01 04 01 bf 08 86 8d 1f 01
        • 値は、OID 1.3.6.1.4.1.8072.99999.1(enterprises.8072.99999.1)を示す
      • OCTET STRING(04)| 長さ:12 | 値:54 65 73 74 20 4d 65 73 73 61 67 65 → TestMessage

 

結論

 Wiresharkという便利なツールがあるので、見るときはそっちで見ようね!

 お仕事ではSNMPパケットに独自にデータを付与していたため、Wiresharkでパケットを見てもSNMPパケットとしては表示できず手動でみる羽目になったけど・・・・。

 

参考元

http://www.webnms.jp/solutions/snmp.html

http://www.geocities.co.jp/SiliconValley-SanJose/3377/

なお、図は上記サイトから借用させていただきました。

 

 

検索
注目記事

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp