前回第3回 IPv6で内部のルーティングを設定しよう!までで、IPv6での経路制御周辺とDNSのIPv6関連の設定に関して解説した。これからは、サーバ周りのIPv6対応の設定の説明を進めていく。第4回の今回はまずDNSのIPv6関連(図1)の設定を解説する。
一口に「DNSをIPv6対応させる」といっても、2つの意味がある。1つはDNSでホスト名からIPv6アドレスを引くことができるようになる意味で、もう1つはDNSサーバへの通信をIPv6で行うことができるようになるという意味である(図2)。
前者はIPv6ネットワークで最低限必要なものだが(そうでないと40文字近いIPv6アドレスをべた書きしないとならない)、後者はIPv4ネットワークが残っていれば必須ではない。そこで本稿では前者を中心に説明する。
後者は「IPv6トランスポート対応」のDNSサーバを用いれば、何もしなくても実現可能である(後述)。
まずは普通にIPv4のサービスを行うDNSサーバを立てる必要がある。IPv4のDNSサーバ設定に関しては連載:DNSの仕組みと運用を参照いただくことにして、本稿ではIPv6のDNSサーバ設定に限定して解説したい。
IPv6への対応に当たりDNSサーバに必要とされる機能は以下のとおりである。DNSサーバを準備するときには、以下の機能がサポートされていることを確認しておく必要がある。
1. AAAAレコード対応
ホスト名に対応するIPv6アドレスをDNSに格納するために用いられるレコードの種類である。同様な目的で「A6レコード」というものもあるが、まだ実験段階なので、当面は「AAAAレコード」のみが対応していれば十分である。
2. ip6.int.またはip6.arpa.ドメイン対応
IPv6アドレスに対応するホスト名をDNSに格納するために用いられるドメインである。
ドメインが2つ存在する背景には歴史的な経緯がある。もともとはip6.int.ドメインのみが用いられていたが、後日.int.が国際機関用トップレベルドメインとして予約されてしまったので、重複を避けるためにip6.arpa.が定義されたという次第である。2003年1月現在はip6.int.からip6.arpa.への移行段階であるため、両方のドメインが併用されている。
3. EDNS0対応
DNSパケットのデータ長は最大512byte、ということになっている。ところがIPv4アドレスが4byteだったのに対して、IPv6アドレスは16byteあるため、512byteの大きさでは時として必要なIPv6アドレスをDNSパケットにすべて格納し切れないことがある。
こうした問題を避けるために、DNS拡張オプションEDNS0(Extension mechanism for DNS)がRFC2671にて定義されている。このオプションにてDNS問い合わせクライアント側から受信可能なデータ長を通知することにより、DNSサーバはDNSパケットにより多くのデータを詰め込むことができるようになる。
特にマルチホーム構成などのために1つのホストが複数アドレスを持つような環境では、DNS応答パケットも大きくなりがちなので、EDNS0は必須な機能である。
4. IPv6トランスポート対応
DNSでの問い合わせ/応答通信は、TCP/UDPの53番ポートを使って行われる。通常はIPv4のTCP/UDPでこの通信は行われるが、IPv6トランスポート対応DNSサーバはIPv6のTCP/UDPでもこの通信を行うことができ る。IPv6でのDNSサーバ通信を行う必要がなければ、この機能は不要である。
1 AAAAレコード対応 |
2 ip6.int.またはip6.arpa.ドメイン対応 |
3 EDNS0対応 |
4 IPv6トランスポート対応 |
|
---|---|---|---|---|
BIND 4 | 〇 | 〇 | × | × |
BIND 8 | 〇 | 〇 | ○ | ○ |
BIND 9 | 〇 | 〇 | 〇 | 〇 |
djbdns | 〇 | 〇 | × | △ |
Windows 2000 DNS | 〇 | 〇 | × | × |
〇:対応済み △:未対応だが第三者がパッチを配布 ×:未対応 | ||||
表1 DNSサーバの要求事項 |
更新:BIND 8のEDNS0やIPv6トランスポート機能が、2003年6月2日に公開された BIND-8.4.0で標準サポートとなったため、表1を更新しました。(2003年6月4日)
お詫びと訂正:djbdnsのEDNS0をサポートと記述してありましたが、非サポートの誤りでした。お詫びして、訂正します。(2003年6月4日)
上記の準備が終わったら、後はIPv6アドレスをDNSに登録するだけである。書式が若干違うものの、IPv4アドレスをDNSに登録するのとまったく同じ要領である。唯一気を付けなければならないのは、逆引きドメインを2つ用意する必要があることくらいだ(図3)。
[named.conf] ... zone "example.com" { type master; file "example.com"; }; zone "0.0.0.0.f.f.f.f.f.f.f.f.e.f.f.3.ip6.arpa" { type master; file "example.com.rev" }; zone "0.0.0.0.f.f.f.f.f.f.f.f.e.f.f.3.ip6.int" { type master; file "example.com.rev" }; ... [example.com] .... host1 IN AAAA 3ffe:ffff:ffff::1 .... [example.com.rev] 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR host1.example.com. ....
最後にIPv6関連での、DNS設定でやってはいけないことをリストアップしておく。
最終的にはトランスレータを経由しない問い合わせにより名前解決ができることが多いものの、余計なDNS問い合わせによるDNSサーバ負荷を減らすためには、こうしたことは起こらない方が望ましい。
そのためトランスレータ用アドレスをDNSに登録するとき、特にDNSサーバに関しては十分注意して登録する必要がある。
今回は、DNSのIPv6対応について解説した。次回はメールのIPv6対応について解説していく。
Copyright © ITmedia, Inc. All Rights Reserved.