ネットワーク設計・構築における 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」をインストール後、以下のようなコマンドを実行できるようになります。
- snmpget
- 対象機器に対して SNMP GET リクエストを実行します
- 指定した OID の値を取得する
- snmpwalk
- 対象機器に対して SNMP GETNEXT リクエストを実行します
- 指定した OID 配下のすべての OID の情報を取得する
「snmpget」コマンドと「snmpwalk」コマンドは SNMP リクエストの種別が異なるだけで、コマンドの実行構文(オプション)は全く同じです。
SNMPv1/v2c 用の SNMP-GET コマンド構文
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 ユーザを使用して認証を行います。オプションとしてハッシュアルゴリズムの指定、暗号アルゴリズムの指定が可能なため、その分オプションが多くなります。
以下ではパターン別にコマンド構文を記載します。
- 認証無し、暗号化無し
- 認証有り、暗号化無し
- 認証有り、暗号化有り
- 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
#以下略- 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
#以下略- 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 受信を許可するコミュニティ文字列の設定を行います。
- authCommunity log <コミュニティ>
- <コミュニティ>:Trap 送信機器で設定されているコミュニティ文字列を指定
以下はコミュニティとして「shadowgarden」を設定する例です。
authCommunity log shadowgardenSNMPv3 の場合:SNMPv3 ユーザの設定
認証・暗号化の有無によって以下の通りユーザ設定を追記します。
- createUser -e 0x<エンジンID> <ユーザ名>
- authUser log <ユーザ名> noauth
- -e 0x<エンジンID>:Trap 送信機器のエンジンIDを指定
- <ユーザ名>:Trap 送信機器で設定されている SNMPv3 ユーザ名
以下は認証有り・暗号化無しの SNMPv3 ユーザの設定例です。
createUser -e 0x80000009030074E2E707DB80 myv3user
authUser log myv3user noauth- 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- 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 ユーザの設定修正・削除を行うためには以下の手順を行う必要があります。
snmptrapd を停止します。
以下コマンドを実行し「/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「/etc/snmp/snmptrapd.conf」にて、SNMPv3 ユーザ設定の編集または削除を行います。
snmptrapd サービスを起動します。これで「/etc/snmp/snmptrapd.conf」に設定した通りに動作するようになります。
snmptrapd サービスの起動
まず firewalld が起動していると Trap パケットが拒否されるため firewalld を以下コマンドで停止します。
systemctl stop firewalld次に 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」を設定する必要があります。
参考資料
- https://www.net-snmp.org/
- https://www.centos.org/download/
- https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-9500-series-switches/224891-configure-snmpv2c-v3-on-catalyst-9000.html
- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/snmp/configuration/xe-17-x/snmp-xe-17-book/nm-snmp-encrypt-snmp-support.html
Tool 関連記事一覧
Amazon で買えるおすすめアイテム
以下は Amazon アフィリエイトリンクです。ネットワーク作業向けにそこそこおすすめなアイテムです。
ブログ始めるなら 【アフィリエイトリンク】
note メンバーシップへの参加もお待ちしています!








コメント