当記事では、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 出力表示を制御するデフォルトの切り替え
-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を使う機会も多いと思います。
そんなときに、この記事が少しでもお役に立てれば幸いです。
ご覧いただきありがとうございました。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。