SNMPをそろそろしっかりやる!

 

-1.まず俺が知ってるSNMP的な感じなことを羅列

※しっかり勉強して理解するとなぜか目が曇るのでしっかり勉強する前にこれまでにSNMP的な体験を最初に備忘録するんご

■v1~v3まであって、ヴァージョンの違いはセキュリティ絡みの変更

■snmpの動作はマネージャからエージェントのMIB情報をpullするポーリングと、エージェントからマネージャにMIB情報をpushするトラップに大別される

■snmpをroot権限で実行して何か設定をやらかしてると、snmpのセキュリティホールをついてroot権限を奪う攻撃手法があるらしい

■そもそも監視とは?

・監視対象

サーバ(windows,Linux,Unix)、メインフレーム、ネットワークアプライアンス(ルータ、スイッチ、FW、LB、UTM)、ストレージ、ハードウェア管理プロセッサ(HPのiLOやIBMのIMMなど)

・監視項目

パフォーマンス、ポート、プロセス、ログ、特定のプログラムからの標準出力やエラー出力など

■そもそもログ監視とは?

ログ監視はSNMPとは別のプロトコルが使われることが多い

たとえばUnixやLinuxではsyslog系プロトコル(syslogd,rsyslogd,syslog-ng)

ベンダーのプロプライエタリなログ管理システムもある(loganizerとか)

そもそもログ管理とは、ログのリアルタイム記録、リモート伝送、ログローテーションによる世代管理とクリーニング(システムによっては非追記型ログの世代管理やクリーニングが必要だったり、windowsのイベントログはUnix系と扱いが異なる)

いうまでもないが、ログファイルは日々増大するので万一ディスク領域を枯渇させてしまっても他システムをダウンさせないように他システムと別ファイルシステムにするのが一般的。

またそもそも枯渇させないようにディスクの容量設計やクリーニング設計が必要

■実際の運用設計の中での「監視システム」の位置づけ

パフォーマンス、ポート、プロセスなどの監視はSNMPを使うシステムやサーバアプリやネットワークアプライアンスが多い

ログ監視はsyslogなどのログ監視専用ソフトを使うシステムが多い

しかし、システム全体の監視を統合する場合には、パフォーマンス監視やログ監視は一元的扱いにした方が下記の場合に利便性が高まる場合がある。

・監視イベント通知の一元化

・オペレータや運用管理者が閲覧する表示画面の整形

・月次報告書などへのレポート書式への整形

※統合管理システムの適切な導入は、複雑なシステム全体の監視を扱ううえで有用であるが、監視対象が基本的にマルチベンダーであり、データの画一的扱いには途中のデータ変換などにともなうフレームワークの導入が要請される場合がある。

また、統合監視システムには下記の制御も必要である

・アラートの重複

・アラートの輻輳

・監視サーバの可用性(HAクラスタリング)

・監視データのバックアップ

・監視データの即応性

監視するために導入したシステムの不具合でエラーを出すのは本末転倒だし

さらに、実運用設計上で重要になることとして、

・監視項目の精査(製品知識とシステムの特性と日々蓄積するナリッジのすべてが重要)

・監視システムの統合にはデータの統一性や整形が必要だが、このために「生データ」を改変しすぎて重要な情報をそぎ落とすのはまずいので、統合監視システムには、フレームワークを導入し、データ整形の規則と、生データの両方を取得し確認する手立てがあることが望ましい

・複雑な監視システムの導入が新たなセキュリティホールを生み出すのも本末転倒だがよくあることらしいので、暗号化、アクセス制御、実行プログラムの権限、オペレータのパスワードポリシーなども重要

・重厚で盛沢山な監視データの取得を万全にして、実サービスのリソースや帯域を逼迫してしまうのも本末転倒

・マルチベンダーになることが避けられない統合監視システムでは、必然的にオーソドックスなプロトコルや定番のしくみ(snmpやsyslogなど)をベースに構築した方がいい

・定型業務を担当する運用オペレータの管理端末に機能を一元化する場合、下記のようなシステムの管理コンソールも統合されていたらさらにシンプルなUIになる

仮想化基盤管理、各種サーバ、ミドルウェア、セキュリティソフト、ジョブ管理システム、ハードウェア管理システム、ネットワークアプライアンス管理、ストレージ管理、etc

つまり、昨今の監視システムを考える上では、SNMPというのは「全体系」の中の要素技術的なとらえ方をするのが妥当だと思う。

 

0.snmp学習のよくわかってないこと

0-1.俺の中でもやもやしてること一覧

■snmpプロトコル

・snmpポーリング

・snmpトラップ

・MIB

・OID

■Linuxでのsnmp

■ciscoでのsnmp

■Juniperでのsnmp

■BigIPでのsnmp

■サーバアプリケーションのアラートをsnmpトラップでpushする

■サーバアプリケーションの監視をマネージャからポーリングする

■log監視をあえてsnmpで行う

■Linux上で動く監視プログラムのいろいろ

・net-snmp

・zabbix

・nagios

・MRTG

・TIS

・千手

■Windowsとsnmp

■ハードウェア管理プロセッサとsnmp

・iLO

・IMM

■ストレージとsnmp

■RDBMSとsnmp

■ジョブ管理システムとsnmp

■HAクラスタウェアとsnmp

■バックアップシステムとsnmp

■ジョブ管理システムとsnmp

・ジョブのアベンド(異常終了)

・ジョブの遅延

■アプリケーションサーバとsnmp

■その他サーバアプリケーション(ミドルウェア)とsnmp

■snmpトラップを自由に飛ばす

監視データが閾値超えたときだけ飛ばす

条件分岐させたコメントをつけて飛ばす

重複を意識して同一事象と独立事象をエージェント側で判断して飛ばす

perlスクリプトを使って自由すぎるsnmpトラップを作って飛ばす

■snmpマネージャ側で受信したトラップを煮るなり焼くなり料理する

受信したトラップを判断してアクションを定義するためにスクリプトに渡す

受信したトラップをプロキシして別のエージェントにフォワードする

受信したトラップを保存する

0-2.まず概要から学ぶ

■snmpの載ってる書籍

俺が過去に読んだ本のうちsnmpのことが断片的に書かれていた本はたぶん5冊くらいあるがどれだったかわすれたwww

俺がこれまでに経験したsnmp的な感じのこと(-1.章)と俺の中で感じてる調べることリスト(0.章)を包括的に網羅し、snmpについての体系的でかつ網羅的な知識を獲得できそうな書籍の候補としては、

・マスタリングTCP/IP SNMP編  オーム社 (2005/9/1) ←ちと古いが一応v3以降に出版

・入門SNMP オライリー (2002/7/1)   ←さらに古いv3が2002~2003なのでやばいかも

・詳解NetSNMP 工学社 (2011/01)  

最後のが何となくピンポイント臭い

目次は

1 基礎編(始める前の確認事項
「NetSNMP」を「ソース・プログラム」からインストールする ほか)
2 応用編(「ソース・プログラム」と「MIBファイル」を変更する
「snmpset」コマンドを実行可能とする ほか)
3 実践編(RRDtoolでグラフ化する
PHPでSNMP関数を処理する)
実習と演習 パトライト(実習 パトライト
演習 「パトライト」の状態を表示し、「点灯」「点滅」「消灯」させる)
付録 コマンド解説(コミュニティ項目を変更する
他のネットワーク上から処理する ほか)

ネットワークプログラミング目線でsnmpプロトコルを意識していじる気満々な内容だけどPHP嫌いいいい。

「詳解NetSNMP」と「入門SNMP」は都立中央図書館で開架のみダギャー

「マスタリングTCP/IP SNMP編」は台東区立中央図書館で借りれるんご

ちなみに、「Tivoliビギナーズ・ガイドブック ITM/Netcool 」と「 Tivoliバックアップ/リカバリー・ガイドブック 」も都内図書館では都立中央図書館で開架のみ可能ダギャー

俺はまず図書館で借りて読んでから買うかどうか決めるので「マスタリング・・・」か

→「マスタリングTCP/IP SNMP編」ゲット(20170624)

■snmpのサイト

・Redhat Net-SNMP の設定

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sect-System_Monitoring_Tools-Net-SNMP-Configuring.html

・Linux エージェントとマネージャを設定(おなじみうすださんのサイト)がわかりやすい

http://www.usupi.org/sysad/232.html

 

 

1.snmpプロトコルとは

 

■SNMPのバージョンは現在1,2(2c),3の3つ

                        プロトコル定義    データ定義言語定義   管理情報定義      セキュリティ運用管理定義

SNMPv1     SNMPv1        SMIv1                   MIB-Ⅰ           コミュニティ

SNMPv2(v2c)  SNMPv2        SMIv2                   MIB-Ⅱ           コミュニティ

SNMPv3     SNMPv3        SMIv2                   MIB-Ⅱ           USM/VACM

 

■SNMPv1の概要

・MIB-ⅠのOID

 [標準的な管理対象オブジェクトのセット]

 .iso.org.dod.internet.mgmt     (.1.3.6.1.2)

 [企業や個人独自の管理対象を定義して使う]

 .iso.org.dod.internet.private   (.1.3.6.1.4)  

・SNMPv1パケット

SNMPv1パケットはUDPヘッダにSNMPメッセージをつけたもの

snmpメッセージは、version、community name、PDU(Protcol Data Unit)のみからなる単純なもの

※community name(コミュニティ名)が平文パスワード

・マネージャからエージェントに発信されるPDUは下記の3つ

GetRequest、GetNextRequest、SetRequest

・エージェントからマネージャに発信されるPDUはTrapのみ

・エージェントからマネージャに応答されるPDUはGetResponseのみ

・Request/response系PDUで利用されるSNMPv1メッセージのフォーマットでは、

PDU Type、request-id、error-status、error-index、variable-bindingsのフォーマットになっており、request-idはマネージャがユニークな番号をつけてほかのrequestとの混同を防ぐ。エージェントはこのrequest-idを同じフィールドに入れてresponsesする。

・SNMPv1のRFC

https://tools.ietf.org/html/rfc1157

https://tools.ietf.org/html/rfc1155

https://tools.ietf.org/html/rfc1212

https://tools.ietf.org/html/rfc1213

https://tools.ietf.org/html/rfc1215

 

■SNMPv2(v2c)の概要

・MIB-ⅡのOID

 [標準的な管理対象オブジェクトのセット]

 .iso.org.dod.internet.mgmt.mib-2     (.1.3.6.1.2.1)

 [企業や個人独自の管理対象を定義して使う]

 .iso.org.dod.internet.private.enterprises   (.1.3.6.1.4.1)  

※ルータ、スイッチ、FW、LB、サーバ、PCなどさまざまなノードの基本的な管理対象オブジェクトは上記の.mib-2 サブツリーに定義されている

.mib-2サブツリーの下のサブツリーの例は下記の通り

system(1)、interfaces(2)、at(3)、ip(4)、icmp(5)、tcp(6)、udp(7)、ege(8)、transmission(10)、snmp(11)

上記のsystem(1)でシステム名、システム管理者のメールアドレスが定義される

上記のinterfaces(2)でネットワーク機器のインタフェースに関する管理対象オブジェクトが定義される。

※上記以外で特定の製品にしか存在していない管理対象オブジェクトは、上記の.enterprises サブツリーにベンダや個人が定義する

.enterprises サブツリーの下のサブツリーの例は下記の通り

IBM(2)、Cisco(9)、Hwelett-Packard Company(11)、Sun(42)、Microsoft(311)

これらのベンダ固有の管理対象オブジェクトをまとめたものは、プライベートMIBあるいはエンタープライズMIBと呼ばれる。

※SNMPに対応した製品は、一般にMIB-ⅡとプライベートMIBを組み合わせて利用する。

・SNMPv2(2c)パケット

多くの部分でSNMPv1と同じ。SNMPv2で新しく追加されたPDU Typeは下記の通り。

GetBulkRequest-PDU : テーブルデータを効率的かつ迅速に扱える。

InformRequest-PDU : 状態の変化やトラブルなどのイベントが発生した場合、そのイベントを通知するために利用される。 

・SNMPv2(2c)のRFC

https://tools.ietf.org/html/rfc1156

https://tools.ietf.org/html/rfc2578

https://tools.ietf.org/html/rfc2579

https://tools.ietf.org/html/rfc2580

https://tools.ietf.org/html/rfc3416

https://tools.ietf.org/html/rfc3417

https://tools.ietf.org/html/rfc3418

 

■SNMPv3の概要

・SNMPv3からコミュニティ名による平文パスワード認証でなく、通信全体の暗号化する方式に変わった

・マネージャ/エージェントというくくりはなくななった。SNMPエンジン、SNMPアプリケーションというくくりになり、マネージャ/エージェントはどちらもSNMPエンティティと呼ばれるようになった。旧バージョンのマネージャ/エージェントの機能はSNMPエンティティに複数の機能に応じたSNMPアプリケーションの組み合わせを含めることによって構成される

・SNMPv3のRFC

https://tools.ietf.org/html/rfc3411

https://tools.ietf.org/html/rfc3412

https://tools.ietf.org/html/rfc3413

https://tools.ietf.org/html/rfc3414

https://tools.ietf.org/html/rfc3415

■v1,v2,v3の共存と移行

https://tools.ietf.org/html/rfc3584


 

2.Linuxでのsnmp

3-1.SNMPポーリングとSNMPトラップ

(引用:http://www.usupi.org/sysad/232.html

■リスニングポート

・UDP161でマネージャからのポーリングをエージェントがリスニング

・UDP162でエージェントからのトラップをマネージャがリスニング

■パッケージ

・エージェント:snmpd(debian系)、 net-snmp(redhat系)

・マネージャ:snmp(debian系)、 net-snmp-utils(redhat系) 

■実行ファイル

・エージェント

ポーリングではエージェントがサーバ:コマンド名、実行ユーザ

トラップではエージェントがクライアント:コマンド名、実行ユーザ

・マネージャ

ポーリングではマネージャがクライアント:コマンド名、実行ユーザ

トラップではマネージャがサーバ:コマンド名、実行ユーザ

■コマンド

・エージェントからマネージャへのトラップ関連のコマンド

snmptrap

・マネージャからエージェントへのポーリング関連のコマンド

snmpget

snmptranslate

■snmpポーリングの操作

・方針

マネージャからエージェントにリクエストする際に指定するもの

コミュニティ名、知りたい情報のOID

・エージェントのsnmpd.conf

com2sec notConfigUser  default       public
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access  notConfigGroup ""      any       noauth    exact  systemview none none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes

※注釈行と空白行は省略

・エージェント側のsnmpdを起動

# service snmpd start

# netstat -napu |grep snmpd

udp        0      0 0.0.0.0:161                 0.0.0.0:*                               2441/snmpd

・マネージャ側では何のデーモンも起動する必要なし

・マネージャ側で下記コマンドを実行

# snmpget -v 1 -c public 192.168.2.28 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6_2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64

※192.168.2.28はエージェントのIPアドレス

system.sysDescr.0エージェントの概要を表すOID

ちなみに、SNMPv2でも出力は同じ

# snmpget -v 2c -c public 192.168.2.28 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6_2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64

SNMPv3ではコミュニティ名ではエラーになる

# snmpget -v 3 -c public 192.168.2.28 system.sysDescr.0
No log handling enabled - turning on stderr logging
snmpget: No securityName specified (Sub-id not found: (top) -> system)

# snmpwalk -v 1 -c public 192.168.2.28 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6_2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64

# snmpwalk -v 2c -c public 192.168.2.28 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6_2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64

※すべてのエージェントが対応しているのはSNMPv2でMIB-IIのOIDを指定すればいいらしい。

※snmpget などのコマンドは、上記のMIB-IIを起点としてOIDを指定できる。 つまり、最初の

「.iso.org.dod.internet.mgmt.mib-2」または、「.1.3.6.1.2.1」を省略できる。

・MIBの概要をツリー形式で出力するコマンド

# snmptranslate -Tp

 ・・・中略・・・

・個々の OID の詳しい説明の出力

# snmptranslate -Td .1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr
sysDescr OBJECT-TYPE
  -- FROM       SNMPv2-MIB, RFC1213-MIB
  -- TEXTUAL CONVENTION DisplayString
  SYNTAX        OCTET STRING (0..255)
  DISPLAY-HINT  "255a"
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "A textual description of the entity.  This value should
            include the full name and version identification of
            the system's hardware type, software operating-system,
            and networking software."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 1 }

・個々の OID の詳しい説明を下記のサイトでも調べられる

SNMP オブジェクトナビゲータ
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=ja
OID description for 1.3.6.1.2.1 - SNMP MIB-2
http://www.alvestrand.no/objectid/1.3.6.1.2.1.html

おまけ

# snmpwalk -v 1 -c public 192.168.2.28 .1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos6_2 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (186061) 0:31:00.61
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos6_2
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (5) 0:00:00.05

# snmpwalk -v 2c -c public 192.168.2.28 .1.3.6.1.2.1.25.1.1
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1597214) 4:26:12.14
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

★エージェントに下記の設定を加えると、

.1.3.6.1.2.1.2と  .1.3.6.1.2.1.4のOIDも見せれるようになる

※.1.3.6.1.2.1.2はmib-2.interfaces、.1.3.6.1.2.1.4はmib-2.ip

※ 「systemview」を「systemonly」にすると見れなくなる

# cat snmpd.conf
com2sec notConfigUser  default       public
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
view    systemview    included   .1.3.6.1.2.1.2
view    systemview    included   .1.3.6.1.2.1.4

access  notConfigGroup ""      any       noauth    exact  systemview none none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes

エージェント側で上記の設定をして、snmpdをリスタート後、マネージャ側で下記を実行すると、

# snmpwalk -v 2c -c public 192.168.2.28 .1.3.6.1.2.1.2
IF-MIB::ifNumber.0 = INTEGER: 2
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifMtu.1 = INTEGER: 65536
IF-MIB::ifMtu.2 = INTEGER: 1500
IF-MIB::ifSpeed.1 = Gauge32: 10000000
IF-MIB::ifSpeed.2 = Gauge32: 1000000000
IF-MIB::ifPhysAddress.1 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:c:29:94:b2:ef
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)

 ・・・省略・・・

# snmpwalk -v 2c -c public 192.168.2.28 .1.3.6.1.2.1.4

IP-MIB::ipForwarding.0 = INTEGER: notForwarding(2)
IP-MIB::ipDefaultTTL.0 = INTEGER: 64
IP-MIB::ipInReceives.0 = Counter32: 3554
IP-MIB::ipInHdrErrors.0 = Counter32: 0
IP-MIB::ipInAddrErrors.0 = Counter32: 0
IP-MIB::ipForwDatagrams.0 = Counter32: 0
IP-MIB::ipInUnknownProtos.0 = Counter32: 0
IP-MIB::ipInDiscards.0 = Counter32: 0
IP-MIB::ipInDelivers.0 = Counter32: 3554
IP-MIB::ipOutRequests.0 = Counter32: 2190
IP-MIB::ipOutDiscards.0 = Counter32: 0
IP-MIB::ipOutNoRoutes.0 = Counter32: 0
IP-MIB::ipReasmTimeout.0 = INTEGER: 30 seconds
IP-MIB::ipReasmReqds.0 = Counter32: 0
IP-MIB::ipReasmOKs.0 = Counter32: 0
IP-MIB::ipReasmFails.0 = Counter32: 0
IP-MIB::ipFragOKs.0 = Counter32: 0
IP-MIB::ipFragFails.0 = Counter32: 0
IP-MIB::ipFragCreates.0 = Counter32: 0
IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
IP-MIB::ipAdEntAddr.192.168.2.28 = IpAddress: 192.168.2.28

・・・省略・・・

 

■snmptrapの操作

・方針

エージェントからマネージャにトラップを飛ばす際に指定するもの

コミュニティ名、知りたい情報のOID

・マネージャのsnmptrapd.conf

defaultでは何も書かれてない。

この状態でマネージャのsnmptrapdを起動して、エージェントからトラップを飛ばしても

マネージャの/var/log/messagesには

Jun 25 00:12:51 centos6 snmptrapd[2251]: No access configuration - dropping trap.

のように書きこまれる。(ドロップされる)

・マネージャの設定

snmptrapd.confを下記のように設定

# cat /etc/snmp/snmptrapd.conf

authCommunity log,execute,net public

そのあと、snmptrapd.confを再起動

# service snmptrapd restart

エージェントからsnmpトラップを飛ばす。

# snmptrap -v 2c -c public 192.168.2.26 '' .1.3.6.1.2.1.2

# snmptrap -v 2c -c public 192.168.2.26 '' .1.3.6.1.2.1.4

マネージャの/var/log/messagesに下記の2行が追記された。

Jun 25 00:33:27 centos6 snmptrapd[2309]: 2017-06-25 00:33:23 <UNKNOWN> [UDP: [192.168.2.28]:51411->[192.168.2.26]]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (218654) 0:36:26.54#011SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::interfaces
Jun 25 00:33:37 centos6 snmptrapd[2309]: 2017-06-25 00:33:37 <UNKNOWN> [UDP: [192.168.2.28]:38583->[192.168.2.26]]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (219976) 0:36:39.76#011SNMPv2-MIB::snmpTrapOID.0 = OID: IP-MIB::ip

 

【課題】

・/var/log/messages/以外のsnmpログは?

・snmpポーリングとsnmpトラップのデバッグをする方法

・snmpパケットをキャプチャして見てみる

・MIBの保存場所

・MIBの確認方法

・エージェントからトラップを受信してアクションする設定

アクションはコマンド実行、メール送信、標準出力、ログ出力

・linuxのプロセス死活をトラップしてマネージャで受信する設定

・SNMPv3