~Windows Server 2008 Beta版 移行・導入・運用の豆情報~
IPv6 (Internet Protocol version 6) プロトコルは、Windows Server 2003 / Windows XP SP1から正式に使用することができるようになりましたが、使用するためにはユーザがプロトコルの追加・構成を行う必要がありました。 これに対し、Windows VistaやWindows Server 2008では、既定でIPv6が有効に設定されています。 また、Windows Server 2008のDNSサービス、DHCPサービス、インターネットインフォメーションサービス (IIS) など主要ネットワークサービスもIPv6に対応しています。
ハードウェア面では、ネットワーク機器のIPv6対応が進んでおり、既存のIPv4ネットワーク環境にIPv6対応のOSやハードウェアが混在するケースが増えてきます。
図1 Windows Server 2008では既定でIPv6 / IPv4の両方が有効
富士通では、このようなケースでのトラブルの未然防止、スムーズな導入のために、IPv6 / IPv4混在時のOSの挙動確認など、さまざまな動作検証をおこなっています。
今回はその一例として、DNSサーバへの名前解決要求(クエリ)について、各コンピュータのIPv6 / IPv4の実装状況(有効 / 無効)による動作の違いをご紹介します。
コンピュータが他のコンピュータと通信する際には、名前解決と呼ばれるホスト名(コンピュータ名)とIPアドレスをマッピングする動作が必要となります。名前解決をサーバサービスとして提供する主要なものとしてDNSサーバがあり、Windows Server 2008でも標準で搭載されています。
図2の、[1] hostAのクエリ、[2] 応答 (2008::201) の部分がDNSサーバを使用した名前解決です。名前解決のあと、[3] アクセスという流れになります。
図2. ネットワークリソースアクセスの動作イメージ(検証環境)
従来のWindowsに搭載されたDNSサーバでは、ホスト名とIPv4アドレスをマッピングするAレコードを取り扱うことができます。 Windows Server 2008 のDNSサーバでは、従来のAレコードに加えて、ホスト名とIPv6アドレスをマッピングするAAAA(クアッドA)レコードを取り扱うことができます。 従ってIPv6 / IPv4の両方が有効に設定されているホストがある場合、DNSサーバ上にはそのホストに対してAレコードとAAAAレコードの両方が存在することになります。
Aレコード | ホスト名からIPv4アドレスへマッピングするDNSレコード |
---|---|
AAAAレコード | ホスト名からIPv6アドレスへマッピングするDNSレコード |
IPv4では、DHCPサーバからIPアドレスが取得できない場合にIPアドレスを自動構成する、APIPA (Automatic Private IP Addressing) というしくみがあります。しかしながら、自動構成されたIPアドレスを使用して実際に通信が行われるケースは稀でした。
IPv6でも同様にIPアドレスを自動構成するしくみがあり、そのひとつがリンクローカルアドレスと呼ばれるものです。IPv4のAPIPAと大きく異なるのは、IPv6では各ホストがリンクローカルアドレスを持ち、このIPアドレスを使用して限られたネットワークの範囲内であればIPv6ホスト同士で普通に通信できるという点です。
なお、リンクローカルアドレスに対して、手動で設定したIPアドレスやDHCPで割当てられたIPアドレスをグローバルアドレスと言います。これはインターネット上のホストと通信ができる一意に割り当てられたアドレスです。
今回の検証では、あるクライアントからサーバへの通信の際に、ホスト名の名前解決のためにクライアントからDNSサーバに対して発行されたDNSクエリパケットの採取・解析を行い、名前解決がどのように行われるのか調査しました。
ポイントは、各コンピュータが実装する通信プロトコルの組み合せを全て網羅したことです。DNSサーバ、DNSクライアントで、それぞれIPv6 / IPv4両方、IPv6のみ、IPv4のみの3パターンあるため、合計9通りの組み合せがあります。ここでは詳しく触れませんが、実際にはアクセス先のコンピュータ(図2のhostA)の通信プロトコル実装状況も網羅しています。
また、DNSクライアントのIPv6グローバルアドレス設定の有無も考慮しました。なお、DNSサーバのIPv6プロトコルはグローバルアドレスの設定をしています。
通信を行うためには、双方が1つ以上の共通のプロトコルを実装していることが大前提となります。そのため、特にDNSサーバ側が、クライアント環境に応じたプロトコルを実装することが必要です。
IPv6 / IPv4混在環境での、通信プロトコルの選定ルール |
---|
|
表1は、DNSサーバ / DNSクライアントのIPv6 / IPv4実装状況(有効 / 無効)による通信プロトコルの一覧です。
DNSクライアント | DNSサーバ | |||
---|---|---|---|---|
IPv6 | IPv6 / IPv4 | IPv4 | ||
グローバルアドレス設定有 | ||||
IPv6 | グローバルアドレス設定有 | IPv6 | IPv6 | |
グローバルアドレス設定無 | ||||
IPv6 / IPv4 | グローバルアドレス設定有 | IPv6 | IPv6 | IPv4 |
グローバルアドレス設定無 | IPv4 | IPv4 | ||
IPv4 | IPv4 | IPv4 |
【凡例】
IPv6 : IPv6で通信
IPv4 : IPv4で通信
: DNS名前解決の通信は行われない
なお、名前解決後に行われる、目的のコンピュータへのアクセス時も、通信プロトコル選定ロジックは同じです。
DNSクライアントがDNSサーバに要求するレコードは、DNSクライアントのIPv6 / IPv4プロトコルの実装状況によって異なります。
IPv6 / IPv4のどちらか片方を実装している場合、対応するホストレコードを要求します。
IPv6 / IPv4両方を実装している場合、最初にAレコード、続いてAAAAレコードの、合計2回のクエリを実行します。その結果、AAAAレコードが得られれば、アクセス対象ホストはIPv6を実装している可能性が高いとみて、優先的にIPv6プロトコルを使用してアクセスを試みます。
DNSサーバ上にAレコード、AAAAレコードともに存在しない場合、初回のAレコード要求時にエラーが返りますので、2回目のクエリが発生することはありません。
なお、Windows Server 2008 / Windows Vistaでは、既定でIPv6が有効ですが、グローバルアドレスは持たない設定になっています。このため、そのまま運用した場合IPv6の名前解決はDNSではなく、LLMNR (Link-local Multicast Name Resolution) と呼ばれる名前解決手段を使用することになります。
IPv6 / IPv4混在環境での、クエリを行うレコード |
---|
DNSクライアントのプロトコル実装状況によってクエリ動作が異なります
|
今回ご紹介した検証例から以下のことがわかります。
最後にWindows Server 2008 でIPv6通信を始める際の注意点を紹介します。
富士通では、Windows Server 2008が導入されることによる既存運用環境への影響といった観点に重点を置き、検証を継続していきます。
【ご注意】
動作確認したWindows Server 2008は開発段階にあるため仕様変更の可能性があります。