SNMPの機能

SNMP(Simple Network Management Protocol)は、ネットワーク管理システム(NMS:Network Management System)から、多数のルータ・スイッチ等の状態を、集中的に監視・管理するためのプロトコルです。

MIBとOID

SNMPで管理・監視できる情報(CPU使用率、インターフェイスのトラフィック量、機器名など)は、MIB(Management Information Base)と呼ばれる階層構造のデータベースにあらかじめ定義されています。MIB内の個々の情報項目は、1.3.6.1.2.1.1.1.0のようなドット区切りの一意な番号であるOID(Object Identifier)で識別されます。

SNMPの主な操作

  • GET:管理システム(マネージャ)側から、機器(エージェント)側へ、特定のOIDの値を問い合わせる操作です。
  • SET:管理システム側から、機器側で書き込み可能なMIBオブジェクトの値を変更する操作です。
  • TRAP:機器側(エージェント)から、管理システム側へ、ポーリングを待たずに自発的にイベント発生を通知する操作です。インターフェイスのダウンなど、即座に把握したい重大な事象の通知に使われます。

SNMPのバージョンとセキュリティ

バージョン認証方式暗号化
SNMPv1コミュニティ文字列(平文)無し
SNMPv2cコミュニティ文字列(平文)無し
SNMPv3ユーザーベース、HMAC-MD5/SHA等(設定により認証なしも選択可能)authPrivであり(AES/DES等)

SNMPv1・v2cで使われるコミュニティ文字列は、事実上のパスワードとして機能しますが、平文でやり取りされるため、盗聴による漏えいのリスクがあります。SNMPv3は、ユーザー単位の認証と、通信内容の暗号化に対応しており、より高いセキュリティが必要な環境で推奨されます。SNMPv3では、認証・暗号化を行わないnoAuthNoPriv、認証のみを行うauthNoPriv、認証と暗号化を行うauthPrivを選択できます。

基本的な設定

Router(config)# snmp-server community MyReadOnly RO
Router(config)# snmp-server host 192.168.1.100 version 2c MyReadOnly
Router(config)# snmp-server enable traps

RO(Read Only)を指定したコミュニティ文字列では、MIBオブジェクトの読み取り操作は許可されますが、SET操作(設定変更)はできません。書き込みも許可する場合はRW(Read Write)を指定しますが、セキュリティ上のリスクが高まるため、慎重な運用が求められます。

設定の確認

設定した内容が実際に反映されているかは、show snmpコマンドで確認できます。

Router# show snmp

このコマンドは、SNMPパケットの送受信件数、SNMPエージェントの基本パラメータ、通知の送信先などを表示します。コミュニティ文字列の設定は、show snmp communityコマンドで確認します。SNMP統計および通知の送信先設定を確認する、基本的な確認コマンドです。

syslogの機能

syslogは、ネットワーク機器で発生したイベント(インターフェイスの状態変化、設定変更、エラー等)を記録し、必要に応じて外部のsyslogサーバーへ転送する仕組みです。

syslogメッセージの構成

Cisco IOSのsyslogメッセージは、おおむね次のような形式で出力されます。

*Sep  8 10:40:10.326: %LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to down
  • タイムスタンプ:メッセージが発生した日時です。
  • ファシリティ:メッセージを生成した機能・モジュール(例:LINK=物理リンク関連)を示します。
  • 重大度レベル:0〜7の数値で、メッセージの深刻さを表します(後述)。
  • ニーモニック:メッセージの種別を表す短い識別子(例:UPDOWN)です。
  • メッセージ本文:具体的な内容の説明です。

重大度レベル(severity level)

syslogの重大度レベルは、0が最も深刻、7が最も軽微という8段階で定義されています。

レベル名称意味
0Emergency(緊急)システムが使用不能
1Alert(警戒)直ちに対処が必要
2Critical(重大)重大な状態
3Error(エラー)エラー状態
4Warning(警告)警告状態
5Notice(通知)正常だが注目すべき状態
6Informational(情報)参考情報
7Debugging(デバッグ)デバッグ用の詳細情報

先ほどの出力例の%LINK-3-UPDOWNにある「3」が、この重大度レベル(Error)に該当します。

ログの出力先と重大度の設定

Cisco IOSでは、コンソール・端末(Telnet/SSH)セッション・内部バッファ・外部syslogサーバーなど、複数の出力先ごとに、記録する重大度レベルのしきい値を個別に設定できます。

Router(config)# logging host 192.168.1.200
Router(config)# logging trap informational
Router(config)# logging buffered warning

logging trap informationalは、外部syslogサーバーへ転送するメッセージを、レベル6(Informational)以上の深刻さ(つまりレベル0〜6)のメッセージに限定する設定です。数値が指定したレベル以下(=より深刻または同等)のメッセージが対象となり、指定したレベルより数値が大きい(=より軽微な)メッセージは転送されません。

設定の確認

ロギングの設定が実際に反映されているかは、show loggingコマンドで確認できます。

Router# show logging

このコマンドは、現在のロギング設定(どの出力先が有効になっているか、出力先ごとの重大度のしきい値等)に加えて、内部バッファへのロギングが有効な場合は、内部バッファに蓄積されているログメッセージの内容も併せて表示します。syslogの設定が意図どおりに反映されているかを確認する際の、標準的な確認方法です。