IPv6再発見 第2回 IPv6とプラグアンドプレイ

IPv6再発見 第2回 IPv6とプラグアンドプレイ

タグ:
藤崎 智宏
NTT情報流通プラットフォーム研究所


 IPv6の特徴の1つに、プラグアンドプレイが挙げられる。これは、IPv6対応機器をネットワークにつなげる際、特別な設定が不要だということだ。例えば、イーサネットケーブルのプラグをネットワークポートに差し込むだけで、インターネット通信が可能になる。この現象だけをみると、既存のIPv4インターネットの環境でも、例えばPPPやDHCPでは同等に実現されていると思うかもしれない。半分はその通りである。
 しかし、インターネットが一般に普及し始めた当初は、マシンをインターネットに接続するための設定は非常に煩雑であり、IPアドレス、ネットマスク、ディフォルトルータやDNSを含む各種サーバアドレスを手動で設定する必要がある場面も少なくなかった。ダイアルアップ接続で利用されたPPPでは、アドレスやデフォルトルータは設定されるが、DNSサーバを手動設定する必要のあるISPも多かった。
 企業内でイーサネットのようなLANに機器をつなぐときにも状況は同じで、設定の間違いにより接続できないといったトラブルも多かった。LAN環境ではようやくDHCPが利用可能になり、多くの機器はアドレスやネットワークパラメータの自動設定が可能にはなったが、DHCPの導入が始まった当初は相互接続性にも問題が発生することも多く、機器によっては設定できないといった事態も発生した。これらの問題の多くは、IPv4においては自動設定機構は標準仕様の一部でなく、後付けであったことに起因する。
 これらの状況に鑑み、IPv6では機器のインターネットへの接続を極力簡単にするために、標準仕様の一部としてプラグアンドプレイ機構(アドレス自動設定機構)が定義されている。


IPv6の自動設定機構の概略

 IPv6では、ネットワークインタフェースが存在する場合に何もしなくてもアドレスが割り当てられるというのが、IPv4との大きな違いの1つである。インタフェースに自動的に付与されるこのアドレスを、リンクローカルアドレスと呼ぶ。リンクローカルアドレスの付与は、IPv6自動設定機構の一部として実施される。

例1●Windows XPではじめからついているIPv6アドレス
Ethernet
Controller (3C905C-TX Compatible)
       Physical Address. . . . . . . . . : 00-06-5B-xx-xx-xx
       Dhcp Enabled. . . . . . . . . . . : No
       IP Address. . . . . . . . . . . . : xxx.xxx.xxx.xxx
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       IP Address. . . . . . . . . . . . : fe80::206:5bff:xxxx:xxxx%4
       Default Gateway . . . . . . . . . : xxx.xxx.xxx.xxx
       DNS Servers . . . . . . . . . . . : xxx.xxx.xxx.xxx
                                           fec0:0:0:ffff::1%1
                                           fec0:0:0:ffff::2%1
                                           fec0:0:0:ffff::3%1

 上記の例1は、Windows XP SP2において、IPv6をenableにしたときにイーサネットインタフェースにつくアドレス群である。「IP Address」の、fe80:: で始まるアドレスが、IPv6リンクローカルアドレスである。
 冒頭で、IPv4のDHCPやPPPにおける自動設定とIPv6の自動設定は半分だけ同じようなものと述べたが、違うのはこの部分だ。IPv6では、アドレスを割り当てるサーバやルータが存在しない場合でも、ネットワークに接続されると自動的にリンクローカルアドレスが利用可能となり、ネットワーク通信ができるようになる。機器同士をネットワークケーブルでつなぎ、スイッチを入れれば、何がなくとも通信が可能となること、これがIPv6のプラグアンドプレイの特徴である(ただし、あくまでIPレベルでの通信が可能になるだけであり、通信相手の発見には別な機構が必要)。
 このリンクローカルアドレスは、文字通り1つのリンク(単一のイーサネットセグメント内)に閉じているアドレスであり、そのリンク上でのみアドレスの一意性が保証される。余談だが、IPアドレスは通信範囲内で一意(ユニーク)であることが大前提である。つまり、IPv4では32bitのグローバルアドレスによりIPv4インターネット内での一意性を保っており、プライベートアドレスは特定の範囲内での一意性を担保する。
 IPv6の自動設定機構では、リンクローカルアドレスのリンク上での一意性を確保するために、
  • 一意性が保証されているリンク層アドレス(MACアドレス)の利用
  • 一意なリンク層アドレスが利用できない場合にはランダム値の利用
 が仕様化されており、この上で、アドレスが重複していないかを検査する機構(DAD:Duplicate Address Detection)を必ず実施することが決められている。

 さて、この先にIPv6アドレスの(自動)設定、すなわちIPv4で言えば「DHCPによるIPアドレスの払い出し」が実施される。ここで割り当てられるアドレスが、単一リンクを越えた通信が可能となるアドレスである。
 IPv6では、この部分でのアドレス自動設定に、ステートレス自動設定と、ステートフル自動設定の2種類の機構が用意されている。それぞれの主な違いは、割り当てる側(サーバやルータ)が、割り当てた対象(端末など)の情報を管理するか否かである。すなわち、ステートレス自動設定はアドレスがついた対象を把握せず、ステートフル自動設定では、アドレスを割り振った対象を記憶する。それぞれの自動設定は排他的ではなく、例えばアドレス割り当てにはステートレス自動設定を用いるが、その他のパラメータの取得にはステートフル自動設定を用いる、といった使い方も想定されている。
 なお、現在RFCとなっている文書では「ステートフル」という言葉が使用されているが、検討中の改訂文書では「DHCPv6」に置き換えられている。これは、文脈上、パラメータ割り当てが必ずしもステートフルでない場合があるためで、明示的に利用プロトコルを示すように変更された。本稿では、今現在の表記に従い、ステートフル自動設定という言葉を用いる。

ステートレス自動設定

 ステートレス自動設定は、IPv6で新たに導入された自動設定手法である。ステートレス自動設定ではホストに手動の設定は必要なく、ルータへの設定のみでよい。他にサーバも必要としない。
 IPv6のステートレス自動設定では、機器が機器自身の持っている情報(リンク上で一意なインタフェース識別子)と、ルータから通知された情報(ネットワークを識別するプレフィックス)を組み合わせてアドレスを生成する。具体的には、IPv6アドレス128bitのうち、下位64bitを機器のインターフェスが持つMACアドレスなどから生成し、ルータから通知された上位64ビットのネットワークプレフィックスを結合することで、128bitのIPv6アドレスを作り出す。
 ステートレス自動設定では、アドレス情報以外にもネットワークMTUを配布することが可能である。

ステートフル自動設定(DHCPv6)

 ステートフル自動設定は、IPv4でのDHCPでのアドレス設定とほぼ同等である。違いは、
  • 同一リンク上の DHCPサーバ/リレーエージェントとの通信の際にリンクローカルアドレスが利用できる。IPv4では、ブロードキャスト等を利用する必要がある。
  • IPv6では、機器が複数のアドレスを持つことができるため、複数のアドレスを同時に付与することができる。
 等である。DHCPv6では、ステートレスな情報の配布も可能である(RFC3736)。

IPv6における自動設定の歴史

 IPv6ステートレス自動設定は、IPv6自身が標準化された当初からその機能の1つとして同時に検討され(RFC1971;1996年8月)、6bone等のネットワークでIPv6が利用されるようになった当時から使用可能であった(RFC2462;1998年12月)。一方、ステートフル自動設定については、その名称自体は標準仕様に定義されていたものの、実際の標準仕様としてRFC化されたのが2003年7月であり、今現在でもそれほど利用されていない。DHCPv6のサーバもいくつかの実装が出始めているが、現状、相互接続性に問題があるものもあり、実際に利用されるようになるためには今少し時間がかかると思われる。
 一方、ステートレス自動設定は非常に簡便で、ネットワークを構築する側、利用する側双方にとって使いやすい機能である。多くのIPv6対応ルータでは、自動設定機能をonにする、つまりルータ広告(RA:Router Advertisement)を使用とすることにより、そのインタフェースに付与されたアドレス情報を自動的にリンク上に広告するようになる。ネットワークに接続される機器側では、多くの場合、IPv6機能をonにするだけで、ルータからの広告を受け取りIPv6インターネットに接続できるようになる。
 ただし、この簡便さの副作用のような、いくつかの問題が潜んでいる。誰でも認証なしに接続できてしまうという問題については後述するが、それ以外にも嘘のルータ広告をすることでネットワークを混乱させたり、IPv6通信自体を正規のルータ以外経由にすることが比較的容易である。実際に、複数のネットワークインタフェースを持っている場合に設定次第でルータ広告をしてしまう実装も存在し(昨今の多くのノートPCは、無線インタフェースと有線インタフェースを持っている)、イベント会場などのネットワークで混乱が起きたという現象も報告されている。
 このような事態をさけるために、ルータ広告のようなネットワーク情報のパケットを認証すること(RFC3756)や、ルータ広告に優先度をもうけること(Internet Draftとして検討中)が存在するが、どちらにしても機構の簡便さとは反することもあり、広く利用されるかどうかは今後の動向次第である。
 さらに、昨今のネットワークセキュリティ強化の流れから、ネットワーク利用者を限定し、特定の機器以外のネットワークアクセスを許可しないという環境も多くなってきた。IPv4のDHCP環境でも、詐称を防ぐことができないためセキュリティ的に不完全とはいえ、MACアドレスでの認証が実施されている場合も多い。IPv6ステートレス自動設定は、そもそもネットワークにつながる機器を区別しない「ステートレス」な設定であり、こういった場面での利用は難しい。DHCPv6を利用することができればよいが、そうでない場合には、他層の認証(802.1xなど)と組み合わせた利用が必要である。


アドレス以外のパラメータについて

 実際にインターネットを利用する場合には、アドレス情報以外にもいくつかのパラメータが必要となる。その代表的なものはDNSサーバのアドレスであり、その他にも、時刻設定のためのNTPサーバのアドレス、SIPサーバのアドレスなどが必要となる場合がある。特に、DNSサーバのアドレスは、人が認識可能なホスト名を実際のIPアドレスに変換するために必須である。しかしながら現状では、IPv6においてこのDNSサーバアドレスの自動設定ができる実装は多くない。
 その理由の一部は、前述したようにDHCPv6が利用可能になったのが最近であり、DHCPを利用可能な実装が多くないという点である。この状態で今まで問題が起きなかったのは、今現在の多くの環境もそうであるが、IPv6のみしか利用できないネットワークはほとんどなく、IPv6/IPv4デュアルスタックネットワークが一般的であるためだ。現状のIPv6実装の多くは、DNSサーバをIPv4で利用している(IPv4のDNSサーバのアドレスは、DHCPなどの手段で取得する)。
 なお、DNSのIPv6対応には、2つの注意点がある。1つはIPv6アドレスが登録でき、ホスト名をIPv6アドレスに変換できることであり、もう1つはDNSサーバに「IPv6トランスポート」で通信可能であることである。両者は混在して扱われることもあり、この2つの区別は重要である。
 また、標準化的にも、DNSサーバアドレスの取得(DNS Server Discovery)は混乱した経緯がある。今現在、RFCとして利用可能なものは、DHCPv6を使ったサーバアドレスの通知であるが、提案としては、これ以外にも、
  • ステートレスアドレス自動設定(ルータ広告)でDNSサーバのパラメータを通知する
  • DNSサーバに、既知の(well-knownな)アドレスを付与する
の2つが挙がっており、この3つを一本化するのか併用するのかについて、はっきりとした結論は出ていない。特に、ルータ広告を使う手法については、DHCPのようなそこそこ大きな機能を実装することが困難なデバイスにおいて有効であるという意見があり、現在も提案が続いている。

 現在、インターネットに機器を接続することは非常に容易になり、IPv6の自動設定機構はそれほど目新しくは見えない。また、機器の実装的にも、サーバアドレス等のパラメータ取得部分など、まだ不足している部分もある。自動設定機構はいわば、あたり前の機能として、インターネットの裏側を支えていくであろう。
 また一方で、従来IPv4が利用されていなかった場面でのIPv6利用が増加していくことが想定されており、そのような場面で今後、自動設定としてどのような仕組みが必要かの検討は必須であろう。

この記事のトラックバックURL

http://www.ipv6style.jp/trackback/240
Ads by Google

IPv6ブログ