このページの目次
トンネリング技術の比較
「トンネリング」は、あるプロトコルを別のプロトコルでラップして転送することです。GRE は最もシンプルな IP-in-IP、VXLAN はマルチテナント用のオーバーレイ L2、rathole/frp はリレー経由で社内サービスを公開し、WireGuard/IPsec はエンドツーエンドの暗号化を提供します。選定の際は、オーバーヘッド、暗号化の必要性、NAT への互換性を見ます。
概要
「トンネリング」はネットワークエンジニアリングにおける一般的な概念であり、あるプロトコルを別のプロトコルでラップして転送することを指します。異なるトンネリング技術は異なる問題を解決します。GRE は最もシンプルな IP-in-IP ラップ方式であり、VXLAN は L3 ネットワーク上に L2 をオーバーレイしてマルチテナント環境で利用されます。rathole や frp はリレー経由で社内サービスを公開し、WireGuard/IPsec はエンドツーエンドの暗号化を提供します。選定における核心的な考慮事項は、オーバーヘッド、暗号化の必要性、接続モデル(オンデマンド vs 常時接続)、および NAT への互換性です。
トンネリングの分類
L2 overlay: VXLAN, GENEVE — データセンター仮想ネットワーク, 24-bit VNI
L3 tunnel: GRE, IPIP, WireGuard — サイト間接続, 暗号化あり or なし
Port forward: rathole, frp, ngrok — 社内サービスの公開
Full VPN: WireGuard, IPsec, OpenVPN — デバイスレベルの暗号化アクセス
rathole vs frp
| rathole | frp | |
|---|---|---|
| アーキテクチャ | 対称 (server ↔ client) | 集中型 (frps ↔ frpc) |
| 接続モデル | 事前構築済み TCP 接続プール | オンデマンドで TCP を作成 |
| 複数サービス | サービスごとのトンネル | サービスごとのプロキシ |
| 暗号化 | 上位層に依存 (Caddy による TLS) | 内蔵 (オプション) |
| プロトコル対応 | TCP のみ | TCP/UDP/HTTP |
| Docker | server + client | server + client |
| リソース使用量 | 極めて低い (~5MB RAM) | 中程度 (~20MB) |
事前構築済み接続プールの利点: server と client は起動時に複数のアイドル状態の TCP 接続を事前に確立します。クライアントからのリクエストが server に到達すると、server はプールから既に確立済みの接続を1つ取得し、データを転送します。これにより、リクエストごとに TCP の3ウェイハンドシェイクによる遅延を排除できます。
事前構築済み接続プールの代償: NAT や conntrack はアイドル状態の接続をクリアしてしまう可能性があります → early eof エラーが発生 → client は keepalive を設定する必要があります (TCP keepalive interval < conntrack timeout)。
GRE vs VXLAN
GRE (IP プロトコル 47):
ラップ: [Outer IP | GRE hdr(4-16B) | Inner IP | Payload]
設計: 汎用 (Generic Routing Encapsulation) — あらゆるプロトコルをラップ可能
識別子: オプションの Key (4B) — 複数の GRE トンネルが同じ IP を共用
VXLAN (UDP):
ラップ: [Outer Eth | Outer IP | UDP(port 4789) | VXLAN(8B) | Inner Eth | Inner L2+]
識別子: VNI (24-bit) — 1600万の仮想ネットワーク
ECMP: UDP src port をエントロピーとして使用 → マルチパスルーティング
MTU: 50B のオーバーヘッド → ジャンボフレーム (9000 MTU) または断片化が必要
選定ガイド
| 要件 | 選択 |
|---|---|
| 社内 HTTP サービスの公開 | rathole + Caddy (自動 TLS、接続プール) |
| 複数プロトコルの社内透過 | frp (TCP/UDP/HTTP、ダッシュボード) |
| 低レイテンシメッシュ VPN | WireGuard (カーネル、約4K行のコード) |
| 自動 NAT 透過 | Tailscale (STUN+DERP+UPnP) |
| 企業向け VPN ゲートウェイ | IPsec/IKEv2 (ハードウェアオフロード) |
| データセンターオーバーレイ | VXLAN + EVPN (BGP コントロールプレーン) |
| シンプルな IP トンネル | GRE (軽量、暗号化なし) |
参考
- rathole: github.com/rapiz1/rathole
- frp: github.com/fatedier/frp
- RFC: 2784 (GRE), 7348 (VXLAN)
Keywords: tunnel, rathole, frp, GRE, VXLAN, WireGuard, connection pool, overlay, port forwarding