用語辞典・IPv6・接続方式

トンネル

トンネルとは

トンネルは、あるネットワーク用のパケットを別のパケットの中へ包み、二つの終端の間を仮想的な一本の経路として運ぶ仕組みです。英語表記はtunnel(トンネル)です。包み始める装置をトンネル入口、外側の包みを外す装置をトンネル出口と呼びます。

たとえばIPv4パケットをIPv6パケットの中へ入れれば、途中のIPv6ネットワークは外側のIPv6アドレスだけを見て転送できます。内側のIPv4パケットは出口まで運ばれ、そこで取り出されます。途中のルーターに、内側の通信方式を理解させなくてよいことがトンネルの大きな役割です。

ただし、トンネルは「秘密の通路」という意味ではありません。包むことと暗号化することは別の機能です。VPNには暗号化されたトンネルもありますが、暗号化を行わないトンネルもあります。

入口で外側の封筒を足し、出口で外す中継区間は外側の宛先を使い、元のパケットは内側に保たれる
入口の装置で元のパケットを外側のパケットへ包み、中継ネットワークを通過後、出口の装置で元のパケットを取り出すトンネル通信の図解
図1トンネル区間では、外側ヘッダーが配送用の情報になります。出口の先では外側ヘッダーはなくなり、内側にあった元のパケットが次の経路へ進みます。

一つのパケットに、二組の宛先が存在する

内側は本来の通信、外側はトンネル区間の配送どの装置が、どちらのヘッダーを見るかを分けて考える
入口外側ヘッダーを追加

元のパケット全体をペイロードとして収め、出口を外側の宛先にする

中継区間外側の宛先で転送

途中のルーターは内側の宛先ではなく、出口へ向かう外側の情報を読む

出口外側ヘッダーを削除

内側のパケットを復元し、本来の宛先へ向けて転送を続ける

図2外側ヘッダーにもホップ数の上限があり、内側ヘッダーにも本来の通信に対する上限があります。トンネル方式ごとに細部は異なりますが、二つの役割を分ける見方は共通です。

往復通信には、反対向きの経路も必要になる

トンネルは本来、入口から出口へ向かう一方向の仕組みです。双方向に通信したい場合は、反対方向にも入口と出口を定めたトンネルを用意します。設定画面で一本に見えても、技術的には二方向の処理を組み合わせている場合があります。

外側の経路が変わっても、内側からは同じ仮想リンクに見えることがあります。これは拠点間接続や、あるプロトコルを直接運べない区間の通過に便利です。一方で、障害調査では内側の経路外側の経路を分けなければ、どこで止まったのか判断しにくくなります。

ヘッダーが増えるぶん、運べるデータは小さくなる

トンネル入口では外側のIPヘッダーなどが追加されます。同じ回線のMTUを使うなら、元のパケットに許される大きさは追加分だけ小さくなります。これを考慮しないと、断片化、ICMPv6のPacket Too Big、あるいは特定サイズだけ届かない問題につながります。

トンネルを何重にも重ねれば、そのたびにヘッダーと処理負荷が増えます。トンネルの仕様を確認するときは、外側プロトコル、追加されるバイト数、実効MTUを一組で確認します。

トンネルとカプセル化は同義ではない

カプセル化は、上位層のデータに制御情報を付けて下位層で運ぶ広い概念です。トンネルはその応用で、すでに完成しているパケットやフレーム全体を別の通信単位へ包み、仮想的なリンクを作ります。

また、トンネルの識別情報や外側アドレスはアクセス制御に利用できますが、それだけで盗聴や改ざんを防げるとは限りません。機密性や完全性が必要なら、IPsecなど、その性質を明示した保護方式を併用します。

仕様の確認資料:RFC 2473「Generic Packet Tunneling in IPv6」RFC 2784「Generic Routing Encapsulation」RFC 4301「Security Architecture for the Internet Protocol」

関連用語