IPv6入門 第五回 離れたv6ネットをv4で中継させる

 “トンネル”とは,パケットをそのままでは送らずに,別のプロトコルのパケットでくるんで送 る技術のこと。IPv6の世界では,IPv6パケットをIPv4のパケットで包んで送る技術を指す。パケットを包む手順は,カプセル化と呼ばれる。
 なぜトンネルのような技術が必要なのかというと,IPv4でしか通信できないネットワークを飛び越してIPv6パソコン同士をつなぎたいというニーズを満たしたいから。例えば,IPv6の実運用を始めようとしても,ユーザーもインターネット接続事業者(プロバイダ)もすべての設備を一気にIPv6対応に置き換えるのは難しい。ネットワークの一部にIPv4ネットが残ることは避けられないケースが大半だろう。
 こんなとき,トンネルが役に立つ。IPv6パケットをIPv4パケットで運ぶので,IPv4ネットワークを介してIPv6パケットを中継できる。IPv4インターネットを使う環境でも,IPv6ネットを構築したりIPv6ネット間でIPv6パケットをやりとりできるようになるわけだ。
 トンネルはあくまで論理的なIPv6専用回線を作るだけなので,トンネルを使うためにわぎわぎ新しい回線を用意する必要はない。IPv4ネットとIPv6ネットの境界点付近に,トンネル・サーバーと呼ばれる装置を用意すればよいだけである。パケットがトンネル・サーバーを通過すると,パケットはカプセル化されたり逆にカプセル化が解かれる。トンネル・サーバーにしかるべき設定を施しておくことで,IPv4を転送する物理回線の中にIPv6トンネル用の仮想回線が作られるしかけである。
 トンネル・サーバーと言っても,なにか特別なサーバー製品を買ってこなければならないわけではない。IPv6対応ルーターや,IPv6に対応したOSには,たいていトンネル・サーバー機能が標準で組み込まれている。IPv6対応のルーターかパソコンを用意して,トンネル・サーバー機能をオンにすればいいだけだ。
 実際にトンネルが使われる場面としては,プロバイダのトンネル・サービスと呼ばれるインターネット接続サービスの付加サービスを利用するケースがある。

トンネルとは?
図1 トンネルとは?

 IPv6の運用上の問題点を洗い出すための世界的な実験ネットワークとして6boneがあるが,6boneも実は大部分でトンネルをベースに作られてきた。トンネル技術がなければ,全世界をまたにかけたIPv6の実験は成り立たない。IPv6の普及は今より大きく遅れただろう。
 トンネルはあくまで論理的なIPv6専用回線を作るだけなので,トンネルを使うためにわぎわぎ新しい回線を用意する必要はない。IPv4ネットとIPv6ネットの境界点付近に,トンネル・サーバーと呼ばれる装置を用意すればよいだけである。パケットがトンネル・サーバーを通過すると,パケットカプセル化されたり逆にカプセル化が解かれる。トンネル・サーバーにしかるべき設定を施しておくことで,IPv4を転送する物理回線の中にIPv6トンネル用の仮想回線が作られるしかけである。
 トンネル・サーバーと言っても,なにか特別なサーバー製品を買ってこなければならないわけではない。IPv6対応ルーターや,IPv6に対応したOSには,たいていトンネル・サーバー機能が標準で組み込まれている。IPv6対応のルーターかパソコンを用意して,トンネル・サーバー機能をオンにすればいいだけだ。
 実際にトンネルが使われる場面としては,プロバイダのトンネル・サービスと呼ばれるインター ネット接続サービスの付加サービスを利用するケースがある。

典型的なトンネルの利用事例 図2 典型的なトンネルの利用事例

トンネル・サービスは,IPv4インターネットを経由してIPv6インターネットにもアクセスできるサービス。ユーザーとプロバイダがIPv4パケットをやりとりする点はこれまでのインターネット接続サービスとなんら変わりないが,プロバイダ側にトンネル・サーバーを用意してある点が異なる。ユーザーが自宅側にトンネル・サーバーを用意すれば,プロバイダ側のトンネル・サーバーを介してIPv6インターネットヘアクセスできる。現在プロバイダが提供中のIPv6接続サービスのほとんどは,このトンネル・サービスである。
 トンネルの利用例としては,社内LANに自営のIPv6ネットを試験的に構築するケースも考えられる。トンネルを活用すれば,今のIPv4ネットのままで,社内LANのあちこちにIPv6ネットを作り,それらを相互に結びつけることができる。たとえば支社Aと支社BのIPv6ネットがあったとき,それぞれの支社にトンネル・サーバーを置けlカPv4の社内ネット経由で接続できる。

トンネルのしくみ 図3 トンネルのしくみ

 トンネルの動作原理を,上図を見ながら追ってみよう。トンネル・サーバーは,パケットを受け取るとパケット中のあて先IPv6アドレスを取り出して,どのインタフェースに転送すべきかをルーテイング・テーブルをチェックして調べる。その結果,トンネル1を送信するとわかったら,あらかじめ設定してあるトンネル1の定義を調べる。トンネルの定義には,トンネル・サーバー自身のIPv6アドレスとIPv4アドレス,そして対向となるトンネル・サーバーのIPv6アドレスとIPv4アドレスが書かれてある。
 次に,定義に書かれてあるIPv4アドレスを使って,IPv4ヘッダーを作る。トンネル入口IPv4アドレスを送信元IPv4アドレスに,トンネルの出口IPv4アドレスをあて先IPv4アドレスのフィールドに書き込む。さらに,プロトコル番号のフイールドは41番とする。この41番は,カプセル化してあるという意味。相手側のトンネル・サーバーは,プロトコル番号が41番であることから受け取ったIPv4パケットがトンネル用にカプセル化されたIPv4パケットだと判断する。
 カプセル化されたIPv4パケットは見かけはふつうのIPv4パケットとなんら変わらない。このため,IPv4ネットを構成するIPv4ルーターはあて先IPv4アドレスを基に中継処理を繰り返し,相手側のトンネル・サーバーに届ける。
 相手側トンネル・サーバーは,受け取ったIPv4パケットのプロトコル番号を調べる。41番だったら,トンネルの定義を参照する。送信元IPv4アドレスがトンネル出口IPv4アドレスと同じかどうか,あて先IPv4アドレスはトンネル入口IPv4アドレスと同じかどうかをチェックする。なぜわざわざもう一度トンネルの定義と照らし合わせるのかというと,自分あてではないIPv6パケットを受け取ってしまうのを防ぐためである。トンネルの定義とマッチしたら,IPv4ヘッダーを捨ててカプセル化を解き,IPv6ネットワークヘIPv6パケットを転送する。
 トンネルを使う場合はトンネルの出口がどこにあるのかを知っておきたい。トンネルの定義のしかたによっては,最終的な通信相手となるIPv6マシンと出口のトンネル・サーバーが物理的に離れた場所にあるケースも生じる。パケットが遠回りしてしまうわけだ。
 例えば,日本のIPv6ネットを米国西海岸のIPv6ネットと結ぶ場合,トンネルの出口を米国東潅岸に設定してしまうと,IPv6パケットはいったん東海岸まで転送されて,そこから西海岸まで戻る形になってしまう。IPv6の世界では経由するルーターは1台でも,IPv4の世界でルーターを何台も経由するのでは効率が悪い。
 利用にあたって注意が必要なのは,アドレス変換機能を混在利用しないこと。トンネルの途中にあるルーターやファイアウォールのアドレス変換機能がオンになっていると,トンネルがうま く動作しなくなることがあるからだ。とくにSOHOルーターなどに実装されたNAPTが介在するケースでは,ほとんどの場合で動作しなくなる。原因は,NAPTがパケットのヘッダー中のポート番号も変換してしまうからだ。
 詳しく説明しよう。単純なアドレス変換のNATは,IPv4ヘッダー中の送信元IPv4アドレスを書き換えるだけだが,NAPTではIPv4ヘッダーに続くIPv4のTCP/UDPヘッダーの送信元ポート番号も書き換える。ところがプロトコル番号41が付いたトンネル用のパケットでは,IPv4ヘッダーに続くのはIPv6ヘッダー。IPv4のTCP/UDPヘッダーではない。

アドレス変換ルーターがあるとトンネルはうまく機能しないことがある 図4 アドレス変換ルーターがあるとトンネルはうまく機能しないことがある

こうしたことから,IPv4パケットだと思ってポート番号を書き換えてしまうと,IPv6ヘッダーを書き換えることになってしまうのだ。
 NAPTと同時にNATをオンにすれば,実装や設定によってはうまくトンネル・パケットを通過させられる場合もある。ただそうでない場合がほとんどなので,トンネルとアドレス変換機能は相性が悪いといえるだろう。
 最後に,トンネルについて勘違いしてほしくないことを一つだけ。トンネルは,IPv6対応パソコンとIPv4パソコンを通信させる技術ではない。IPv6パケットとIPv4パケットを相互変換する技術はまた別にある。

トップページへ

IPv6入門 第四回へ  IPv6入門 第六回へ