トンネリングとは、あるネットワークから別のネットワークにパケットを移動させる方法です。トンネルはカプセル化(パケットを別のパケットの中に包むこと)によって機能します。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
物理的な世界では、トンネルは通常では越えられない地形や境界を越えるための方法です。同様に、ネットワークの世界でのトンネルは、そのネットワークでサポートされていないプロトコルを使用して、ネットワーク上でデータを転送するための方法です。トンネルは、パケットをカプセル化することによって機能します。パケットは他のパケットでラッピングされます。(パケットとは、送信先でより大きなファイルに再度組み立てることができる小さなデータ片のことです)
トンネリングは仮想プライベートネットワーク(VPN)でよく使用されます。ネットワーク間の効率的で安全な接続を確立し、サポートされていないネットワークプロトコルの使用を可能にし、場合によってはユーザーがファイアウォールをバイパスすることができるようにもします。
ネットワーク上を移動するデータは、パケットに分割されます。一般的なパケットは、パケットの宛先や使用するプロトコルを示すヘッダーと、パケットの実際の中身であるペイロードの2つの部分で構成されています。
カプセル化されたパケットは、本質的に別のパケットの中にあるパケットです。カプセル化されたパケットでは、最初のパケットのヘッダーとペイロードは、周囲のパケットのペイロードセクションの中に入ります。元のパケットそのものはペイロードとして扱われます。
すべてのパケットは、ネットワークプロトコル(データの標準的なフォーマット方法)を使用して、宛先に到達します。しかし、すべてのネットワークがすべてのプロトコルをサポートしているわけではありません。ある企業が、オフィスAとオフィスBを結ぶ広域ネットワーク(WAN)を構築しようとしたとします。この企業は、インターネットプロトコル(IP)の最新バージョンであるIPv6プロトコルを使用していますが、オフィスAとオフィスBの間にはIPv4のみをサポートするネットワークが存在しています。同社は、IPv6パケットをIPv4パケットの中にカプセル化することで、IPv6を使用し続けながら、オフィス間で直接データを送信することができるようになります。
また、暗号化されたネットワーク接続に対してもカプセル化が有効になります。暗号化は、秘密の暗号化キーを使用しないとスクランブルを解除することができないような方法でデータをスクランブルするプロセスです。暗号化を解除するプロセスは復号化と呼ばれます。パケットがヘッダーを含めて完全に暗号化されている場合、ネットワークルーターは鍵を持たずヘッダーを見ることができないため、パケットを目的地に転送することができません。暗号化されたパケットを別の暗号化されていないパケットで包むことで、パケットは通常のようにネットワーク上を移動できるようになります。
VPNは、一般に共有されているネットワークの上で行われるセキュリティで保護された暗号化接続です。トンネリングは、VPNパケットが意図した宛先に到達するためのプロセスであり、通常はプライベートネットワークです。
多くのVPNは、IPsecプロトコルスイートを使用しています。IPsec は、ネットワーク層でIPの上で直接動作するプロトコル群です。IPsecトンネル内のネットワークトラフィックは完全に暗号化されていますが、ネットワークまたはユーザーデバイスのいずれかに到達すると復号化されます。(IPsecには「トランスポートモード」と呼ばれる、トンネルを作成しないモードもあります)。
VPNでよく使われるもうひとつのプロトコルにTransport Layer Security(TLS)があります。このプロトコルは、OSI参照モデルの解釈によって、レイヤー6またはレイヤー7で動作します。TLSは、SSL(Secure Sockets Layer)と呼ばれることもありますが、SSLは使用されなくなった古いプロトコルを指します。
通常、ユーザーが自分のデバイスをVPNに接続すると、すべてのネットワークトラフィックがVPNトンネルを通過します。スプリットトンネルを使用すると、一部のトラフィックをVPNトンネルの外に出すことができます。つまり、スプリットトンネル機能によって、ユーザーのデバイスは、パブリックネットワークとプライベートネットワークの2つのネットワークに同時に接続することができるようになります。
Generic Routing Encapsulation(GRE)は、数あるトンネリングプロトコルのうちの1つです。GREは、あるルーティングプロトコルを使用するデータパケットを、別のプロトコルのパケット内にカプセル化します。GREは、別々のネットワーク間の接続を簡略化する目的で、ネットワーク上で直接二点間接続を確立する方法の1つです。
GREは各パケットにGREヘッダーとIPヘッダーの2つのヘッダーを追加します。GREヘッダーは、カプセル化されたパケットで使用されるプロトコルタイプを示します。IPヘッダーは、元のパケットのIPヘッダーとペイロードをカプセル化します。GREトンネルの両端のルーターだけが、元の非GRE IPヘッダーを参照します。
IP-in-IPは、IPパケットを他のIPパケット内にカプセル化するためのトンネリングプロトコルです。IP-in-IPはパケットを暗号化しないため、VPNには使用されません。主な用途は、通常では利用できないネットワーク経路を設定することです。
Secure Shell(SSH)プロトコルは、クライアントとサーバーの間に暗号化接続を確立し、セキュリティで保護されたトンネルを作るために使用することもできます。SSHは、OSI参照モデルのレイヤー7(アプリケーション層)で動作します。対して、IPsec、IP-in-IP、GREはネットワーク層で動作します。
トンネリングプロトコルにはGRE、IPsec、IP-in-IP、SSHのほか、以下のようなものがあります:
Cloudflare Magic Transit は、オンプレミス、 クラウド 、および ハイブリッドネットワークインフラストラクチャをDDoS攻撃およびその他の脅威から保護します。Magic Transitが機能するためには、Cloudflareのネットワークがお客様の内部ネットワークにセキュリティで保護された接続がされている必要があります。Cloudflareはこの接続を形成するためにGREトンネリングを使用しています。GREトンネリングにより、Magic Transitはパブリックインターネット上でCloudflareのお客様のネットワークに安全に直接接続することができます。