アクセスするだけでルーターがクラッシュするサイト

webサイトを見ただけでパソコンの調子が悪くなったり、インターネットにアクセスできなくなるというと、ページに組み込まれたJavaScriptやVBscriptが 原因でブラウザの動作がおかしくなってるとか、ウイルス対策ソフト等が入ってなくて悪意のあるスクリプトが動作してるということが 考えられます。あとはページの出力(レスポンス)に時間がかかって待機状態になっているとか。
そうでもなければPCが古くて単に遅いだけと思ってしまいます。
しかしちゃんとウイルス対策のされた最新のPCでさえ問題が発生し、さらには周辺機器にまで影響を及ぼすサイトが存在するのです。

ではなにが原因となっているのかという追求になるのですが、なんとPCの再起動ではなくルーターの再起動で問題が解消されます。
この時点で勘の良い人ならPCの問題ではなくてルーターの問題と気づくと思います。

そのwebサイトというのが、有名なオークションサイト『 eBay 』なのですが、誤解の無いように先に言っておくとこの問題は別にeBayが悪いわけではないです。

eBayに出品されている商品詳細ページのうち法人が出品しているものについては、商品ごとに異なったアドレスを持つ アクセス解析用の1×1ピクセルのビーコン画像が埋め込まれているのですが、 このURLがやたら長いのです。

例として次のような感じ。

http://e-n.y-1shz2ettghj6avrj-1sez2pra2dj6plfehkbaejkw2dj6x9ny-1seq-2-2.stats.example.com/

(このURLを決定するJavaScriptも約13Kバイトと長い)

アクセス解析サービスの解析データをブラウザからサーバに送るときには通常はGETクエリを使用したりするのですが、eBayの場合はアクセスするURLのホスト部分に埋め込んでいるのです。

ルーターがおかしくなってしまった原因は、この長いホスト名だったのです。

問題の起こったルーターのファームウエアでは、DNS機能の部分でドメインの各ラベル(ドットとドットの間の文字)を50文字以下と想定していて51文字以上あるホストをDNS検索すると クラッシュしてしまうのです。
ドメインに関する仕様書であるRFC1035には、『ドメインのラベルは63オクテット以下』とあるので原因はeBayではなくルーターを作ったメーカーのほうなのです。

この問題の教訓は切り口によって様々あります。

  • 起こりうる全てを把握しようとするならまずRFCを読む。
  • webサーバーに情報を送る方法はGPC(GET/POST/cookie)やリクエストURIだけではない。

ではこのeBayのような手法をとろうとする場合どのような方法になるのか。

  • DNSのワイルドカードを利用して、*.stats.example.comのサブドメインは全て同じサーバーを見に行く設定にする。
  • webサーバーでバーチャルホストを利用しているなら*.stats.example.comのサブドメインを受けれるようにする。
  • リクエストされたホスト名で処理を考える。

ということになると思います。

しかしこの手法はある意味で間違っています。
DNS(ドメインネームシステム)自体はIPアドレスでホストを特定するのは覚えにくいし、わかりづらいから、その代わりにexample.comとかのドメイン名を使うというのが そもそもの機能であるはずなので、それ以外の情報を送信するためのものではない。

またアクセスのたびにDNS検索を行うようになってしまうと、ページの表示が遅くなります。

関連記事

スポンサーリンク

PI関数 円周率を求める

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る