昨日、Perlのスクリプトでなんとかやろうと思っていたRogue Clientを特定する方法は、先輩がまた「WLCがsnmp出してるみたいだからMIBを調べればsnmpwalkで取得できそうだよ」とメールをくれた。
しかし、ネットワーク担当と言いつつ元々本業はサーバ管理&プログラマーだった私は、そのコマンドを使ったことがなかった。うう、未だに似非ネットワーク管理者なのだ。仕事といいつつプログラム書いてばっかりだし。とりあえずググったりmanを見たりして、どういうコマンドでどういうオプションで、とか調べてた。しかしオプションがいっぱいあって、ううう、どれをどう指定していいやらわからん。コミュニティ名ってどこに定義されているの?
しばらくして先輩が「できた?」とやって来た。「実はsnmpwallkって使ったことがなくて、今調べてて…」と話すと、あきれ顔。ちょこっとヒントをもらい、また続きをやる。コミュニティ名はsnmptrapd.conrfにもsnmpd.confにも書かれていなかったので、適当なスイッチにtelnetで入ってshow configで調べた。MIBファイルを調べてsnmptranslateというコマンドでシンボル名をOIDに変換し、
snmpwalk -v 2c -c コミュニティ名 -M /usr/local/etc/snmp/mib -m OID WLCのIPアドレス
でようやくRogueClientのMACアドレス一覧を取得できたのだ。よし、これで完璧!と思った矢先、
「そのRogue ClientがどのAPに接続しているかが、これだけではわからない」
ということに気がついた。全てのRogue Clientを調べたいのなら、別にどこに接続しているかという情報は必要ないのだが、調べたいのはあくまでもユーザに使用を許可していないAPに接続されているクライアントのMACアドレスであり、KnownなRogueAPに接続しているRogueClientは除外したいのだ。
う~ん、まだあと一歩。なんかいい方法ないかのう。