勝手に補足−Windows Vistaで学ぶIPv6(Windows Server World 2007年9月号)

Windows Vistaで学ぶIPv6」という特集がWindows Server Worldの2007年9月号(IDG)に出ていた。Windows VistaIPv6はアプリケーションも含めほぼすべてがIPv6に対応しているし、多くの新しい標準にも対応しているので、このような特集は有用なものとなるだろう。だが、正直、内容に物足りなさを感じた。わずか10ページで解説する難しさも理解できるが、いくつか最低限必要と思われる情報が網羅されていないように思う。大きなお世話かもしれないが、ここでその足りない情報を指摘させてもらう。

PART1 IPv6の概要を理解しよう

IPv6アドレスの割り当てとリンクローカルアドレス」では、MACアドレスを基にIPv6アドレスの下位64ビットであるインターフェイスIDが生成されることが解説され、さらに次のように説明が続く。

 ただし、この方法では同じネットワークインタフェースカードを使用するかぎり、常にインタフェースIDが同じになってしまうため、悪意のあるユーザーにIPv6アドレスを突き止められたり、詐称されたりする可能性がある。そこで、DHCP (Dynamic Host Configuration Protocol) サーバを使ってアドレスの自動構成を使う方法や、アドレスを手動設定する方法がある。

まず、インターフェイスIDが同一なのを防ぐ手段としては、マイクロソフトが提唱し、実装している匿名アドレスがある。これはインターフェイスIDをランダムに生成し、定期的に更新することで、匿名性を維持する機能である。Privacy Extensions for Stateless Address Autoconfiguration in IPv6としてRFCとなっている。

ここでは、このPrivacy Extensionsの有効性(実装や運用コストに見合うだけの利点があるか)については議論しないが、Windowsは率先してこの仕様が実装されているのであるから、記事でも言及されたほうが良かったのではないか。

記事は次のように続く。

 とはいえ、いちいちアドレス割り当てのプランニング作業をユーザーが行うのは現実的ではないだろう。そこで、IPv6でもIPv4と同様に、閉じたネットワーク内でのみ通信が可能な「リンクローカルアドレス」を規定している。IPv6に対応したDHCPサーバがない場合、あるいはIPv6アドレスの手動設定を行っていない場合には、このリンクローカルアドレスを使用して通信を行うことになる。

IPv6を知っている方はすぐ気づくだろうが、ステートレスアドレス自動構成についての記述がない。ステートレスアドレス自動構成とはルータがRA(Router Advertisement)と呼ばれるメッセージでIPv6アドレスの上位64ビットであるプレフィックスを配布することで、MACから生成されたインターフェイスIDと組み合わせてIPv6アドレスを自動生成する方法だ。IPv6がネットワークのプラグアンドプレイと呼ばれる所以となるほどの有名な機能だ。これも言及すべきだったろう。でないと、この記事だけを読んだだけだと、DHCPがないとIPv6でもアドレスの自動構成はできないと思ってしまうだろう。

ちなみに、DHCPv6はRAメッセージにMフラグとOフラグというものがあり、この組み合わせで4通りの動作をする。Mフラグは管理されたアドレス構成フラグとも呼ばれ、アドレス構成をDHCPを用いて行うことを指示するものである。Oフラグはそのほかのステートフル構成フラグと呼ばれるもので、アドレス以外の情報をDHCPを用いて行うことを指示する。次に示す4つがその組み合わせだ。

  • M=1 and O=1 : アドレス構成にもそれ以外の情報(DNSサーバーのアドレスなど)にもDHCPv6を用いる。これをDHCPv6ステートフルと呼ぶ。
  • M=1 and O=0 : アドレス構成にはDHCPv6を用いるが、それ以外の情報(DNSサーバーのアドレスなど)は別の方法(手動など)で行う。これをDHCPv6ステートレスと呼ぶ。
  • M=0 and O=1 : アドレス構成にはRAを用い、それ以外の情報(DNSサーバーのアドレスなど)はDHCPv6を用いる。
  • M=0 and O=0 : DHCPv6を使用しない。

さらに脱線すると、DHCPv6プロトコルについてはThe Cable Guyに解説があるが、日本語の訳は間違っているようだ。こちらも注意されたい。

PART3 インターネットとIPv6

「コラム2 トンネリング通信とネイティブ通信」では次のように書かれている。

 実は、WindowsXPやWindows Server2003でもIPv6は利用できた。しかし、これらのOSではIPv6によるネイティブ通信ではなく、IPv4ネットワークを介して「トンネリング」する方法を既定としていた。

Windows XPWindows Server 2003ではIPv6のみでは動作しないネットワーク機能があると言いたかったのかもしれないが、Windows XPWindows Server 2003でも、もちろんIPv4によるトンネリングではなく、ネイティブでの通信は可能だ。

以上、勝手に補足させていただいた。

IDGや記事を書かれた方を責めるつもりはまったくない。誤解される可能性のある情報があるとつい補足したくなってしまうので、今回もおせっかいかもしれないが、補足させてもらった。もし、気を悪くされたら、ごめんなさい。