LLの惑星群を楽しもう!~gihyo.jp×LL Planets presents

第2回IPv6をハックしよう~IPv6ハッカソン~

IPv6始まりました

2011年6月8日に、世界中のWebサービスの提供者が1日(24時間)だけ自社のサービスをIPv6対応させて影響を探ってみようというWorld IPv6 Dayというイベントが開催されました。

参考:Wolrd IPv6 Day に関する情報提供サイト
http://www.attn.jp/worldipv6day/

大きな混乱も問題もなくIPv6でのサービス提供は充分可能ということが実証できたようです。また、ISPによるIPv6接続サービスも提供され、一般家庭でも普通にIPv6が使えるようになりました。

参考:家庭でIPv6対応の接続サービスを導入 - Wold IPv6 Day 情報提供サイト
http://www.attn.jp/worldipv6day/ipv6-service.html

IPv6はすぐに使えるテクノロジーとして存在しているのです!!

流行りもんには乗っておこう

ところでIPv6ってLLと関係あるの? そもそもLLいじってる人って、IPv6とか意識しないよね。たいていのOSはIPv6対応になってるし、Apacheも普通にIPv6喋れるし、IPv6になったからと言って、LLプログラマと関係ないよねえ。

と思ってたら、LLイベントは流行りもんには弱かった。

今年はIPv6流行ってるみたいだし、なんか企画考えよう、そうだな、ハッカソンでもやってみるか、あ、丁度良いところに来たね、遅刻してきたところいきなりで悪いんだけど、IPv6ハッカソンやるから、番長やってね、よろしく!!

とまあ、そんな流れで、IPv6ハッカソンをやることになりましたよ。

なんてこったい。

ハッカソンって何だ?

ハッカソン(Hackathon:Hack-a-thon)とは、特定の技術に興味のあるプログラマーたちが、ノートPC持参で集まり、みんなで一緒にソフトウェアをハックしまくって楽しむというイベントです。

ハッカソンという用語は、⁠Hack」「Marathon」を合わせた造語で、米国では10年ほど前から使われています。やり方は以下のサイトに詳しく載っています。

参考:ハッカソン運営ガイド
http://sites.google.com/site/devreljp/Home/hackathon-in-a-box/hackathon-guide

IPv6ハッカソンということは、とりあえず、みんなで集まって、IPv6に関係したものを作れば良いのかな。

とりあえず使ってみる

IPv6は環境さえ整ってれば何も考えなくても使えちゃいます。

WindowsもMacもそのままでIPv6対応のネットワークに繋げれば、即IPv6が喋れるようになります。

もちろん、みんなが使っているUbuntuも11.04からはIPv6を普通に喋ってくれます。

とりあえず以下にアクセスして、動いた!!、と喜びましょう。

The KAME project ~ IPv6でアクセスすると亀が動く
http://www.kame.net/
IPv6@2ch掲示板 ~ IPv6でアクセスするとひろゆきが踊る
http://ipv6.2ch.net/
The NeGi project 2011 ~ IPv6でアクセスすると初音ミクがネギを振る
http://negi.ipv6labs.jp/

動かなかったら環境を作りましょうね。環境がどうしても作れなければIPv6ハッカソンにご参加ください。手軽にIPv6体験ができます。

なんか作ってみよう ~ Railsを試してみる

IPv6は簡単に動くみたいなので、とりあえず何か作ってみましょう。

みんなが使ってるUbuntuだとまずは以下のコマンドを実行して、Railsがインストール、と。

apt-get install rails

適当なディレクトリに移動して

rails ipv6hack
cd ipv6hack
script/server

これでRailsのWebサーバが動きます。

早速ブラウザでアクセスしてみましょう。

IPv6のループバックアドレスは::1なので以下をアクセスすると、

w3m http://[[::1]]:3000/

Railsの初期画面が表示されま……せん。駄目じゃん。

気を取り直して、オプションを付けてウェブサーバを起動。

script/server --b="::"

今度は、ちゃんと以下で表示できました。

w3m http://[[::1]]:3000/

Rails(WEBrick)も工夫すればちゃんとIPv6を喋ってくれるようです。

よしよし。

ポイント
何もしなくてもIPv6使えます、は言いすぎ。

なんか作ってみる~グローバルアドレス、リンクローカルアドレスで動かす

次はグローバルアドレスを振って遊んでみましょう。

IPv6にはドキュメント用のアドレスがあるのでそれを付けてみます。

参考:文章を書く時に使うIPv4/IPv6アドレス
http://www.kunitake.org/fswiki/static/addresses+for+documentation.html

とりあえず 2001:db8::1 のアドレスを wlan に振ってみます。

sudo ifconfig wlan0 inet6 add 2001:db8::1 up

この状態で、WEBrickを再起動して、ブラウザから確認。

script/server --b="::"
w3m http://[[2001:db8::1]]:3000/

ちゃんとグローバルアドレスでもブラウザから見えました。

よしよし。

さて、IPv6には自動的に付けられる、リンクローカルアドレスというものもあります。

自動的に付けられるのでなんか便利に使えそうです。

手動で付けることも可能なので、fe80::1でも付けてみましょうか。

sudo ifconfig wlan0 inet6 add fe80::1 up

WEBrickを再起動して、ブラウザで確認。

リンクローカルアドレスはアドレス指定時にインターフェイスを指定してやる必要があるので、以下のように指定。

w3m http://[[fe80::1%wlan0]]:3000/

ん?見えない。

でも、lynx だとちゃんと見えますよ。

lynx http://[[fe80::1%wlan0]]:3000/

どうもw3mはリンクローカルアドレスを考慮した実装になってないようです。

他のブラウザで試したところ、Firefox 5.0 はOK、でも Chromium(12.0.742.112 (90304) Ubuntu 11.04)は駄目でした。

ポイント
リンクローカルアドレスの実装が甘いブラウザがある。良く使われるブラウザがこうだとすると他は推して知るべし。

なんか作ってみる~データベースを使ってみる

気分を変えて、MySQLをIPv6で使ってみましょう。

まずは設定ファイルを見ます。bind-addressをいじれば動くのかな?

やってみました→動きません。

マニュアルを探してもIPv6でlistenさせる方法は書いてません。

ググってみたところ、バージョン 5.2のtaskに⁠Support should be added for MySQL to work over IPv6⁠と書いてあったのは発見できたのですが、実装は華麗にスルーされてるようです。

また、4.0のころにIPv6で動かすようなハックもあったようなのですが、取りこまれてはいないようです。

ガッデム!!

気をとりなおしてmemcachedでも試してみましょう。

これは、/etc/memcached.confの中の-lの行を指定したりコメントアウトしたりすればIPv6を喋ってくれましたよ。素直に動くと妙に嬉しかったりします。

ポイント
基本的なソフトウェアでもIPv6が喋れないものがある。

なんか作ってみる~コードをコミットしてみよう

なんか作ったら、とりあえずgithubに上げるのが今時の常識です。

github
https://github.com/

これもIPv6でやりたいですよね。

dig github.com AAAA

;; QUESTION SECTION:
;github.com.                  IN      AAAA

でも残念。AAAAレコードが付いていないので上げられません。

ポイント>
よく使ってるWebサービスがIPv6に対応してるとは限らない。むしろ対応してるところのほうが少ない。

ってことでハッカソンですよ!!

ちょっと調べただけで、

  • IPv6対応の実装漏れはまだありそう
  • WebサービスはそもそもIPv6が使えないものもある
  • 開発者がIPv6だけで生活するのは無理

ということがわかりました。

もうちょいあれこれ調べてみる必要はありそうです。

また、うまくいっていないものを何とかするのは技術者魂を刺激しますよね。

8月20日に一緒にIPv6ハックしてみませんか?

一緒にハックする参加者を募集しております。

IPv6ハッカソン
http://ll.jus.or.jp/2011/program/ipv6hackathon.html

LLイベントだもの

でも真面目に調べるだけじゃつまらないんですよね♪

LLイベントはネタを競う大会でもあります(そうだよね?⁠⁠。

IPv6の128bitの広大なアドレス空間を使ってあれこれするアイディアがあれば一緒に実装しませんか?

128bitもあれば、リスト構造体ぐらいは問題なく作れるはずです。

また、IPv6のサービスは、まだまだ未開の荒野です。

やったもん勝ちです。IPv6占いでも作って一山あててみませんか?

それと今はIPv6を使ってて良かったな、と思うのは、亀やひろゆきが踊ったりネギが振られたりする時ぐらいなのですよ。

そんな特典じゃ人の心は動かせません。

IPv6でアクセスするとなんでも歌って踊り出すような素敵なProxyサービスなど、グっとくるサービスを作ってみませんか?

皆さまの応募をお待ちしております。

おすすめ記事

記事・ニュース一覧