wiki.tomocha.netがSolaris Zone上で動いているのですが、そーとー、IPv6で使うのには癖があるようです。
Solarisの場合、ip.tun0 というデバイスを使い、GREトンネルを作成するのですが、ip.tun0というデバイスは、Zone上にインターフェースとして作成することができません。
*1
すなわち、ip.tun0 からやってきたパケットをルーティングして、物理インターフェースやリンクローカルにアドレスを付け、それを割当、IPv6をしゃべると言うことになるのですが、問題はルーティングなのです。
Zone上では、StaticRouteやDefaultRouteを設定できず、グローバルゾーン上のルーティングに基づくのですが、デフォルトゲートウェイは、ip.tun0に向けるが、zoneからみれば、物理インターフェースのリンクローカルがデフォルトゲートウェイとなり、グローバルZone上からルーティングをさせる必要があります。
ここでリンクローカルのアドレスを使ったりするのですが、Solarisでは*BSDやLinuxに存在するどのインターフェースを使うか明示的に設定できないのです。
すなわち、DefaultRouteを複数書いてやる必要があったりしますが、自分自身のパケットをうまくルーティングできないといった問題がありました。
仕方なく、一端Zone上に割り当てているインターフェースからルーティングを行う別箱へ渡し、そこから、パケットを返し、ip.tun0へ渡すということを行えばできるようでした。
あと、defaultrouterに相当するdefaultrouter6 みたいなものがなかったりと、いろいろと大変そうです。探せば有るのかもしれませんが、起動スクリプトといったもので対応するしかなさそうな気がします。
自分自身でトンネルを掘り、がんばってルーティングを行わず、IPv6 Reachableなネットワーク上で使う分にはおそらく困らないでしょう。
仮想化、トンネルを一台の箱で行うと問題が出るようです。こういった使い方するひといるのかなあ?(^^;
今じゃ、IX2015が破格で売られていますので、そういう箱を使ってGREトンネルを造った方が安くて楽かもしれません。
リンクローカルのアドレスがめんどくさそうですが…。
ということで、試行錯誤して試験的にIPv6に対応してみました。