This site covers Cisco and Palo Alto as part of *** Shadowgarden.org ***

ネットワーク機器の SNMP 機能検証を Net-SNMP で行う方法

目次

ネットワーク設計・構築における SNMP 機能検証

スイッチやルータなどのネットワーク機器の設計・構築案件では、監視サーバから対象機器を監視するための SNMP 機能も含めて設計・構築・動作検証を行います。

ネットワーク機器の SNMP 機能の検証では、監視サーバ (SNMP マネージャ) として動作する何らかのアプリケーションを使用して以下の確認を行います。

SNMP 機能検証での確認事項
  • SNMP マネージャにて SNMP-Get を実行して対象機器から情報を取得できることを確認
  • 対象機器から送信された Trap を SNMP マネージャで受信できることを確認

ここで問題となるのが、SNMP マネージャをどのように用意するかということです。検証のために実際に商用ネットワークで使用されるようなアプリケーションを構築することは非常に手間がかかります。また無償のトライアル版を使用できるアプリケーションも限られます。

本記事では、Linux OS で非常に手軽に用意できる Net-SNMP というアプリケーションを使用して SNMP-Get 及び Trap 受信の検証を行う方法を説明します。なお、SNMPv1/v2c と SNMPv3 それぞれに対応した方法を説明します。

動作確認環境

本記事作成にあたり以下環境で動作検証を実施しています。

  • Cent OS Stream 9
    • Net-SNMP 5.9.1-17
  • Cisco C9200L-24T-4G
    • IOS XE 17.12.05

以下では Cent OS Stream 9 環境を前提として説明しています。

SNMP-Get 用の Net-SNMP 環境構築と検証実施手順

必要パッケージのインストール

まず Net-SNMP の SNMP-GETリクエストを実行するためのコマンドを含む「net-snmp-utils」パッケージを以下コマンドでインストールします。

dnf -y install net-snmp-utils
[root@localhost ~]# dnf -y install net-snmp-utils
メタデータの期限切れの最終確認: 0:01:29 前の 2025年11月23日 13時48分22秒 に実施しました。
依存関係が解決しました。
======================================================================================================================
 パッケージ                     アーキテクチャー       バージョン                     リポジトリー              サイズ
======================================================================================================================
インストール:
 net-snmp-utils                 x86_64                 1:5.9.1-17.el9                 appstream                 202 k
依存関係のインストール:
 net-snmp-libs                  x86_64                 1:5.9.1-17.el9                 appstream                 756 k

トランザクションの概要
======================================================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 958 k
インストール後のサイズ: 3.6 M
パッケージのダウンロード:
(1/2): net-snmp-utils-5.9.1-17.el9.x86_64.rpm                                         848 kB/s | 202 kB     00:00
(2/2): net-snmp-libs-5.9.1-17.el9.x86_64.rpm                                          2.2 MB/s | 756 kB     00:00
----------------------------------------------------------------------------------------------------------------------
合計                                                                                  1.4 MB/s | 958 kB     00:00
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                                                              1/1
  インストール中   : net-snmp-libs-1:5.9.1-17.el9.x86_64                                                          1/2
  インストール中   : net-snmp-utils-1:5.9.1-17.el9.x86_64                                                         2/2
  scriptletの実行中: net-snmp-utils-1:5.9.1-17.el9.x86_64                                                         2/2
  検証中           : net-snmp-libs-1:5.9.1-17.el9.x86_64                                                          1/2
  検証中           : net-snmp-utils-1:5.9.1-17.el9.x86_64                                                         2/2

インストール済み:
  net-snmp-libs-1:5.9.1-17.el9.x86_64                       net-snmp-utils-1:5.9.1-17.el9.x86_64

完了しました!
[root@localhost ~]#

SNMP-GET リクエスト実行方法

net-snmp-utils」をインストール後、以下のようなコマンドを実行できるようになります。

SNMP GET 検証で使用する主なコマンド
  • snmpget
    • 対象機器に対して SNMP GET リクエストを実行します
    • 指定した OID の値を取得する
  • snmpwalk
    • 対象機器に対して SNMP GETNEXT リクエストを実行します
    • 指定した OID 配下のすべての OID の情報を取得する

snmpget」コマンドと「snmpwalk」コマンドは SNMP リクエストの種別が異なるだけで、コマンドの実行構文(オプション)は全く同じです。

SNMPv1/v2c 用の SNMP-GET コマンド構文

SNMPv1/v2c ではコミュニティを使用した認証を行います。コマンド構文は以下の通りです。

SNMPv1/v2c用コマンド構文
  • snmpget -v <1|2c> -c <コミュニティ> <宛先IP[:ポート番号]> <OID>
  • snmpwalk -v <1|2c> -c <コミュニティ> <宛先IP[:ポート番号]> <OID>
補足情報
  • -v <1|2c>:SNMPバージョンを指定。v1の場合は「-v 1」、v2cの場合は「-v 2c」と指定
  • -c <コミュニティ>:リクエスト対象のネットワーク機器に設定されているコミュニティを指定
  • <宛先IP[:ポート番号]>:リクエスト対象のネットワーク機器のIPアドレスを指定。オプションでポート番号を指定可能
    • ポートを指定しない場合は「161」となる
    • ポート指定時は「192.168.45.100:1616」のように指定する
  • <OID>:リクエスト対象の OID を指定する。以下は例
    • 「1.3.6.1.2.1.1」:system グループ (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.1.5.0」:sysName (ホスト名)
    • 「1.3.6.1.2.1.2.2.1.1」:ifIndex (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.7」:インターフェース[shut/no shut]状態 (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.8」:インターフェース[up/down]状態 (snmpwalk による一覧表示用)

以下は snmpget でホスト名を取得するコマンド実行例です。

[root@localhost ~]# snmpget -v 2c -c shadowgarden 192.168.45.100 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: MyC9200L

上は情報取得成功例ですが、コミュニティ間違いや疎通が取れていないなどで失敗している場合は以下の様にタイムアウト表示になります。

[root@localhost ~]# snmpget -v 2c -c shadowgarden-ng 192.168.45.100 1.3.6.1.2.1.1.5.0
Timeout: No Response from 192.168.45.100.

以下は snmpwalk で system グループの情報を取得するコマンド例です。

[root@localhost ~]# snmpwalk -v 2c -c shadowgarden 192.168.45.100 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software [Dublin], Catalyst L3 Switch Software (CAT9K_LITE_IOSXE), Version 17.12.5, RELEASE SOFTWARE (fc5)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Compiled Fri 14-Mar-25 02:48 by mcpr
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.2694
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (595703) 1:39:17.03
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: MyC9200L
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
#以下略

SNMPv3 用の SNMP-GET コマンド構文

SNMPv3 ではコミュニティの代わりに SNMP ユーザを使用して認証を行います。オプションとしてハッシュアルゴリズムの指定、暗号アルゴリズムの指定が可能なため、その分オプションが多くなります。

以下ではパターン別にコマンド構文を記載します。

  • 認証無し、暗号化無し
  • 認証有り、暗号化無し
  • 認証有り、暗号化有り
①SNMPv3 認証無し・暗号化無しのコマンド構文
  • snmpget -v 3 -l noAuthNoPriv -u <ユーザ名> <宛先IP[:ポート番号]> <OID>
  • snmpwalk -v 3 -l noAuthNoPriv -u <ユーザ名> <宛先IP[:ポート番号]> <OID>
補足情報
  • -u <ユーザ名>:リクエストで使用する SNMPv3 ユーザ名
  • <宛先IP[:ポート番号]>:リクエスト対象のネットワーク機器のIPアドレスを指定。オプションでポート番号を指定可能
    • ポートを指定しない場合は「161」となる
    • ポート指定時は「192.168.45.100:1616」のように指定する
  • <OID>:リクエスト対象の OID を指定する。以下は例
    • 「1.3.6.1.6.3.10.2.1.1.0」:SNMPエンジンID
    • 「1.3.6.1.2.1.1」:system グループ (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.1.5.0」:sysName (ホスト名)
    • 「1.3.6.1.2.1.2.2.1.1」:ifIndex (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.7」:インターフェース[shut/no shut]状態 (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.8」:インターフェース[up/down]状態 (snmpwalk による一覧表示用)

以下は認証無し・暗号化無しの場合に snmpget でホスト名を取得するコマンド実行例です。

[root@localhost ~]# snmpget -v 3 -l noAuthNoPriv -u myv3user 192.168.45.100 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: MyC9200L

以下は snmpwalk で system グループの情報を取得するコマンド例です。

[root@localhost ~]# snmpwalk -v 3 -l noAuthNoPriv -u myv3user 192.168.45.100 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software [Dublin], Catalyst L3 Switch Software (CAT9K_LITE_IOSXE), Version 17.12.5, RELEASE SOFTWARE (fc5)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Compiled Fri 14-Mar-25 02:48 by mcpr
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.2694
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (728332) 2:01:23.32
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: MyC9200L
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6
#以下略
②SNMPv3 認証有り・暗号化無しのコマンド構文
  • snmpget -v 3 -l AuthNoPriv -u <ユーザ名> -a <ハッシュアルゴリズム> -A <認証パスワード> <宛先IP[:ポート番号]> <OID>
  • snmpwalk -v 3 -l AuthNoPriv -u <ユーザ名> -a <ハッシュアルゴリズム> -A <認証パスワード> <宛先IP[:ポート番号]> <OID>
補足情報
  • -u <ユーザ名>:リクエストで使用する SNMPv3 ユーザ名
  • -a <ハッシュアルゴリズム>:SNMPv3ユーザ設定に合わせてハッシュアルゴリズムを以下から指定
    • MD5
    • SHA
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512
  • -A <認証パスワード>:SNMPv3ユーザ設定に合わせて認証パスワードを指定
  • <宛先IP[:ポート番号]>:リクエスト対象のネットワーク機器のIPアドレスを指定。オプションでポート番号を指定可能
    • ポートを指定しない場合は「161」となる
    • ポート指定時は「192.168.45.100:1616」のように指定する
  • <OID>:リクエスト対象の OID を指定する。以下は例
    • 「1.3.6.1.6.3.10.2.1.1.0」:SNMPエンジンID
    • 「1.3.6.1.2.1.1」:system グループ (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.1.5.0」:sysName (ホスト名)
    • 「1.3.6.1.2.1.2.2.1.1」:ifIndex (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.7」:インターフェース[shut/no shut]状態 (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.8」:インターフェース[up/down]状態 (snmpwalk による一覧表示用)

以下は認証有り・暗号化無しの場合に snmpget でホスト名を取得するコマンド実行例です。

[root@localhost ~]# snmpget -v 3 -l AuthNoPriv -u myv3user -a SHA -A authpass 192.168.45.100 1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: MyC9200L

以下は snmpwalk で system グループの情報を取得するコマンド例です。

[root@localhost ~]# snmpwalk -v 3 -l AuthNoPriv -u myv3user -a SHA -A authpass 192.168.45.100 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software [Dublin], Catalyst L3 Switch Software (CAT9K_LITE_IOSXE), Version 17.12.5, RELEASE SOFTWARE (fc5)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Compiled Fri 14-Mar-25 02:48 by mcpr
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.2694
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (794028) 2:12:20.28
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: MyC9200L
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6
#以下略
③SNMPv3 認証有り・暗号化有りのコマンド構文
  • snmpget -v 3 -l AuthPriv -u <ユーザ名> -a <ハッシュアルゴリズム> -A <認証パスワード> -x <暗号アルゴリズム> -X <暗号パスワード> <宛先IP[:ポート番号]> <OID>
  • snmpwalk -v 3 -l AuthPriv -u <ユーザ名> -a <ハッシュアルゴリズム> -A <認証パスワード> -x <暗号アルゴリズム> -X <暗号パスワード> <宛先IP[:ポート番号]> <OID>
補足情報
  • -u <ユーザ名>:リクエストで使用する SNMPv3 ユーザ名
  • -a <ハッシュアルゴリズム>:SNMPv3ユーザ設定に合わせてハッシュアルゴリズムを以下から指定
    • MD5
    • SHA
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512
  • -A <認証パスワード>:SNMPv3ユーザ設定に合わせて認証パスワードを指定
  • -x <暗号アルゴリズム>:SNMPv3ユーザ設定に合わせて暗号アルゴリズムを以下から指定
    • DES
    • AES
    • AES-192
    • AES-256
    • AES-256-C
  • -X <暗号パスワード>:SNMPv3ユーザ設定に合わせて暗号パスワードを指定
  • <宛先IP[:ポート番号]>:リクエスト対象のネットワーク機器のIPアドレスを指定。オプションでポート番号を指定可能
    • ポートを指定しない場合は「161」となる
    • ポート指定時は「192.168.45.100:1616」のように指定する
  • <OID>:リクエスト対象の OID を指定する。以下は例
    • 「1.3.6.1.6.3.10.2.1.1.0」:SNMPエンジンID
    • 「1.3.6.1.2.1.1」:system グループ (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.1.5.0」:sysName (ホスト名)
    • 「1.3.6.1.2.1.2.2.1.1」:ifIndex (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.7」:インターフェース[shut/no shut]状態 (snmpwalk による一覧表示用)
    • 「1.3.6.1.2.1.2.2.1.8」:インターフェース[up/down]状態 (snmpwalk による一覧表示用)

以下は認証有り・暗号化有りの場合に snmpget でホスト名を取得するコマンド実行例です。

[root@localhost ~]# snmpget -v 3 -l AuthPriv -u myv3user -a SHA -A authpass -x AES -X privpass 192.168.45.100 1.3.6.1.
2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: MyC9200L

以下は snmpwalk で system グループの情報を取得するコマンド例です。

[root@localhost ~]# snmpwalk -v 3 -l AuthPriv -u myv3user -a SHA -A authpass -x AES -X privpass 192.168.45.100 1.3.6
.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software [Dublin], Catalyst L3 Switch Software (CAT9K_LITE_IOSXE), Versio  17.12.5, RELEASE SOFTWARE (fc5)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Compiled Fri 14-Mar-25 02:48 by mcpr
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.2694
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (852967) 2:22:09.67
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: MyC9200L
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6
#以下略

SNMP Trap 受信用の Net-SNMP 環境構築と検証実施手順

事前準備:対象機器のエンジンIDの取得

使用 SNMP バージョンが v3 の場合、Trap 受信のために対象機器の「エンジンID」が必要になります。

エンジンIDは対象機器上で確認するか、または snmpget を OID「1.3.6.1.6.3.10.2.1.1.0」指定で実行して取得します。

必要パッケージのインストール

まず Net-SNMP のトラップ受信機能である snmptrapd を含む「net-snmp」パッケージを以下コマンドでインストールします。

dnf -y install net-snmp
[root@localhost ~]# dnf -y install net-snmp
メタデータの期限切れの最終確認: 1:39:51 前の 2025年11月23日 13時48分22秒 に実施しました。
依存関係が解決しました。
======================================================================================================================
 パッケージ                             アーキテクチャー   バージョン                     リポジトリー          サイズ
======================================================================================================================
インストール:
 net-snmp                               x86_64             1:5.9.1-17.el9                 appstream             308 k
依存関係のインストール:
 lm_sensors-libs                        x86_64             3.6.0-10.el9                   appstream              42 k

#中略

 perl-vars                              noarch             1.05-483.el9                   appstream              13 k
弱い依存関係のインストール:
 perl-NDBM_File                         x86_64             1.15-483.el9                   appstream              22 k

トランザクションの概要
======================================================================================================================
インストール  64 パッケージ

ダウンロードサイズの合計: 8.2 M
インストール後のサイズ: 29 M
パッケージのダウンロード:
(1/64): mariadb-connector-c-config-3.2.6-1.el9.noarch.rpm                              95 kB/s |  11 kB     00:00

#中略

(64/64): perl-libs-5.32.1-483.el9.x86_64.rpm                                          4.7 MB/s | 2.2 MB     00:00
----------------------------------------------------------------------------------------------------------------------
合計                                                                                  3.1 MB/s | 8.2 MB     00:02
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                                                              1/1
  インストール中   : perl-Digest-1.19-4.el9.noarch                                                               1/64

#中略

  検証中           : perl-vars-1.05-483.el9.noarch                                                              64/64

インストール済み:
  lm_sensors-libs-3.6.0-10.el9.x86_64                        mariadb-connector-c-3.2.6-1.el9.x86_64

#中略

  perl-subs-1.03-483.el9.noarch                              perl-vars-1.05-483.el9.noarch

完了しました!
[root@localhost ~]#

設定ファイル snmptrapd.conf の編集

snmptrapd の設定ファイルは以下です。

  • /etc/snmp/snmptrapd.conf

SNMPv1/v2c であればコミュニティ設定、SNMPv3 であれば SNMPv3 ユーザの設定を行います。

ただし SNMPv3 ユーザの設定を行う場合のみ注意点があります。詳しくは後述します。

SNMPv1/v2c の場合:コミュニティの設定

SNMPv1/v2c の場合は、Trap 受信を許可するコミュニティ文字列の設定を行います。

SNMPv1/v2c コミュニティの設定構文
  • authCommunity log <コミュニティ>
補足情報
  • <コミュニティ>:Trap 送信機器で設定されているコミュニティ文字列を指定

以下はコミュニティとして「shadowgarden」を設定する例です。

authCommunity log shadowgarden

SNMPv3 の場合:SNMPv3 ユーザの設定

認証・暗号化の有無によって以下の通りユーザ設定を追記します。

①SNMPv3 認証無し・暗号化無しの設定構文
  • createUser -e 0x<エンジンID> <ユーザ名>
  • authUser log <ユーザ名> noauth
補足情報
  • -e 0x<エンジンID>:Trap 送信機器のエンジンIDを指定
  • <ユーザ名>:Trap 送信機器で設定されている SNMPv3 ユーザ名

以下は認証有り・暗号化無しの SNMPv3 ユーザの設定例です。

createUser -e 0x80000009030074E2E707DB80 myv3user
authUser log myv3user noauth
②SNMPv3 認証有り・暗号化無しの設定構文
  • createUser -e 0x<エンジンID> <ユーザ名> <ハッシュアルゴリズム> <認証パスワード>
  • authUser log <ユーザ名>
補足情報
  • -e 0x<エンジンID>:Trap 送信機器のエンジンIDを指定
  • <ユーザ名>:Trap 送信機器で設定されている SNMPv3 ユーザ名
  • <ハッシュアルゴリズム>:SNMPv3ユーザ設定に合わせてハッシュアルゴリズムを以下から指定
    • MD5
    • SHA
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512
  • <認証パスワード>:SNMPv3ユーザ設定に合わせて認証パスワードを指定

以下は認証有り・暗号化無しの SNMPv3 ユーザの設定例です。

createUser -e 0x80000009030074E2E707DB80 myv3user SHA authpass
authUser log myv3user
③SNMPv3 認証有り・暗号化有りの設定構文
  • createUser -e 0x<エンジンID> <ユーザ名> <ハッシュアルゴリズム> <認証パスワード> <暗号アルゴリズム> <暗号パスワード>
  • authUser log <ユーザ名> priv
補足情報
  • -e 0x<エンジンID>:Trap 送信機器のエンジンIDを指定
  • <ユーザ名>:Trap 送信機器で設定されている SNMPv3 ユーザ名
  • <ハッシュアルゴリズム>:SNMPv3ユーザ設定に合わせてハッシュアルゴリズムを以下から指定
    • MD5
    • SHA
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512
  • <認証パスワード>:SNMPv3ユーザ設定に合わせて認証パスワードを指定
  • <暗号アルゴリズム>:SNMPv3ユーザ設定に合わせて暗号アルゴリズムを以下から指定
    • AES
    • AES-192
    • AES-256
    • AES-256-C
    • ※3DES、DES は使えませんでした
  • <暗号パスワード>:SNMPv3ユーザ設定に合わせて暗号パスワードを指定

以下は認証有り・暗号化有りの SNMPv3 ユーザの設定例です。

createUser -e 0x80000009030074E2E707DB80 myv3user SHA authpass AES-256 privpass
authUser log myv3user priv

【注意】SNMPv3 ユーザ設定修正・削除の方法

snmptrapd の設定ファイルとして同名ファイルが以下の2箇所にあります。

  • /etc/snmp/snmptrapd.conf
  • /var/lib/net-snmp/snmptrapd.conf

SNMPv3 ユーザ追加時に編集するファイルは①「/etc/snmp/snmptrapd.conf」ですが、①に SNMPv3 ユーザ設定を追加後、snmptrapd サービスを起動し、さらにその後 snmptrapd サービスを停止するタイミングで ②「/var/lib/net-snmp/snmptrapd.conf」に SNMPv3 ユーザの設定内容が以下のように保存されます。(usmUser から始まる行)

#前略
usmUser 1 3 0x80000009030074e2e707db80 "myv3user" "myv3user" NULL .1.3.6.1.6.3.10.1.1.3 0xf38c62c0f6d4a4f2c7eae42a2b14b69e3ca2794d .1.3.6.1.4.1.9.12.6.1.2 0x6205fc12ba75411d2775e30711c1c24cadb12cd95fbe0788630bd6a9a6346970 0x
engineBoots 3
oldEngineID 0x80001f88804db6080026ce226900000000

②「/var/lib/net-snmp/snmptrapd.conf」に登録された SNMPv3 ユーザ情報は、それ以降、①「/etc/snmp/snmptrapd.conf」の編集を行ったとしても変わることはありません。そして実際の動作は②「/var/lib/net-snmp/snmptrapd.conf」の内容に基づいて決まるため、①「/etc/snmp/snmptrapd.conf」を編集することでの設定変更ができなくなります(ユーザの削除もできません)。

一度作成した SNMPv3 ユーザの設定修正・削除を行うためには以下の手順を行う必要があります。

STEP
snmptrapd の停止

snmptrapd を停止します。

STEP
/var/lib/net-snmp/snmptrapd.conf からユーザ情報を削除

以下コマンドを実行し「/var/lib/net-snmp/snmptrapd.conf」を vi エディタで開きます。

vi /var/lib/net-snmp/snmptrapd.conf

編集・削除対象のユーザの設定に該当する行(usmUser から始まり、対象ユーザ名を含む行)を削除してファイルを保存して閉じます。

#前略
usmUser 1 3 0x80000009030074e2e707db80 "myv3user" "myv3user" NULL .1.3.6.1.6.3.10.1.1.3 0xf38c62c0f6d4a4f2c7eae42a2b14b69e3ca2794d .1.3.6.1.4.1.9.12.6.1.2 0x6205fc12ba75411d2775e30711c1c24cadb12cd95fbe0788630bd6a9a6346970 0x
engineBoots 3
oldEngineID 0x80001f88804db6080026ce226900000000
STEP
/etc/snmp/snmptrapd.conf にてユーザ設定の編集

/etc/snmp/snmptrapd.conf」にて、SNMPv3 ユーザ設定の編集または削除を行います。

STEP
snmptrapd の起動

snmptrapd サービスを起動します。これで「/etc/snmp/snmptrapd.conf」に設定した通りに動作するようになります。

snmptrapd サービスの起動

まず firewalld が起動していると Trap パケットが拒否されるため firewalld を以下コマンドで停止します。

systemctl stop firewalld

firewalld で Trap パケットを許可するよう設定することでも問題ありません。

次に snmptrapd の自動起動設定(任意)と起動を以下コマンドで行います。

systemctl enable snmptrapd
systemctl start snmptrapd
[root@localhost snmp]# systemctl enable snmptrapd
Created symlink /etc/systemd/system/multi-user.target.wants/snmptrapd.service → /usr/lib/systemd/system/snmptrapd.service.
[root@localhost snmp]# systemctl start snmptrapd

サービス起動後、「systemctl status snmptrapd」を実行して状態を確認します。設定が間違えているとエラーログが表示されるため、エラーログが無いかを確認します。

[root@localhost snmp]# systemctl status snmptrapd
● snmptrapd.service - Simple Network Management Protocol (SNMP) Trap Daemon.
     Loaded: loaded (/usr/lib/systemd/system/snmptrapd.service; enabled; preset: disabled)
     Active: active (running) since Sun 2025-11-23 16:06:23 JST; 18min ago
   Main PID: 3381 (snmptrapd)
      Tasks: 1 (limit: 22944)
     Memory: 2.4M
        CPU: 69ms
     CGroup: /system.slice/snmptrapd.service
             mq3381 /usr/sbin/snmptrapd -Lsd -f

11月 23 16:06:23 localhost.localdomain systemd[1]: Starting Simple Network Management Protocol (SNMP) Trap Daemon....
11月 23 16:06:23 localhost.localdomain snmptrapd[3381]: NET-SNMP version 5.9.1
11月 23 16:06:23 localhost.localdomain systemd[1]: Started Simple Network Management Protocol (SNMP) Trap Daemon..
11月 23 16:06:37 localhost.localdomain snmptrapd[3381]: 2025-11-23 16:06:37 <UNKNOWN> [UDP: [192.168.45.100]:54720->[>
                                                         DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1201993) 3>
11月 23 16:06:43 localhost.localdomain snmptrapd[3381]: 2025-11-23 16:06:43 <UNKNOWN> [UDP: [192.168.45.100]:54720->[>
                                                         DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1202621) 3>
11月 23 16:06:51 localhost.localdomain snmptrapd[3381]: 2025-11-23 16:06:51 <UNKNOWN> [UDP: [192.168.45.100]:54720->[>
                                                         DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1203401) 3>
[root@localhost snmp]#

テスト Trap 送信と Trap 受信確認

Trap 送信機器にて Trap を生成・送信させ、snmptrapd で受信できているかを確認します。

snmptrapd で受信した Trap ログは「/var/log/messages」に保存されます。「tail -f /var/log/messages」を実行後に Trap を発生させることでリアルタイムに Trap 受信状況を確認できます。以下はリンク down/up を発生させた際の Trap ログです。

[root@localhost snmp]# tail -f /var/log/messages

Nov 23 16:29:50 localhost snmptrapd[3381]: 2025-11-23 16:29:50 <UNKNOWN> [UDP: [192.168.45.100]:54720->[192.168.45.50]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1341279) 3:43:32.79#011SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown#011IF-MIB::ifIndex.19 = INTEGER: 19#011IF-MIB::ifDescr.19 = STRING: GigabitEthernet1/0/11#011IF-MIB::ifType.19 = INTEGER: ethernetCsmacd(6)#011SNMPv2-SMI::enterprises.9.2.2.1.1.20.19 = STRING: "down"
Nov 23 16:30:30 localhost snmptrapd[3381]: 2025-11-23 16:30:30 <UNKNOWN> [UDP: [192.168.45.100]:54720->[192.168.45.50]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1345313) 3:44:13.13#011SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkUp#011IF-MIB::ifIndex.19 = INTEGER: 19#011IF-MIB::ifDescr.19 = STRING: GigabitEthernet1/0/11#011IF-MIB::ifType.19 = INTEGER: ethernetCsmacd(6)#011SNMPv2-SMI::enterprises.9.2.2.1.1.20.19 = STRING: "up"

SNMPv3 を使用している場合で、認証アルゴリズム・パスワードや暗号アルゴリズム・パスワードが正しくない場合エラーメッセージが表示されます。この場合は設定内容の見直しを行います。

Cisco ルータ・スイッチの AES-256 に関する注意点

Cisco ルータや Catalyst スイッチでは SNMv3 ユーザの暗号アルゴリズムとして「aes 256」を指定することができます。以下は設定例です。

snmp-server user myv3user AuthPrivGroup v3 auth sha authpass priv aes 256 privpass

この「aes 256」とは、AES 256 ビットの Cipher Feedback (CFB) モードを意味しています。

aes 256」と設定されている Cisco 機器に対して Net-SNMP の snmpget や snmpwalk を実行する場合、 暗号アルゴリズムとしては「AES-256-C」を指定する必要があるため注意してください。「AES-256」指定だとエラーとなり情報を取得することができません。

また、snmptrapd による Trap 受信についても、snmptrapd.conf での createUser 設定における暗号アルゴリズムの指定において「AES-256-C」を設定する必要があります。

参考資料


Tool 関連記事一覧


Amazon で買えるおすすめアイテム

以下は Amazon アフィリエイトリンクです。ネットワーク作業向けにそこそこおすすめなアイテムです。

ブログ始めるなら 【アフィリエイトリンク】

note メンバーシップへの参加もお待ちしています!

note(ノート)
Shadowgarden.org -影の構築者集団-|Shadowgarden.org -影の構築者集団- 陰の構築者集団「Shadowgarden.org」の活動拠点。 ネットワーク・インフラ業界に陰から影響を与えるため活動している。 当組織への問合せは「https://shadowgarden.org/inq...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次