アライドテレシス AT-X610のMACアドレススラッシング検知機能でハマったのでメモ。
MACアドレススラッシング検知機能は、スイッチがMACアドレスを学習する時に、煩雑に更新があった事を検知して、アクション(ポートやvlanのdisable)をおこす機能。
アライドテレシスのWebサイトを見ると、例えばport1で学習していたMACアドレスがport2に更新、またすぐにport1に戻るといったような状態、ネットワークのループ状態の検知に有効だとある。
ループガードの機能としてLDF検知があるが、これはエッジスイッチに適用するのがベストだと考えるので、ディストリビューション層のスイッチでエッジスイッチ跨りのループ検出に効果があると思い設定してみた。
設定して間もなくMACアドレススラッシングを検知し、ほら、誰かループさせてるじゃんと、犯人探しを始めた。
AT-X610にログインし、ログを見ると、
2012 Nov 27 18:51:20 user.warning dsw1 HSL[1242]: Thrash: Loop Protection has
disabled port on ifindex 5016 vlan 999
2012 Nov 27 18:51:20 user.warning dsw1 HSL[1242]: Thrash: Loop Protection has
disabled port on ifindex 6016 vlan 999
2012 Nov 27 18:51:20 user.warning dsw1 HSL[1242]: Thrash: Loop Protection has
disabled port on ifindex 4516 vlan 999
と出力されている。
ifindexの意味がよく分からなかったが、show interfaceをすると index部分に表示されている。
この装置の場合、5016が1号機の16番ポート、6016が2号機の16番ポート、4516がスタティックチャンネルグループの16番ポートとなる。スイッチはVCSスタック、16番ポートでイーサチャンネルしてるのでこうなる。
16番ポートの先につながっているSWの端末が原因だとわかるが、16番ポートだけしか検知していないのは何故だ?Webサイトの説明では、MACアドレスを学習するのにバタツキがあった際に検知とあるが、16番ポートだけというのが分からない。
それはとりあえずおいて、犯人の端末を見つけるべく検知したMACアドレスを調べるコマンドを探すが見当たらない。アライドテレシスの営業さんに尋ねるとshow arpや show mac address-tableで探すしかないという。出力結果をExcelで加工して見たがおかしな点はない。というより、バタツキを表示するような結果が出る訳がないと思う。
仕方がないので、ログの出力時間を見ると、朝出社した時間で検知していた。誰かがPCを立ち上げた際に検知している。そして昼間でもログが出力されている。外出から帰社した際にPCを立ち上げて検知されているようだ。vlan999に参加している端末は30台もないので、1人1人聞くしかないかと調査を始めようとした矢先、ログ時間を見ていて、俺の活動時間に近いのに気付いた。
俺の端末かよ?と切り分け開始。俺の端末を起動すると確かにMACアドレススラッシングが働くのは確認できた。まずは本当にループしていないか配線やSWを確認したが、ループしていない。同じSWに接続されている端末を起動してもらったが検知しない。つまり端末依存ということだ。
ここで諦めてアライドテレシス社のサポートに解析を依頼中。
しかし、端末依存で誤検知というのもお粗末だし、検知したSWで犯人探しが出来ない実装もお粗末だ。この機能は今のところ使えないという結論に至った。