通信する双方の当事者と、その両者を結ぶネットワークがすべてIPv6を"しゃべれる"状態になっていれば、エンド・エンドでIPv6の通信が成立する。ところが、双方の当事者がIPv6対応ホストであっても、両者を結ぶネットワークがIPv4しか使えない状態では、結果的にIPv6ネットワークの離れ小島ができてしまい、エンド・エンドでIPv6の通信を行えない。

したがって、たとえばインターネット接続でIPv6を利用しようとすれば、自分が契約しているISP(Internet Service Provider)がIPv6対応サービスを提供していて、ユーザーにIPv6アドレスを割り当てるようになっている必要がある。そうなっていなければIPv4アドレスしかないので、必然的に離れ小島になってしまう。

なお、主要ISP各社のIPv6への対応状況については、社団法人日本インターネットプロバイダー協会(JAIPA)のWebサイトにリンクがまとめられているので、そこから自分が利用しているISPへのリンクをたどることで確認できる。

・ISPのIPv6対応について(日本インターネットプロバイダー協会)

IPv6 over IPv4トンネルの手法いろいろ

エンド・エンドでIPv6による通信を行えない場合の解決策として登場したのが、IPv6 over IPv4トンネリングだ。

トンネリングとは、早い話がIPv4ネットワークを行き来するIPv4パケットのペイロード部にIPv6パケットをカプセル化してやり取りする手法のことだ。IPv6 over IPv4トンネルという名称は、そこから来ている。

インターネットVPN(Virtual Private Network)ではIPv4パケット同士をカプセル化して、さらに暗号化によって安全性を確保している。カプセル化するという点ではIPv6 over IPv4トンネルも同じことだが、VPNと違って暗号化するとは限らない。

IPv6 over IPv4トンネルの手法としては、「6to4」と「Teredo」がよく知られている。このほか、「6over4」と「ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)」もある。いずれもトンネリングを行う点は同じだが、トンネリングを実現する方法に違いがある。

6to4はIPv6ネットワーク同士のトンネリングを想定しており、IPv6ネットワークとIPv4インターネットの境界に6to4ルータを必要とする。そして、グローバルIPv4アドレスを持つサイトに対して、「2002:<IPv4アドレス>::/48」という内容のユニークなIPv6アドレスを割り当てた上で、6to4対応ルータ同士でトンネリングを行う。

それに対して6over4は、IPv4ネットワークの中に孤立したIPv6対応ノードが散在している状況を想定している。基本的な考え方は、IPv6対応ノード同士を結ぶIPv4ネットワークを仮想的にレイヤー2のイーサネットと見なすというもの。ただしIPv4マルチキャストを使用するため、IPv4マルチキャストに対応したルータが必要になる。

ISATAPは、ローカルIPv4ネットワーク内に存在するIPv6対応ノード同士でトンネリングによる通信を行うもので、IPv4アドレスに基づいて「::5efe:<IPv4アドレス>」という内容を持つISATAPインタフェース識別子を割り当てる。同一サブネット内のIPv6対応ノード同士と、ISATAPルータを介した他のサブネットとの通信のいずれでもカプセル化を行う。

Teredoの特徴とメリット

Teredoの場合、クライアントPCと通信対象になるホストの間にTeredoサーバが介入する。そして、カプセル化によるやり取りを行うのはクライアントPCとTeredoサーバの間である。つまり、こういうことだ。

クライアントPC = (IPv6 over IPv4) = Teredoサーバ = (IPv6) = 目的のホスト

この方法では、クライアントPCとTeredoサーバの間でトンネリングを行う。そこから先のIPv6通信はTeredoサーバと対象ホストの間のやり取りになるので、クライアントPCはTeredoサーバとの間でトンネルを確立しておけばよい。

そして、クライアントPCとTeredoサーバの間で行うカプセル化はIPv4とUDP(User Daragram Protocol)の組み合わせを使用している。また、NAT(Network Address Translation)やIPマスカレードといったアドレス変換機能を用いていても、問題なくトンネリングを行える。

ということは、現時点でもっとも一般的なインターネット接続環境である、「プライベートIPアドレスとIPマスカレードの組み合わせでインターネット接続を行っているクライアントPC」がインターネット上のIPv6対応ホストと通信する際の手法として、もっとも確実性が高いといえる。クライアントPCでTeredoに対応したオペレーティングシステムが稼働していれば、それだけで利用できる点がポイントだ。

なお、Windows XPとWindows Server 2003のうち以下の製品でもIPv6のプロトコルスタックを後からインストールしてTeredoを利用できる。

・Advanced Networking Pack for Windows XPを備えたWindows XP SP1
・Windows XP SP2
・Windows Server 2003 SP1

ただし、これらの製品では初期状態でTeredoが無効になっているので、「netsh interface ipv6 set teredo client」コマンドを実行してTeredoを有効化する作業が必要になる。

いささか古い資料だが、WindowsにおけるTeredoの利用については、以下のサイトが参考になるだろう。

・Microsoft IPv6 - Teredoの概要