トンネリング プロトコル: あるプロトコルが別のプロトコルをラップする方法
トンネリング プロトコルは、あるプロトコルのパケットを取得し、それを別のプロトコルのパケット内にラップします。これが、VPN の仕組み、IPv6 が IPv4 インターネット経由で世界中に到達する仕組み、企業ネットワークが大陸にまたがる仕組み、そして SSH がホテルのファイアウォールを介してホーム ネットワークに到達する仕組みです。これは、トンネリングとは実際には何なのか、そして重要なプロトコルについて説明するものです。
記事全文は以下に英語で記載されています。
核となるアイデア
A トンネリング プロトコルは、あるプロトコルのパケットを取得し、それを別のプロトコルのペイロード内にラップし、通常は元のパケットを伝送しないネットワークを介して結果を送信します。このラッピングは、encapsulation と呼ばれます。ラップされたパケットは、外側のプロトコルのみを理解するネットワークを通過し、遠端でラップが解除されます。
実際には、IPv4 パケット内にラップされた IPv6 パケットは、IPv4 のみのネットワークを通過できます。 IP パケット内にラップされたイーサネット フレームは、2 つの LAN 間のパブリック インターネットを通過できます。 HTTPS 内にラップされた TCP 接続は、ポート 443 のみを許可するファイアウォールを通過できます。
トンネリングが存在する理由
- プロトコル ブリッジ: 新しいプロトコルをネイティブでサポートしていないネットワーク上で実行します。 IPv6-over-IPv4 (Teredo、6in4) は典型的な例です。
- Security: 安全でないプロトコルを暗号化されたプロトコルの中にラップします。 SSH 経由の SMB、TLS 経由のプレーン HTTP (= HTTPS)、IPsec.
- ネットワーク仮想化 経由の企業トラフィック: 物理的に別々の 2 つのネットワークを 1 つのように動作させます。 Tailscale、ZeroTier、MPLS L3VPN、VXLAN - すべて内部でトンネリングを使用します。
- ファイアウォール トラバーサル: ブロックされたプロトコルを許可されたプロトコルの内側にラップします。 OpenVPN-over-TCP/443 は、他のすべてをブロックしているファイアウォールに対して HTTPS のように見えます。
- リモート アクセス: 社外の従業員に企業ネットワーク内の IP アドレスを与えます。企業の VPN は構造的にトンネルです。
主要なトンネリング プロトコル
VPN 中心の
- WireGuard — モダン、高速、独自の意見。 UDP のみ。
- OpenVPN — 柔軟な、TLS ベースで、TCP または UDP 上で実行されます。 HTTPS として非表示にできます。
- IKEv2/IPsec — ネイティブのモバイル/エンタープライズ オプション。
- L2TP/IPsec — レガシー、二重カプセル化、遅い.
- PPTP — 歴史的に一般的でしたが、2012 年に決定的に壊れました。
- SSTP — Microsoft の TLS トンネル VPN プロトコル、Windows のみの起源。
IP-in-IP
- GRE (Generic Routing Encapsulation) — Cisco が開発し、IP 内に任意のネットワーク層プロトコルを伝送します。多くのエンタープライズ VPN セットアップの基盤と、NVGRE.
- IP-in-IP などの L3 アンダーレイ — 最も単純なケース、IP パケットを別のパケット内にラップするだけです。 RFC 2003.
- Teredo — NAT の背後にあるホストの IPv6 over IPv4 トンネリング。 Microsoft が開発。
- 6in4 - 手動で構成された IPv6-over-IPv4 トンネル。トンネル ブローカー サービスでよく使用されます。
- 4in6 - 逆方向、IPv4 オーバーIPv6.
データセンター オーバーレイ
- VXLAN — 仮想拡張可能 LAN。イーサネット フレームを UDP 内にラップします。最新のデータセンターにおける主要なオーバーレイ プロトコル。
- GENEVE — VXLAN のより新しく、より柔軟な競合製品。一部のクラウド プロバイダー アンダーレイで使用されます。
- NVGRE — Microsoft の GRE ベースのバリアント。
SSH トンネル
SSH は、ローカル ポート フォワーディング (SSH を介してローカル ポートをリモート アドレスにルーティングする)、リモート ポート フォワーディングの 3 つの転送モードをサポートします。 (その逆)、および動的 SOCKS プロキシ (SSH を一般的な SOCKS5 プロキシとして使用)。トンネリングのすべてのバリアント: SSH は、暗号化されたチャネルで任意の TCP トラフィックをラップします。古典的なコマンド ssh -L 5432:database.internal:5432 Jumpbox はトンネルです。
HTTP/HTTPS トンネル
送信ポート 443 のみを許可する企業ネットワークの場合、corkscrew などのツールhttptunnel、および Cloudflare Tunnel は、HTTP CONNECT リクエストまたは WebSocket 接続内で任意の TCP をラップします。直接接続よりも効率が低くなります。信頼できる最終手段の回避策。
TCP-over-TCP メルトダウン
VPN 導入における最も一般的な運用上の落とし穴。別の TCP 接続 (ユーザーの HTTPS を伝送する OpenVPN-TCP など) 内で TCP 接続をトンネリングすると、two 再送信タイマーが作動するようになりました。パケット損失が発生すると、両方の層が再送信を試みます。内部 TCP の輻輳ウィンドウが拡大します。外側の TCP のバッファーが追いつかないのです。
これが、WireGuard が UDP 専用である理由であり、ネットワークが許可する場合は常に OpenVPN-TCP よりも OpenVPN-UDP が優先される理由です。 OpenVPN-TCP は、スループットよりもファイアウォール トラバーサルが重要である特定のケースに向けた意図的なトレードオフです。
セキュリティの観点
トンネリングは道徳的に中立です。企業の VPN でリモートの従業員を保護するのと同じ手法が、通常のトラフィックのように見える DNS トンネルや HTTPS トンネルを介してデータを窃取するためにマルウェアによって使用される可能性があります。企業のセキュリティ チームは、DPI、フロー分析、出口ポイントでのポリシー適用を使用して敵対的なトンネルを検出することに多大な労力を費やしています。
標準ルール: トンネルは、内部プロトコル、外部プロトコル、およびオペレータの脅威モデルとまったく同じ安全性を備えています。 OpenVPN プレーン HTTP トンネリングでは、宛先までの HTTP が安全になりません。これにより、クライアントと OpenVPN サーバー間の接続が安全になります。
トンネルが機能していることを確認する方法
- トラフィックが予想した場所に出口があることを確認します。IP ルックアップ は、出口 IP と位置情報を示します。
- DNS がトンネルを通過していることを確認します。DNS リークtest.
- 完全な VPN リーク テストを実行します。WebRTC、IPv6、およびその他のリーク ベクトルに対して を実行します。
- SSH トンネルの場合、リモート エンドの
wコマンドにより、有効な送信元 IP が表示されます。
よくある質問
- トンネルと VPN の違いは何ですか?
- VPN はトンネリングのアプリケーションの 1 つです。トンネルはカプセル化メカニズムです。 VPN は、VPN を中心に構築された製品 (キー管理、構成など) です。すべての VPN はトンネルですが、すべてのトンネルが VPN であるわけではありません。TLS セッションは技術的にはトンネルであり、SSH ポート転送はトンネルであり、MPLS L3VPN アンダーレイはトンネリングを使用します。
- TCP-over-TCP が悪いのはなぜですか?
- 2 つの再送信タイマーが互いに戦います。パケットがドロップされると、内側と外側の両方の TCP が再試行します。内側の輻輳ウィンドウが外側のバッファを超えて拡大し、レイテンシが指数関数的に急増し、スループットが低下します。低損失環境では許容可能です。損失の多いネットワークでは、これは考えられる最悪の VPN 構成です。ネットワークが許可する場合はどこでも UDP ベースのトンネリングを使用します。
- ファイアウォールは常にトンネルを検出できますか?
- 最新の DPI は、共通のトンネル署名 (OpenVPN、WireGuard ハンドシェイク) を識別できます。難読化ツールはトンネルをラップして、通常の HTTPS またはその他の許可されたプロトコルのように見せます。軍拡競争は絶え間なく続いている。敵意のないネットワークの場合、基本的なファイアウォール ルールはコンテンツごとにトンネルを識別するほど深く検査しません。
- HTTPSはトンネルですか?
- 技術的にはそうです。 HTTPS は HTTP を TLS 内にラップします。この関係は、TLS 内で任意の IP トラフィックをラップする OpenVPN と構造的に同じです。 「プロトコル」と「トンネル」の境界線は主に用語の問題です。 HTTPS は、内部プロトコルと外部プロトコルが連携して動作するように設計されているため、通常はトンネルとは呼ばれませんが、カプセル化メカニズムは同じです。
- VPN にはどのトンネリング プロトコルを選択すればよいですか?
- 最新の消費者向けまたはビジネス向け: WireGuard。制限的なネットワークの場合: TLS 難読化を備えた OpenVPN-TCP/443。サードパーティクライアントを使用しないネイティブ iOS/macOS の場合: IKEv2/IPsec。 PPTP (壊れた) を避け、裸の L2TP を避けます (代わりに IKEv2/IPsec を使用します)。