スターウォーズと VRF

togetter で面白いネタを見つけたのですが、まとめられているコメントに微妙なものもあるので、技術的なところを簡単にメモ書きしておきます。 そのネタとは、ある IP アドレス (216.81.59.173) に traceroute をかけると Star Wars のオープニングのテキストスクロール (のパロディ?) が表示されるというものです。 実際に traceroute をかけた時の動画が YouTube にアップロードされていて、技術的な内容はこちらにまとめられています。 なお、有名になったため、(DDoS のものも含め) 大量のトラフィックを受けてしまったようで今も試せるかはわかりません。 少なくとも私の ISP からでは現在到達できないようです。

さて、実際にどうやってこれを実現しているかというと構成要素は二つあって、まず一つは DNS の逆引きを利用しているわけです。 これは 251.214.206.in-addr.arpa ゾーン内の対応する各レコードに表示する内容 (ホスト名) を書いておけばよいわけで、さして難しいことはありません。 以下のような内容が書かれているのでしょう。

1 IN PTR Episode.IV.
6 IN PTR A.NEW.HOPE.
9 IN PTR It.is.a.period.of.civil.war.

もう、一つの構成要素は 251.214.206.0/24 のネットワーク構成になります。 論理的に細かく分けて多くのゲートウェイを通過するようにしなければならないので、DNS レコードの登録よりもこちらの方が面倒くさいと思います。 何も考えずに構成を組むと大量のルータが必要となりそうですが、そこで利用されるのが Cisco ルーターの VRF という機能です。

VRF は簡単に言うと複数のルーティングテーブルを持つ機能です (Cisco の設定例)。 今回は多数の VLAN を作成し、VRF を用いて各 VLAN 固有のルーティングテーブルを設定することで、実際には 2台のルータ間を行き来するだけで多数のゲートウェイを通過するように設定したようです。 先に紹介したページの PHP スクリプトを実行すると 2台分のルータの設定が生成されますが、これを見ると /30 を割り当てた VLAN を 2台のルータに多数作って 216.81.59.173 宛のパケットを 2台の間で行ったりきたりするようになっています。 ですので、見た目よりはずっと簡単な物理構成で実現されています。

こういった遊び心と技術センスは真似してみたいところですね。