ネットワーク検証における SNMP の動作確認
ネットワーク構築における検証作業にて、SNMP の動作確認を行うことが良くあります。
SNMP については主に以下の 2 点を確認します。
- 監視サーバからネットワーク機器への
SNMP Get
の動作確認 - ネットワーク機器から監視サーバへの
SNMP Trap
送信の動作確認
以下では SNMP Get
の動作確認方法について記載します。
宛先ポートを指定した SNMP Get の実施方法
SNMP Get のデフォルトの待ち受けポートは 161
ですが、ネットワーク機器側で待ち受けポートを変更している場合があります。
この場合、監視サーバ側での SNMP Get 実行時に宛先ポート番号を明示的に指定する必要があります。
方法としてはいくつかあると思いますが、CentOS の snmpget
コマンドを使用すると簡単に宛先ポート番号を指定した SNMP Get を実行することができます。
CentOS の準備
ここでは CentOS 8 を使用します。
snmpget コマンドを使用するためには net-snmp-utils
をインストールする必要があるため以下コマンドでインストールします。
dnf -y install net-snmp-utils
[root@CentOS8 ~]# dnf -y install net-snmp-utils
インストールできたらバージョンを確認してみます。
[root@CentOS8 ~]# snmpget -V
NET-SNMP version: 5.8
CentOS での準備は以上です。
snmpget コマンドの使い方
snmpget コマンドの使い方は以下の通りです。
snmpget -v <1|2c> -c <コミュニティ> <宛先IP[:ポート番号]> <OID>
-v <1|2c>
:SNMP バージョンを指定-c <コミュニティ>
:ネットワーク機器側で設定されているコミュニティを指定<宛先IP[:ポート番号]>
:対象ネットワーク機器のIPアドレスとポート番号(オプション)を指定- ポート番号を指定しない場合は 161 となる
<OID>
:SNMP Get 対象の OID を指定
例えば対象機器のホスト名を取得する例は以下の通りです。(ポート番号デフォルト)
[root@CentOS8 ~]# snmpget -v 1 -c hogehoge 10.1.10.254 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: FW01
対象機器側で待ち受けポートを 10161 に変更していた場合は、以下のようにポート番号として 10161 を指定して実行します。
[root@CentOS8 ~]# snmpget -v 1 -c hogehoge 10.1.10.254:10161 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: FW01
パケットキャプチャしてみると宛先ポートが 10161 になっていることが確認できます。

snmpwalk コマンドについて
CnetOS で net-snmp-utils
をインストールすると、snmpget コマンドの他に snmpwalk
コマンドも実行できるようになります。
snmpwalk
コマンドは、指定した OID 配下のすべての OID についての値を取得できます。
このコマンドも snmpget コマンドと同じ構文で使用できます。
snmpwalk -v <1|2c> -c <コミュニティ> <宛先IP[:ポート番号]> <OID>
-v <1|2c>
:SNMP バージョンを指定-c <コミュニティ>
:ネットワーク機器側で設定されているコミュニティを指定<宛先IP[:ポート番号]>
:対象ネットワーク機器のIPアドレスとポート番号(オプション)を指定- ポート番号を指定しない場合は 161 となる
<OID>
:SNMP Get 対象の OID を指定
[root@CentOS8 ~]# snmpwalk -v 1 -c hogehoge 10.1.10.254:10161 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING:
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.12356.101.1.641
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (663431052) 76 days, 18:51:50.52
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: FW01
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 78
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORIndex.1 = INTEGER: 1
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::zeroDotZero.0
SNMPv2-MIB::sysORDescr.1 = STRING:
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00