IPv6とDNS
DNSのIPv6対応には、2つのポイントがあります。IPv6パケットで、問い合わせを処理できるか、つまりIPv6トランスポートに対応しているかという点と、IPv6対応のレコードに対応しているかという点です。
今は、ほとんどのサーバで実装されているので、どちらも問題ありません。
DNSのサーバは、大きく2つに分けられます。ゾーン情報を保持しているコンテンツサーバと、クライアントの参照に利用されているキャッシュサーバです。
参照用のキャッシュサーバは、IPv6トランスポートにさえ対応すれば、名前解決してくれます。コンテンツ側はトランスポートの対応の他、IPv6対応のレコードを記述する必要があります。
IPv6では、正引きにAAAAレコードを、逆引きにはPTRレコードを利用します。正引きは、これまで通り設定したいホスト名にAAAAレコードでIPv6アドレスを設定すれば完了です。
同じホスト名に同時にAレコードが設定されていても大丈夫です。この場合、アクセスの際にどちらが利用されるかは、名前を引いた側の実装によります。
現在のほとんどの実装では、IPv6の接続性があればIPv6アドレス、つまりAAAAレコードを優先して利用します。逆引きはip6.arpaというドメインでIPv6アドレスを1octectづつドット[.]でつないだホスト名にPTRレコードを設定します。
- www.example.jp にAレコードとAAAAレコードを設定
www.example.jp IN A 192.0.2.80
www.example.jp IN AAAA 2001:db8:8080::80- 192.0.2.80の逆引きをwww.example.jpに設定
80.2.0.192.in-addr.arpa.INPTRwww.example.jp.
- 2001:db8:8080::80の逆引きをwww.example.jpに設定
0.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.0.8.8.b.d.0.1.0.0.2.ip6.arpa. IN PTRwww.example.jp.
IPv6の正引きは、比較的簡単に記述できますが、逆引きはなかなか大変です。また、IPv6では、各セグメントのプレフィックス長が標準で/64であり、セグメント内で利用できるIPv6アドレス数は莫大です。全てのIPv6アドレスに逆引きを書こうとすると、破綻する程のレコード数になります。
恐らくIPv6での逆引きは、サーバなど一部の気になるホストのみ記述して、その他のユーザがクライアントで利用するIPv6 アドレスには設定しないことになるだろうと考えています。権威委譲やメール配送先の指定先には、NSレコードやMXレコードでホスト名を指定しています。これらをIPv6対応する場合は、指定先のホスト名にAAAAレコードを記述してやります。NSレコードについては、必要に応じて権威委譲を受けている上位のネームサーバにグルー(glue)としてAAAAレコードを登録します。