IPv6入門 第六回 アドレスを解決するDNSはv6でも使える

 今回は,IPv6におけるDNSの試である。インターネットにつながったパソコン同士が通信するときには,IPアドレスをあて先として指定すると前回までに紹介した。しかし,IPアドレスは単なる数字の列なので,パソコンを利用する人間にとっては直観的ではなく,第一覚えるのが難しい。IPv4の世界ならまだ数字が短かったが,IPv6ではアドレス長が4倍の大きさでさらに覚えにくい。例えば,私のノート・パソコンには3ffe:501:4819:8888:260:1dff:fe22:f298というIPv6アドレスが設定されている。このアドレスを記憶するのはほとんど不可能に近い。
 そこで,人間が通信したい相手を手軽に指定しやすくするために考え出されたのがDNSである。具体的には,文字列を用いてあて先を指定できるようにする。例えば,日経BP社のWebページを見るときには,www.nikkeibp.co.jpをあて先として使える。IPアドレスよりもはるかに覚えやすいし,日経BP社という社名とnikkeibpという文字列を直観的に結びつけやすい。
 こうしたDNSで用いる文字列は,ホスト名と呼ばれる。人間は人間にとってわかりやすいホスト名を使い,パソコンは本当の住所であるIPアドレスを使う。この両者を結びつけ,対応関係を調べるしくみが今回紹介するDNSである。人間が指定したホスト名から,対応するIPアドレスを調べるものである。

接続時にホスト名はIPアドレスに変換される
図1 接続時にホスト名はIPアドレスに変換される

 ホスト名は,「.」(ドット)で区切られた英数字またはハイフンで構成する。それ以外の文字 を使うことは,仕様上許されていない。また,大文字小文字は区別されない決まりで,WWW.NikkeiBP.CO.JPとwww.nikkeibp.CO.jpはまったく同じ通信相手を意味する。DNSでは,このドットとドットで区切られた文字列を一つの単位として管理する。この管理単位をドメインと呼ぶ。DNSでは,ドメインごとにサーバーを立ち上げ,すべてのサーバーが階層的につながりあって,ホスト名とIPアドレスの対応関係を分散して管理している。例えばwww.nikkeibp.co.jpというホスト名は,jpドメインを管理するDNSサーバーとco.jpドメインを管理するDNSサーバー,そしてnikkeibp.co.jpドメインを管理するサーバーが連係して,IPアドレスを調べる。
 ちなみにインターネットが誕生した当初は,DNSを使わずに,ホスト名とIPアドレスの一覧表を一つのファイルにまとめ,各コンピュータごとに保存していた。インターネットにつながるコンピュータの台数が少なかったからこそ実現できた方法だ。各コンピュータは,元データを持つコンピュータからファイルを定期的にFTPで入手して,常に内容を最新に保っていた。
 DNSサーバーが階層的につながる様子をもう少し詳しく見ていこう。階層は,ホスト名の右側にくるドメインが上位で,左側に行くほど下位になる。上位ドメインを管理するDNSサーバーは,下位ドメインがどのDNSサーバーで管理されているかを知っている。下位ドメインのDNSサーバーの位置を教えるのが上位ドメインのDNSサーバーの仕事だ。
 www.nikkeibp.co.jpのIPアドレスを調べる場合を見ていく。人間からホスト名を打ち込まれたパソコンは,スタブ・リゾルと呼ぼれるサーバーに問い合わせを送る。

DNSのしくみ 図2 DNSのしくみ

 スタブ・リゾルバとは,ホスト名に対応するIPアドレスが見つかるまでDNSサーバーを階層に沿 って順番に探索していく役割を果たすサーバーである。ただスタブ・リゾルバは,DNSサーバーと同じマシン上で同時に動作していることが多い。インターネット上で広く使われているDNSサーバー・ソフトの岩ミニ占がその代表である。こうしたbindの実装のためか,スタブ・リゾルバとDNSサーバーを混同している人が多い。本来両者は別物である。
 スタブ・リゾルバは,最上位に位置するドメイン(根を意味するルートと呼ぶ)を管理するルートDNSサーバーに問い合わせを送る。ルートDNSサーバーはDNSの根幹をなす存在。最初にルートDNSサーバーに問い合わせる理由は,階層構造の最上位のルートDNSサーバーに問い合わせれば,必ず目的のホスト名のIPアドレス情報を持つDNSサーバーにたどり着けるからだ。あとは階層に沿って,目的の情報を持つDNSサーバーを見つけだしていく。
 このようにインターネット上には,ドメインの数だけDNSサーバーが存在している。世界中にまたがるDNSサーバーを一つに束ねあげた分散データベースとして動作しているのである。
 スタブ・リゾノレは,ルートに問い合わせを送らない場合もある。DNSでは,キャッシュと.いう技術を併用し,トラフィックを減らす工夫がなされているからだ。キャッシュとは,一度問い合わせたときの答えをスタブ・リゾルバ上に記憶しておき,一定期間中に同じ問い合わせを受け付けたら,スタブ・リゾルバが代わりに答えを返す技術である。
 以上紹介したDNSのしくみは,IPv6でもIPv4でもまったく同じである。
 IPv6とIPv4で違うのは,ホスト名とIPアドレスの対応関係をDNSサーバーに登録する際に使うデータ識別子である。データ識別子はレコードと呼ばれ,レコードの種類を見れば,登録されたデータの意味がわかる。IPv6用のレコードはAAAAレコード,IPv4用はAレコードである。IPv6アドレスのアドレス長はIPv4アドレスの32ビットの4倍である128ビット長なので,IPv4アドレス用のAを四つ並べたAAAAがレコード名になった。ほかに,IPv6用としてもう一つ新しいA6と呼ぶレコードも考案されている。ただ現在見直し論が高まっており,使われなくなる可能性がでてきている。
 IPv6のDNSで面白いのは,AAAAレコードを調べるためにDNSサーバーにアクセスする際,IPv6を使わなくてもいいこと。IPv4でアクセスしてもかまわないのだ。

あて先がIPv6でもDNSサーバーにはIPv4でアクセスできる
図3 あて先がIPv6でもDNSサーバーにはIPv4でアクセスできる

 実際,現状のIPv6インターネットでは,DNSサーバーにはIPv4でアクセスするのが一般的である。その理由はこつある。一つは,パソコンOSやスタブ・リゾルバが,IPv4しかサポートしていないケースがまだ多いこと。たとえば,米マイクロソフトが配布するWindows2000をIPv6化するキットは,IPv6でDNSサーバーに接続できない。
 多くのユーザーが使うスタブ・リゾルバの実装であるbindにしても,実際に使われているものの多くがIPv6経由の問い合わせに対応していないという事情もある。最新のバージョン9はIPv6経由の問い合わせに対応しているのだが,現在主流となっているバージョン8は未対応なのである。二つ目の理由は,ルートDNSサーバーがまだIPv6化されていないこと。ルートDNSサーバーのIPv6化は実験段階にあり,まだ本格運用には至っていない。スタブ・リゾルバは,ルートDNSサーバーにアクセスするのにIPv4しか使えないのである。
 こうした事情から,現在IPv6インターネットにつなぐ場合には,IPv4インターネットにも接続する必要がある。ただ社内LANは必ずしもIPv4化する必要はない。パソコンからスタブ・リゾルバまではIPv6でアクセスするようにしておけばよいからだ。
 あて先のサーバーがIPv6とIPv4の両方に対応している場合は,DNSサーバーにIPv6アドレスとIPv4アドレスの両方が登録されている。このため,問い合わせの結果,二つのアドレスを得ることになる。こうしたケースでは,どちらのアドレスを先に取得するか,また取得した結果どちらのプロトコルを優先してあて先ヘアクセスするかは,IPv6対応アプリケーションの実装によって変わる。
 KAMEプロジェクトが開発したUNIX用アプリケーションは,最初からAAAAレコードとAレコードの両方をスタブ・リゾルバに対して問い合わせる仕様である。

IPv4アドレスとIPv6アドレスのどちらも優先するかは実装によってまちまちである
図4 IPv4アドレスとIPv6アドレスのどちらも優先するかは実装によってまちまちである

IPv6アドレスとIPv4アドレスを得たパソコンは,まずIPv6アドレスを使ってIPv6での接続を試みる。IPv6の通信に成功すれば,IPv6を用いて通信する。
 もしIPv6ネットワークに問題があってうまく通信できなかった場合は,パソコンはあらかじめ設定しておいた時間まで待ち,タイムアウトしたら次にIPv4で接続を試みる。うまくいったら,IPv4で通信する。KAMEはIPv6を優先的に使おうという思想で作られたが,逆にIPv4との互換性を重視したTCP/IPスタックなら,まずIPv4で接続を試みる仕様になっている。
 さて,足かけ6回にわたってIPv6ネットの具体的なしくみを解説してきた。IPv6の中身に少しでも興味を項いてもらえることを祈りつつ,お別れしたいと思う。

トップページへ