---
title: 隧道技术对比
url: https://doc.liz6.com/networking/08-vpn-and-tunnels/04-tunnel-technology-comparison
locale: zh
area: networking
tags:
- networking
- VPN与隧道
date: 2026-06-30
modified: 2026-06-30
description: '"隧道"是将一个协议封装在另一个协议中传输——GRE 最简的 IP-in-IP,VXLAN 为多租户叠加 L2,rathole/frp 通过中继暴露内网服务,WireGuard/IPsec 提供端到端加密。选型看封装开销、是否需要加密、和对 NAT 的兼容性。'
---

# 隧道技术对比

> "隧道"是将一个协议封装在另一个协议中传输——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 not
Port forward: rathole, frp, ngrok — 内网服务暴露
Full VPN:    WireGuard, IPsec, OpenVPN — 设备级加密接入
```

## rathole vs frp

| | rathole | frp |
|---|---|---|
| 架构 | 对称 (server ↔ client) | 集中 (frps ↔ frpc) |
| 连接模型 | 预建 TCP 连接池 | 按需创建 TCP |
| 多服务 | per-service tunnel | per-service proxy |
| 加密 | 依赖上层 (TLS by Caddy) | 内置 (可选) |
| 协议支持 | TCP only | TCP/UDP/HTTP |
| Docker | server + client | server + client |
| 资源占用 | 极低 (~5MB RAM) | 中等 (~20MB) |

预建连接池的优势: server 和 client 启动时就预先建立多个空闲 TCP 连接。客户端请求到达 server → server 从池中取一个已建立的连接 → 转发数据 → 消除每次请求的 TCP 三次握手延迟。

预建连接池的代价: NAT 或 conntrack 可能把 idle 连接清掉 → `early eof` 错误 → client 需设 keepalive (TCP keepalive interval < conntrack timeout)。

## GRE vs VXLAN

```
GRE (IP protocol 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) — 16M 个虚拟网络
  ECMP: UDP src port 用作 entropy → 多路径路由
  MTU: 50B overhead → 需要巨帧 (9000 MTU) 或分片
```

## 选型指南

| 需求 | 选择 |
|------|------|
| 暴露内网 HTTP 服务 | rathole + Caddy (auto TLS, 连接池) |
| 多协议内网穿透 | frp (TCP/UDP/HTTP, dashboard) |
| 低延迟 mesh VPN | WireGuard (内核, ~4K 行代码) |
| 自动 NAT 穿透 | Tailscale (STUN+DERP+UPnP) |
| 企业 VPN 网关 | IPsec/IKEv2 (硬件 offload) |
| 数据中心 overlay | VXLAN + EVPN (BGP control plane) |
| 简单 IP tunnel | 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*
