山本和彦
IIJ 技術研究所
BSD Magazine No. 10 (2001/12)
IPv4 と比べて IPv6 の優れている点として、 プラグ&プレイの機能が挙げれます。 ルータを介し IPv6 インターネットに接続されているネットワークに IPv6 ホストをつなぐと、 自動的に IPv6 アドレスが生成され、またデフォルトの経路が設定されます。 DHCP サーバを運用する必要はありません。
しかしながら、IPv6 のプラグ&プレイには、 1 つだけ弱点がありました。 それは、DNS サーバのアドレスを獲得する方法が規定されていなかったことです。 しかたがないので、これまでは手で /etc/resolv.conf にアドレスを記述したり、 DHCP サーバに教えてもらったりして運用してきました。
この問題を解決するために、IETF の IPng 分科会では DDDT(DNS Discovery Design Team) を結成しました。 KAME プロジェクトからは、萩野(itojun)さんと神明さんがこのチームに加わっています。
DDDT では、ミーティング、電話会議、ML を通じ、 いくつかの方法を挙げて比較検討してきました。 太平洋をまたがる電話会議は、時差の関係で調整が大変だったようです。 最終的に DDDT は、エニーキャストによる方法を採択しました。
このエニーキャストは、既知のアドレスです。 しかし、まだ具体的な値は定義されていません。 既知のアドレスですから、/etc/resolv.conf にあらかじめ書いておくことができます。
あるホストからこのエニーキャスト宛に送信された DNS への問い合わせは、 近くの DNS サーバに届きます。 そして、その DNS サーバが答を返します。
定義によりエニーキャストは、 ユニキャストとアドレス表記上区別がつきません。 そこで、ユニキャストの経路制御によって、 上記の問い合わせが運ばれることになります。
KAME では、この DNS サーバ探索機能をすでに実装しています。 利用する際には、まず未定義のエニーキャストアドレスを自分のサイトで取り決めます(こだわりがなければ、 KAME プロジェクトが現在とりあえず利用している fec0::35 を使うとよいでしょう)。
DNS サーバ側では、 このエニーキャストアドレスをネットワークインターフェイスに割り当てます。 そして、このエニーキャストアドレス宛の問い合わせがこの DNS サーバに届くように、 ホスト経路を流します。 さらに、DNS サーバとして totd を起動します。
クライアント側では、snap のパッチを当て、 libinet6 を作成し、コマンド群にリンクします。 /etc/resolv.conf に、上記のエニーキャストアドレスと insecure1 というオプションを記述すれば、 この機能が利用できるようになります。
しかし、この作業はコマンド群を再コンパイルする必要があるため、 煩わしいかもしれません。 そこで近い将来 KAME では、再コンパイルしなくても、 DNS サーバ探索機能を利用できるようになる手段を提供する予定です。
前々回で報告したように島さんが中心となって、 今年 5 月から MIP6 の実装を進めています。 6 月には snap から Ericsson のコードを削除し、 8 月に KAME による MIP6 のコードを repository に統合しました。 そして、10/15 にアルファリリースまでこぎつけました。
現時点では、仕様 No. 15 に基づいて FreeBSD 上で実装しており、 以下の機能が利用できます。
今後の予定としては、仕様 No. 13 への後方互換性の確保、 仕様 No. 15 以降への追従、FreeBSD 以外の BSD への移植、 拡張 API への対応などが挙げられます。
次回、このプロジェクト通信において、 KAME プロジェクトの将来に関する驚くべき秘密が明らかになる!!!