前回は VMware ESXi の SNMP のセットアップを行いました。今回は家庭内の Cisco Catalyst 2960G に SNMP の設定を行ってみます。まずは SSH で CLI アクセスを得ます。スイッチポートの設定と TACACS の設定しかしていないので、SNMP は動いていません。
Enabling SNMP v2c in Cisco switch
まず SNMP V2c の設定を加えます。基本的な設定は1行で行えるので、その時に使用するアクセスリストを作っておきます。IPv4 用に access-list 52 と IPv6 用に名前付きアクセスリストを作成します。
snmp-server コマンドでコミュニティをセットし、SNMP アクセスコントロールの IPv4 および IPv6 のアクセスリストを指定します。加えて、ロケーションとコンタクト情報を追加しておきます。
以上で SNMP V2c の設定は完了です。snmpwalk でアクセスできるか試してみます。
Enabling SNMP v3 in Cisco switch
SNMP V2c は OK のようなので、続いて SNMP V3 のユーザを作成します。まずグループをいつものように JF3VQB で作成します。オプションとして v3 と priv が指定されています。v3 は SNMP V3 を意味し、priv は認証と暗号化が必要ということを意味します。そして SNMP V3 ユーザ pokemon をグループ JF3VQB に作成します。認証のハッシュ関数として md5 と sha が使えるようです。
続けて、暗号化のハッシュ関数を指定します。ここでは des、3des そして aes が使用できるのですが、aes を指定した時だけビット長を指定することができます。この aes のビット長なのですが、SNMP V3 の RFC に記載されているのは aes128 のみということで、Cisco が aes192 や aes256 をサポートしているのは所謂デファクトと呼ばれているようです。このことに関してはこのページの一番下でもう少し突っ込んでみます。とりあえず RFC に従って、aes128 を使用しておきます。
続いて入力するのは暗号化のためのパスワードと続いてアクセスコントロールのアクセスリストを指定します。
これで SNMP V3 も動くはずです。試してみます。
SNMP V2c および V3 の準備ができたので変更を保存しておきます。
当然他のスイッチも同様の設定をしておきます。
SNMP v3 consideration in Cisco switch
以上で RFC に準拠した SNMP V2 や V3 は動くはずです。ここで少し考えます。FreeBSD の Cacti や Zabbix の SNMP でネットワーク越しにモニターしようとしています。少し前にも書いたのですが、FreeBSD で Cacti や Zabbix をコンパイルすると、もれなく net-snmp がインストールされます。つまり、net-snmp の SNMP をエンジンとしてデバイスにアクセスすることになると思われます。この net-snmp ですが、実は aes192 や aes256 がサポートされていません。ちょっと調べてみたのですが、Windows や Linux のパッケージではこれらがサポートされた形でバイナリパッケージが提供されます。ですので、Cisco の SNMP V3 の aes192 や aes256 の暗号化パスワードを使用したユーザへ問い合わせした時に Linux の snmpwalk を使用して行うと aes192 や aes256 の問い合わせは問題なく使用できます。逆に FreeBSD の snmpwalk で問い合わせを行うとエラーになってしまいます。これが問題なのかどうかを考えると、RFC に準拠していない aes192 や aes256 が使える Cisco のインプリメントが悪いというのが杓子定規な結論ということができます。一方でデファクトになってしまっている Cisco デバイスから SNMP でデータを読み出すことができないほうが問題であるということもできます。Windows や Linux では後者の考え方に立ってパッケージを作っているのであろうと思われますし、当然 FreeBSD では前者の立場でパッケージやポーツを作っているのだと思います。ただし、今回 FreeBSD の Cacti や Zabbix でも aes192 や aes256 のパスワードを使っているデバイスをモニタリングできるようにするために、net-snmp のポーツに細工をしてコンパイルしなおします。そうすると、aes192 や aes256 のパスワードが使用できると思います。[ まだ Cacti や Zabbix を動かしていないので確証は何にもありません 🙂 ] net-snmp のポーツの Makefile に1行追加して再コンパイルするだけです。このオプションを追加するポーツのオプションは無いようですので、直接 Makefile を触る必要があるようです。ちょっと古いですが net-snmp のコメントが書かれているページがありましたのでご参考まで。もしかしたらもっと新しいコメントがあるかもしれませんが見つけられませんでした。
まず、通常の net-snmp 付属の snmpwalk で aes256 ユーザを作った 2960G にアクセスしてみます。
aes では接続できず、Linux で使用できた aes-256-c のオプションは無いと怒られます。そして、make を実行したのち、再インストールします。こんな感じです。
そのうえで、同じ snmpwalk コマンドを実行してみます。単に aes を指定するとレスポンスはありませんが、Linux で使用できた aes-256-c オプションが使用でき、問い合わせに答えてくれるようになりました。
あくまで私の quick hack で、動くようだということだけで、結果に関して誰も責任を取ってくれませんので、悪しからず。今回の実験で使用する Cacti と Zabbix で使用する net-snmp は aes192 と aes256 が使えるようにした net-snmp を使用してみます。3台のスイッチのうち myhome01 と myhome02 は aes128 のユーザ pokemon を作り、myhome03 のユーザ pokemon は aes256 のパスワードを使いました。
次回は Cacti で SNMP V2c を使ってモニタリングできるように、そして、Zabbix では SNMP V3 を使用したモニタリングができるようにしてみたいと思います。そして、間違いがあれば後のページで修正してゆこうと思います。
以下広告
コメント