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 trapsRO(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段階で定義されています。
| レベル | 名称 | 意味 |
|---|---|---|
| 0 | Emergency(緊急) | システムが使用不能 |
| 1 | Alert(警戒) | 直ちに対処が必要 |
| 2 | Critical(重大) | 重大な状態 |
| 3 | Error(エラー) | エラー状態 |
| 4 | Warning(警告) | 警告状態 |
| 5 | Notice(通知) | 正常だが注目すべき状態 |
| 6 | Informational(情報) | 参考情報 |
| 7 | Debugging(デバッグ) | デバッグ用の詳細情報 |
先ほどの出力例の%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 warninglogging trap informationalは、外部syslogサーバーへ転送するメッセージを、レベル6(Informational)以上の深刻さ(つまりレベル0〜6)のメッセージに限定する設定です。数値が指定したレベル以下(=より深刻または同等)のメッセージが対象となり、指定したレベルより数値が大きい(=より軽微な)メッセージは転送されません。
設定の確認
ロギングの設定が実際に反映されているかは、show loggingコマンドで確認できます。
Router# show loggingこのコマンドは、現在のロギング設定(どの出力先が有効になっているか、出力先ごとの重大度のしきい値等)に加えて、内部バッファへのロギングが有効な場合は、内部バッファに蓄積されているログメッセージの内容も併せて表示します。syslogの設定が意図どおりに反映されているかを確認する際の、標準的な確認方法です。