3

SNMP トラップの形式を理解しようとしています。SNMPトラップを送信するコードをWindowsからLinuxに移植しています。Windows コードは組み込みのライブラリ (一部の関数には SnmpStartup、SnmpSetRetransmitMode が含まれます。WinSNMP と呼ばれる場合があります) を使用するため、Linux に移植するときにそのコードを保持する方法はありません。

SNMP トラップを簡単に送信できる SNMP++ という優れたライブラリを見つけました。

私の理解では、SNMP トラップの最初の 2 つの変数バインディング (vb) フィールドは、特定の形式を満たす必要があります。最初の vb は sysuptime (基本的には、トラップのタイムスタンプ) であり、既知の OID 1.3.6.1.2.1.1.3.0.

2 番目の vb はトラップの ID です。それに関するドキュメントはどこにも見つかりませんが、SNMP++ はトラップの ID に OID を与えます1.3.6.1.6.3.1.1.4.1.0(その値は、送信しているトラップの OID です)。pdu.set_notify_id 関数を使用して設定されます。

これは、トラップを送信するときに存在しなければならない別の既知の OID ですか? Windows ライブラリは、この OID をまったく使用しません。ID フィールドの OID を送信する OID に設定するため、OID とその値は同じものに設定されます。ただし、手動で行われているように見えるため、元のコーダーは形式を十分に理解していない可能性があります。

では、どちらが正しいでしょうか?

windows:
1.3.6.1.4.1.XXXX.2.1.51 -> 1.3.6.1.4.1.XXXX.2.1.51

SNMP++:
1.3.6.1.6.3.1.1.4.1.0 -> 1.3.6.1.4.1.XXXX.2.1.51

1.3.6.1.6.3.1.1.4.1.0この値に関するドキュメントが見つからないのはなぜですか? 私が読んだRFCにはないようです。OIDが結果を提供することをグーグルで検索しますが、その使用法については説明していません。

4

2 に答える 2

-1
/**
 * TrapType defines the type of SNMPv2/SNMPv3 trap,
 * this is defined in the SNMPv2-MIB as snmpTrapOID.0
 * (.1.3.6.1.6.3.1.1.4.1.0) with an OID value of one
 *  of the following
 */
public static final String SNMP_TRAP_OID = "1.3.6.1.6.3.1.1.4.1.0";

/** coldStart OID */
public static final String COLDSTART_OID = "1.3.6.1.6.3.1.1.5.1";

/** warmStart OID */
public static final String WARMSTART_OID = "1.3.6.1.6.3.1.1.5.2";

/** linkDown OID */
public static final String LINKDOWN_OID = "1.3.6.1.6.3.1.1.5.3";

/** linkUp OID */
public static final String LINKUP_OID = "1.3.6.1.6.3.1.1.5.4"

http://www.netwatcher.jp/snmp/snmp_err_oid.html

于 2014-09-17T21:20:52.330 に答える