FreeBSD6インストールとわたくし(4)

実はもう凡そ移行済みでFreeBSD6での実運用は始まっているものの、net-snmp + mrtgでハマるの巻。

FreeBSD4のときのnet-snmpは5.2で、snmpdの実行ユーザ/グループはsnmpにできたけどsnmptrapdはrootでしか動かなかった(オプションが無かった)。今回はapcupsdを入れたときにdependでnet-snmp 5.4が入ったのだが、snmptrapdにも-uと-gのオプションができていたので、rc.confにsnmptrapd_flagsで指定。ちゃんとユーザsnmpで立ち上がった*1
設定ファイルは、以前なぜかサンプルと同じ/usr/local/share/snmp/に置いていたけど、これも気持ち悪いので/usr/local/etc/snmp/snmpd.confとしました。
んで、mrtgもportinstallしてmrtg.confを写して起動してみるも、温度やUPSのグラフは書かれるもののsnmpdを使うネットワークやCPU、メモリ関係が描画されず。
/var/log/messagesには

snmptrapd[xxxxx]: Warning: no access control information configured. This receiver will *NOT* accept any incoming notifications.

とでてた。ググったものの直接ズバリの情報に行き当たらず数時間悩みましたが、結局、以前は作ってなかった(作った記憶の無い)snmptrapd.confが今回は必要らしい。IT mediaの記事を参考にsnmpd.confと同じところに作成したところ、このwarningは出なくなりました。うーん、portsだけじゃなくてオリジナルにもsample入ってないみたいだけど、warningだすなら入れといて欲しいなぁ。
しかしこれは単なるwarningでエラーではないので、グラフ描画ができない原因じゃ無い筈。次にsnmpwalk -v 2c -c xxxx 192.168.xxx.xxxしてみると、途中まで表示されるけど、途中でTimeoutすると共にsnmpdが落ちる。/var/log/snmpd.logをみるとライブラリ関数kvm_openfiles()で/dev/memを読みに行くときにPermission deniedしているみたいなので、どうもsnmpdの実行ユーザが怪しくて、ためしに rc.confのsnmpd_flagsから-u snmp -g snmpを外して(root権限で実行して)みると、snmpwalkが全部表示される。なんで以前と違うんだろう? しかもsnmpdとsnmptrapdの実行権限を逆にしないといけないなんて思わなかった。。。
ついでにsnmpd.logにエラーが出るのでサンプルからコピーしたsnmpd.confの

proc mountd
proc ntalkd 4
proc sendmail 10 1
exec echotest /bin/echo hello world

コメントアウト。ここまでで3連休中のほぼ1日分を使ってしまった。。。

ということで今回の変更したところのまとめ。

  • snmpdはrootで実行するように変更(セキュリティ上問題?)
  • snmptrapdは実行ユーザを指定できるようになったのでsnmpで実行
  • snmptrapd.confが必要なので作ること
  • snmpd.confの余計な行はコメントアウト

ということで、なんか細かい点をいろいろ見落としてそうだけど(kernelのsecurelevelとか)、うーん。
とりあえず、グラフはまた描けるようになりました。これでFreeBSD4のHDDはつぶせる目処が立ったので容量の大きいこっちにもFreeBSD6をいれて、今回構築した環境を写せばこの数年にわたるプロジェクトも完了かな。svnとか入れたいしなぁ。

*1:実はその直前、rc.confに書かずにsnmpd startしても立ち上がらず、しばし悩んだのは秘密。