Main Contents
2007年10月17日
ネットワークトラブルと意外な原因
今月から暫定復帰中のRO。
しかし先日プロバイダ変えたあたりから、定期的に強烈なラグに襲われる現象が発生していました。
自分だけ止まっていて周りは普通に動いているようなので、開発元が仕様だと認めるROのラグとも別の模様。ソロプレイしているときに止まって、敵にボコボコにされて死んでしまったりとか泣ける展開なので、じっくり原因究明することに。
まず原因の切り分け。
- ROが稼動している2台のマシンが同時に同じ現象になる
PCローカルの問題ではないことがわかる。
- pingをROのサーバに向けて打ってみる
Windowsの場合、-t オプションを付け止めるまで ping打ちっぱなしにして監視。すると時折、激しい遅延が一分程度続くことを確認。最大4200ms程度の遅延が発生するのでその間はゲームにならない。
- 発生点を切り分けるため、traceroute (tracert) で表示される経路上のルータに pingを打つ
これも現象が現れるまで継続させる。データセンタのルータ、プロバイダの出口など要所要所を狙う。
起こらなくなるところが原因となるところ。
遠くから順に打って…、ついに 192.168.128.1 と判明。えー。
- 原因となるマシンを探す
ローカルネットワーク内とわかれば話は早い…ハズなんですが、うちのネットワークは下手な中小企業より複雑かもしんないネットワーク構成。HUB5台、IPアドレスを持てる機械は20台くらい(HDDレコーダとか無線LAN親機なんやらもコミコミ)。
とりあえず基幹ハブのところで、発生時点のLEDの動き見て対象を絞り込みます。クライアント方面は問題なく、サーバ系ネットワーク内から現われているらしいことが判明しました。
- ログを確認する1
常時最新を保っている現行サーバと異なり、いささか放置気味になっている旧サーバが crackされていることも考え取得されているログを確認。痕跡は消されることが多いでしょうから、あまりあてにはなりませんが不自然に消されてたりする痕跡でもあれば解決の糸口にもなるでしょう。
同時に「何が」出入りしているかをも把握しようと、取れる限りのログをも取ってみます。
誰かミラーリングかなんかのために強烈なアクセスしているのかとも思ったのですが、http-access.logはいたって平穏。むしろ過負荷のためにアクセスできなくなりアクセス量はさがっています。
- ログを確認する2
ルータのログは syslogでサーバに送るようにして流れをつかめるようにします。サーバ二台では tcpdumpで情報収集。わかったのは旧サーバからは鬼のように DNSリクエストがプロバイダのDNSサーバに対して出ている。これが該当時間に激増する。
VMホストのサーバで動いている仮想マシン 2台が原因だろうと狙いを付けて両者のネットワークケーブルを引っこ抜いた状態にもしてみましたが症状は変わらず。
取れたルータのログを詳細に読んで気づいたのが、VMホストサーバ自身からのアクセス。
良く見たら世界各地のIPアドレスに該当時間になんかやっている! 全く対象から外してかかっていたのでロクに画面も見てなかったのですが、見た瞬間ピンとくるものが起動していました。
BitCometっていう BitTorrentクライアントソフトです。公開されているVMをダウンロードするのに使ったきりサーバに入れっぱなしになっていました。
- サクッとアンインストール
症状の現認とかも忘れ、即アンインストールしちゃいました。しかしそれ以降症状は出ませんので原因確定でしょう。
確かに先日案内が出ていたのでBitCometのアップデートをかけました。
upもdownもしていないけれどクライアントはテストのために起動してそのまま忘れちゃっていました。
- 総括
とにかく理由は不明ですがBitCometは なぜか0分と30分ごろに世界中のホストに連絡取ろうとします。それがウェイトなしで Xeon 3.2GHz×2、ギガビットLANからどかーんとルータに行くので、セッション数は瞬時にパンク。そしてアクセスしようとした先を逆引きするパケットまで発生するので、都合三台からルータをDoS攻撃したような状態が発生していました。
ルータのCPU使用率は 100%ですから外からもアクセス不能という結果に。
もしかしたらWindowsXPとかだと同時接続セッション上限があるから、一般的にはこの現象が現れていないのかもしれない。
教訓。使い終わったアプリは消しておくこと。
教訓追加
整理整頓の第一順位は整理、要る物と要らない物とに仕分けして、いらないものは捨てる。