DNS(Domain Name System)は,IPによる通信先・通信元の指定を人間が扱いやすい“名前”で行えるようにするシステムである。DNSはファイル・システムにおけるディレクトリとファイルのような階層関係をもったツリー構造のデータベース・システムで,DNSの各ノード(ファイル・システムにおけるディレクトリやファイルに該当するところ)はドメインと呼ばれ,固有の名前(ドメイン名)が与えられる。

 DNSのツリー構造の頂点はルートと呼ばれ,"."で表現され,ルートを根として,com,net,orgなどのトップ・レベル・ドメインと呼ばれるドメインが枝別れしてつながっている。さらにトップ・レベル・ドメインを節として,多くのドメインが枝別れしてつながり,更にそのドメインを節として新たなドメインが枝分かれする形でつながり,DNSを階層構造をもったツリーにしている。一般にネットワーク上のホストは末端のノードに対応する。

 例えばwww.v6start.netという名前を持つホストの情報は,DNSというツリー型のデータベースのルートから,トップ・レベル・ドメインのnet.ノード,net.ノードから枝を辿ってv6start.net.ノードへと,ツリーをルートから順にたどる形でwww.v6start.net.ノードから取り出せる。つまり,DNSでは名前をデータベースから情報を検索するための階層的なキーとして捉えている。

 DNSではツリー構造のデータベース全体を複数のサーバーに分割して保持しているが,この分割した単位をゾーンと呼び,ゾーンを管理しているサーバーをDNSサーバーと呼ぶ。DNSサーバーはゾーン・ファイルというデータベースを用いて,ドメイン名やドメインに属するホストのIPアドレスなどを管理している。また,その中には自分よりも下位のドメインを管理するDNSサーバーに関する情報も含まれている。

 なお,ゾーン・ファイル中の各種のアドレス情報はリソース・レコードと呼ばれ,リソース・レコードはその属性別にいくつか定義されている。例えば,MXレコードは電子メール・サーバーのアドレスを意味し,NSレコードはDNSサーバーのアドレスを意味する。

 DNSのホストの名前からIPアドレスを得る過程をwww.v6start.netを例にとって説明しよう。クライアントからwww.v6start.netというホストのIPアドレスの問合せを受けたDNSサーバー1は,自分がwww.v6start.netの情報を持っているかどうか確認する。持っていれば,そのIPアドレスをクライアントに返して検索を終了する。

 持っていなかった場合は予め知っているルート・ドメインのDNSサーバーに対して問い合わせを行う。DNSサーバー1から問い合わせを受けたルート・ドメインのDNSサーバーは,自分の下位ドメインであるnetドメインを管理しているDNSサーバーNETのIPアドレスを問合せをしてきたDNSサーバー1に返す。

 続いてDNSサーバー1はDNSサーバーNETに対して問い合わせを行い,v6start.netドメインを管理しているDNSサーバーV6STARTのIPアドレスを得る。さらにDNSサーバー1はDNSサーバーV6STARTに対して問い合わせを行い,www.v6start.netのIPアドレスを得て,そのIPアドレスをクライアントに返す。

 このようにホストの名前から,IPアドレスなどの情報を得ることを「正引き」と言い,逆にIPアドレスからホスト名などの情報を得ることを「逆引き」と言う。

 IPv4,IPv6どちらにおいても上記の名前解決の仕組みは変わらない。DNSのIPv6対応として求められることは,クライアントとDNSサーバーの双方がIPv6による通信が可能であるということ,そしてDNSサーバーのデータベースにIPv6のアドレスを格納できることの2点である。

 DNSのIPv6対応において,クライアントとDNSサーバーとがIPv6で通信できるということは,文字通りクライアントとDNSサーバー,ならびにDNSサーバー同士がIPv6のパケットを用いて通信できることである。

 またもう一つのDNSのIPv6対応に要求されることであるDNSサーバーがIPv6のアドレスを格納できるという点については,DNSサーバーの名前からIPアドレスを得る正引き用のリソース・レコードとして,AAAAレコードが登録できるということ,逆引き用のリソースレコードとして,PTRレコードにIPv6アドレスを記述できるということである。 正引きに用いるリソース・レコードとしては,AAAAの他にA6も提案されたが,現在ではA6は非推奨となっている。

 逆引き用に,IPv6アドレスのPTRレコードへの記述を,v6start.netのIPv6のアドレスである2001:240:301::250:8bff:fe68:7546を例にとると,ip6.arpa.を頂点としたツリーにおいて,

6.4.5.7.8.6.e.f.f.f.b.8.0.5.2.0.0.0.
0.0.1.0.3.0.0.4.2.0.1.0.0.2.ip6.arpa.

に格納され,逆引き用のゾーンファイルに

6.4.5.7.8.6.e.f.f.f.b.8.0.5.2.0.0.0.
0.0.1.0.3.0.0.4.2.0.1.0.0.2.ip6.arpa. IN PTR v6start.net

のように記述される。この値はIPv6のアドレスを”0”の省略なしに後ろから順にピリオドで区切って並べたものにipv6.arpa.というDNSのツリーの頂点を付加したものである。

 ところで,最近までこのipv6.arpa.というドメインのかわりに,ipv6.int.というドメインが使われてきた。このため,IPv6対応のクライアントの中には,ipv6.int.を認識することはできるが,ipv6.arpa.は認識できないものも存在する。現在はipv6.int.からipv6.arpa.への移行期にあたるため,DNSの逆引きには,ipv6.int.およびipv6.arpa.の双方に対応させておくことが推奨されている。

(桑原 大▼NTTコミュニケーションズ
先端IPアーキテクチャセンタ)