Windows/Linux

Linuxにおけるsnmpwalkコマンドのオプションと使い方について

この記事は投稿日から1年以上経過しています。

当記事では、Linuxにおけるsnmpwalkコマンドのオプションと使用例について記載します。

snmpwalkとは

snmpwalkはSNMPマネージャ(管理する側)用のコマンドで、指定したOID配下に含まれるすべてのOIDとMIBのサブツリー全体情報を取得できます。

バージョンには1、2c、3のいずれかを指定できますが、指定しない場合は3が標準になっています。

  • MIB(Management Information Base)
    SNMPエージェント(管理される側)が提供する情報をカテゴリ分けする仕組み
  • OID(Object IDentifier)
    各情報(概念や物)に対して割り当てられる重複しない識別子で、今回の場合はMIBツリー内のオブジェクト(MIB変数)に付けられた番号

OIDは各SNMPコマンドでの情報取得に必要であるため、snmpwalk(またはget)が利用されます。

似ているsnmpgetは指定したOIDと該当する値を単体で取得するため少し違いがあります。

snmpwalkを使うにはnet-snmpとnet-snmp-utilsをインストールしている必要があります。

インストール方法に関しては、こちらをご覧ください。
Linux Server環境(CentOS,UbuntuServer)にSNMP(v1, v2c) 設定を追加する

snmpwalkオプション

snmpwalk -hで表示されるオプションをまとめています。

オプション

-h、 --help ヘルプメッセージを表示
-H ディレクティブの構成を表示
-v  1|2c|3 使用するSNMPバージョンを指定
-V、 --version バージョン情報を表示

バージョン1と2c固有

-c  COMMUNITY コミュニティ名の設定

バージョン3固有

-a  PROTOCOL 認証プロトコルの設定
-A  PASSPHRASE 認証プロトコルのパスフレーズの設定
-e  ENGINE-ID セキュリティエンジンIDの設定
-E  ENGINE-ID コンテキストエンジンIDの設定
-l  LEVEL セキュリティレベルの設定(authPriv:認証も暗号化もする、authNoPriv:認証するが暗号化しない、noAuthNoPriv:認証も暗号化もしない)
-n  CONTEXT コンテキスト名の設定
-u  USER-NAME セキュリティ名の設定
-x  PROTOCOL プライバシープロトコルの設定
-X  PASSPHRASE プライバシープロトコルのパスフレーズを設定
-Z  BOOTS,TIME 宛先エンジン(エージェントを識別するためのID)の 再起動回数/時間の設定

通信オプション

-r  RETRIES 再試行回数の設定
-t  TIMEOUT リクエストのタイムアウトを設定

デバッグオプション

-d 出力に入力/出力パケットの内容を入れる
-D[TOKEN[,...]] 指定されたトークンのデバッグ出力をオンにする

一般オプション

-m MIB[:...] 指定されたMIBのリストをロードする
-M DIR[:...] 指定されたディレクトリのリストでMIBを探す

-P  MIBOPTS         MIB解析を制御するデフォルトの切り替え

u MIBシンボルでの下線の使用を許可
c コメントを終了するための「--」の使用を禁止する
d MIBオブジェクトの記述を保存する
e MIBシンボルが競合するときのエラーを無効にする
w MIBシンボルが競合するときの警告を有効にする
W MIBシンボルが競合するときの詳細な警告を有効にする
R 最新モジュールのMIBシンボルを置き換える

-O  OUTOPTS         出力表示を制御するデフォルトの切り替え

0 16進数1桁の文字に対し先頭の0を表示
a すべての文字列をASCII形式で出力
b OIDインデックスを分割しない
e 列挙型を数値で出力する
E 文字列インデックス(要素番号)で引用符を回避する
f 全OIDを表示
n OIDを数値で出力(使わないときはMIB表記になる)
q クイック出力(簡潔に結果を表示)

他の結果に比べ 「=」 以降の文字が削減されて出力されています。
Q 等号によるクイック出力
s OIDの最後の要素のみを表示
S MIBモジュールIDと最後の要素を出力
t 整数として解析されていないtimeticks(正の整数で、1/100秒単位で計るタイムスタンプ)を出力
T 人が読めるテキストを16進数文字列とともに出力
u UCDスタイルのプレフィックスを使用しOIDを出力
U 単位を出力しない
v 値のみを表示 (値=OIDではない)
x すべての文字列を16進数で出力
X 拡張インデックス形式

-I  INOPTS               入力解析を制御するデフォルトの切り替え

b MIBノードを見つけるため最適な正規表現マッチングを行う
h DISPLAY-HINTを無視する
r 値の範囲/型の正当性をチェックしない
R OIDラベルへランダムアクセスを行う
u UCDスタイルの時、最上位OIDには「.」が必要
s SUFFIX 解析する前にすべてのテキストOIDにSUFFIXを追加
S PREFIX 解析する前にすべてのテキストOIDの先頭にPREFIXを追加

-L  LOGOPTS        ロギングを制御するデフォルトの切り替え

e 標準エラーにログを記録
o 標準出力にログを記録
n ロギングを行わない
f file 指定したファイルにログを記録
s facility 指定されたファシリティを経由しsyslogへ記録

-C APPOPTS             アプリケーション固有の動作を設定

P 見つかった変数の数を出力する
i 指定したOIDを検索範囲に含める
I 結果が出力されない場合でも、指定したOIDを含めない
c 出力されたOIDが増加していることを確認しない
t snmpwalkコマンドが完了するまでの時間を表示
T 各リクエストが完了するまでの時間を表示
E 指定したOIDでsnmpwalkを終了する

よく使うオプションは、バージョンを指定する-v 1|2c|3 とコミュニティ名を設定する-cの2つだと思いますので、まずはこの2つを覚えると良いかもしれません。

OIDとMIBサブツリー

snmpwalkでは取得したい情報のサブツリーかOIDが必要なため(指定しなくても取得できますが、すごい行数になります)、ここでまとめておきたいと思います。

サブツリー名 OID 説明
system .1.3.6.1.2.1.1 システム(SNMPエージェント)に関する情報
interfaces .1.3.6.1.2.1.2 インターフェースに関する情報
at .1.3.6.1.2.1.3 IPアドレスと物理アドレスの変換テーブル
ip .1.3.6.1.2.1.4 IPに関する情報
icmp .1.3.6.1.2.1.5 ICMPに関する情報
tcp .1.3.6.1.2.1.6 TCPに関する情報
udp .1.3.6.1.2.1.7 UDPに関する情報
egp .1.3.6.1.2.1.8 EGPに関する情報
transmission .1.3.6.1.2.1.9 トランスミッタに関する情報 (snmpdでは未サポート)
snmp .1.3.6.1.2.1.11 SNMPに関する情報

snmpwalk使用例

上記のオプションを用いた使用例をバージョンごとに記載します。

SNMP v1

# snmpwalk -v1 -c コミュニティ名 ホスト名:ポート番号 OID

SNMP v2c

# snmpwalk -v2c -c コミュニティ名 ホスト名:ポート番号 OID
  • -c コミュニティ名 → SNMPのコミュニティ名
  • ホスト名:ポート番号 → 取得したいデータを持つエージェントの機器のホスト名かIPアドレスとポート番号(標準では161番ポートを使用)
  • OID → 取得したいOID

SNMP v3 (セキュリティレベルがauthPrivの場合)

# snmpwalk -v3 -l セキュリティレベル -a 認証方式 -A 認証パスワード -x暗号化プロトコル -X 暗号化パスワード -u ユーザー名 ホスト名:ポート番号 OID
  • -l セキュリティレベル → 以下3つのいずれかを指定
    authPriv、authNoPriv、noAuthNoPriv
  • -a 認証方式 → MD5またはSHAを指定
  • -A 認証パスワード → 認証パスワード(大文字、小文字が区別される長さ8~12の英数字)
  • -x 暗号化プロトコル → DESまたはAESを指定
  • -X 暗号化パスワード → 省略すると認証パスワードと同じになる
  • -u ユーザ名 → ユーザ名を指定
  • ホスト名:ポート番号とOIDは他バージョンと同じ

暗号化プロトコルと暗号化パスワード、ユーザ名はセキュリティレベルがauthPrivである場合に指定します。

実際の出力画面も見てみたいと思います。

バージョン:2c
コミュニティ名:SecuAvail
IPアドレス:172.23.61.6 (検証用)
OID:.1.3.6.1.2.1.1 (snmpwalk -v2c -c SecuAvail 172.23.61.6 .1.3.6.1.2.1.1 の場合)
MIBサブツリー名:system ( snmpwalk -v2c -c SecuAvail 172.23.61.6 system の場合)

上記の様にOIDでもサブツリー名でも同じ内容が出力されることを確認できました。

まとめ

ネットワークを監視する際はSNMPがよく使われるため、紹介させていただいたsnmpwalkを使う機会も多いと思います。

そんなときに、この記事が少しでもお役に立てれば幸いです。

ご覧いただきありがとうございました。

記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。

当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。

[Linux/Windows]IPアドレスとルーティング確認方法前のページ

DIGを使用したDNSサーバの確認方法について次のページ

ピックアップ記事

  1. IoT機器「Raspberry pi」とLogStare Collectorで温…
  2. Zabbixヒストリデータのレポート生成について
  3. ログフォワーダー「okurun.jar」について
  4. 自社製品をAMIにしてAWSマーケットプレイスへ出品

関連記事

  1. Windows/Linux

    ARPって何だ・・?新入社員が調べてみた(Linux版)

    今回は新入社員研修の一環として、ナレッジステアを書こうという事で作成し…

  2. Windows/Linux

    Windows Server 2016 (2019,2012) /Windows 10,11 にて、…

    当記事では、WMI における各種監査ログを出力するまでの設定方法を記載…

  3. Windows/Linux

    CloudWatch監視に必要な権限について

    当記事では、CloudWatch監視に必要な権限について記載します。…

  4. Windows/Linux

    テキストマッチングを利用したAudit.logの監視について

    当記事では、LogStare Collector(以下、LSCと記載)…

  5. SysmonForLinuxをUbuntuとAlmaLinuxに入れてログ取得

    Windows/Linux

    SysmonForLinuxをUbuntuとAlmaLinuxに入れてログ取ってみた

    今回はSysmon(プロセス作成、ネットワーク作成、ファイル操作等のW…

  6. Windows/Linux

    Linux/Windows pingコマンドの使い方とオプションについて

    当記事では、Linux/Windowsのpingコマンドの使い方とオプ…

月額200円でM356の監査ログの運用レベルUP LogStare M365

AWSのログ分析・モニタリングに 次世代のマネージド・セキュリティ・プラットフォーム LogStare

  1. ログ分析・監視テクニック

    nProbeであらゆる通信をログに記録し可視化する
  2. NW機器

    SonicWall UTMにSyslog送信設定を追加する方法について
  3. NW機器

    PaloAltoのIPsec IKEv1 Phase1におけるトラブルシューティ…
  4. 実践記事

    DNSキャッシュポイズニングやってみた
  5. NW機器

    Nutanix Prism ElementにおけるSNMP監視/REST API…
PAGE TOP