pfSense 2.4 に NET-SNMP を導入

図1. snmpd のエラーで埋め尽くされたログ

会社で BSD ベースなサーバルータ、pfSense を使い始めてかれこれ10年に。当時はかなりとっつきにくかった設定も、特に ver.2 系になってからは小気味良く改善されると共に機能そのものも豊富に。

それでも、もう永い間、「これは BSD 側のバグ」として解決されてこなかったのが、SNMPD が吐き出すエラーメッセージでログが埋め尽くされる問題。フォーラムでは、ログレベルをいじれば良い、とあったのですが、全く効果無しでした。

図1. snmpd のエラーで埋め尽くされたログ
図1. snmpd のエラーで埋め尽くされたログ

 

pfSense v2.4系がリリースされるに当たり、NET-SNMP パッケージが利用可能に。早速、v2.3稼働中の実機をアップグレードすることにしました。

通常、マイナーアップデートであれば、WebGUI からアップデート可能なのですが、今回は USB 起動メディアを作成してのフレッシュインストールとなります。フレッシュインストールでは、以前の設定をきちんとリストア出来るかがどうしても懸念されますが、公式ドキュメントの手順に沿って行えば問題有りません。

 

キモは、USB 起動してから表示されるこのダイアログで、「Recover config.xml」を行ってから、「Install」へ進むことです、多分。その後、インストール完走〜再起動すると、今までの設定が全て維持されていました。

図2. pfSense Installer の Recover config.xml を一度選ぶ
図2. pfSense Installer の Recover config.xml を一度選ぶ

 

無事にアップグレード完了すると、パッケージマネージャから net-snmp をインストールすることが出来ます。そして晴れて SNMPD を無効にすればあの忌まわしきエラーバグは解消されるわけです。

ここでSNMP経由で取得していた項目で取れていないものがあるのに気づきました。調べてみると、NET-SNMP にすることで、今まで使えていた pfSense 独自の MIB が使えないのだそうです。具体的には、ルータが現在こなしているセッション数など。

 

そこにある通り、セッション数を取得する pf コマンドを拡張 oid に放り込む旨の設定を /var/etc/netsnmpd.conf に加えます。そして監視に使っている SNMP サーバからその oid を参照することで、ルータのセッション数を監視出来るようになるわけです。

図3. SNMP サーバ dude 上に可視化された pfSense Session
図3. SNMP サーバ dude 上に可視化された pfSense Session

 

ところがこれをSNMP鯖でグラフ化すると、ゼロ一直線。早速、コマンドから直接覗いてみます。

 

この戻り値の「7581」がセッション数なのですが、原因はそのデータ型が STRING になってしまっていることでした。グラフ化するにはこれが INTEGER や GAUGE であることが必須です。

今回、SNMP の拡張に extend を使いましたが、同じく任意のスクリプト実行してその結果を格納する機能に、pass, sh, exec があるようで、その中には、データ型を指定出来るものも。早速あれこれ試してみましたが、データ型は STRING のまま、びくともしません。

 

今回はここで手詰まり。まだ pfSense に NET-SNMP が使えるようになって間もないので、どなたか先人さまが突破してくださるのを待ちたいと思います。

投稿者: ServerCan

香港在住の日本人技術者です。技適が無いのでのびのび創作しています。 twitter: @ryan_j23 Mastodon: servercan@servercan.xyz

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA