4.3 KiB
4.3 KiB
VPN Overlay 文档
本项目通过 WireGuard + VLESS + gretap/VXLAN 构建跨云、跨平台的大二层互联网络,兼顾穿透、防火墙规避、性能与扩展性。
一、组网概述:核心协议与封装层级
1. WireGuard (WG)
- 类型:L3 VPN(UDP 点对点随身障碍线)
- 用途:形成低负载加密通道
2. VLESS + XTLS
- 类型:TLS/gRPC 路由封装协议
- 用途:作为 WireGuard 流量的带容中转
3. gretap over WireGuard
- 类型:L2 over L3 over UDP
- 用途:支持二层网络,包括 ARP/广播/DHCP
4. VXLAN over WireGuard
- 类型:L2 over UDP
- 用途:适合多 Hub 分区组网和广播
二、性能、效率、成本、场景对比
| 对比项 | gretap over WG | VXLAN over WG |
|---|---|---|
| 封装协议 | GRE (L2 over IP) | VXLAN (L2 over UDP) |
| 架构 | 点对点 | 多点(支持组播) |
| 广播能力 | 完整 L2 广播 | 支持 VXLAN 组播 |
| WG 使用 | gretap 用于 local/remote | VXLAN dev 发包 |
| 多 Hub 扩展 | 差 | 强(VXLAN ID + 组播) |
| 效率 | 高(原生内核支持) | 略低(UDP 重封) |
| 云平台兼容 | 需隔缘 GRE | 要求放行 UDP 4789 |
| MTU | 推荐 1400-1420 | 同上 |
| 平台 | Linux only | 支持 K8s/OpenStack/Linux |
三、示意结构
基本层级
[站点主机]
└─ gretap
└─ br0
└─ wg0 → XTLS/VLESS 客户端
→ 网络
→ VLESS 服务端
→ WireGuard Hub
Overlay 网络
WG Layer3 网段: 10.100.0.0/24
SiteA.wg0: 10.100.0.2 → WG-Hub: 10.100.0.1 → SiteB.wg0: 10.100.0.3
L2 Bridge br0: 172.16.0.0/16
SiteA.br0: 172.16.1.1
SiteB.br0: 172.16.2.1
混合组网 (VXLAN + gretap)
WG-Hub-1 === VXLAN === WG-Hub-2
| |
Site A Site B
四、配置开关说明 & 自动化逻辑
| 开关 | 默认 | 说明 |
|---|---|---|
| enable_gretap | true | 启用站点到 Hub 的 gretap 连接 |
| enable_vxlan_between_hubs | true | 启用 Hub 间 VXLAN 桥接 |
| enable_vless | true | 站点通过 VLESS 转发 WG 流量 |
| enable_multi_hub | true | 启用多 Hub 组网 |
| only_wireguard | false | 禁用 gretap/VXLAN,仅使用 WG |
自动化逻辑
- 如果 vless.enabled: true → 生成
xray-client.json+ 修改 wg0 endpoint - gretap 启用 → 生成 br0 框架
- vxlan 启用 → 生成 vxlan100 和 bridge fdb mapping
- only_wireguard = true → 不生成 gretap/VXLAN 结构
五、VXLAN 多 Hub 实现 (bridge fdb broadcast)
ip link add vxlan100 type vxlan id 100 dev wg0 dstport 4789 group 239.1.1.100 ttl 10
bridge fdb add 00:00:00:00:00:00 dev vxlan100 dst 10.100.1.1
bridge fdb add 00:00:00:00:00:00 dev vxlan100 dst 10.100.2.1
六、组网演进实践
| 阶段 | 架构 | 开关 | 场景 |
|---|---|---|---|
| 1. P2P | 单点对 | only_wireguard: true | WG 连接测试 |
| 2. Site2Site | 多站 | enable_gretap: true | L2 互联 |
| 3. Net2Net | 多 LAN 桥接 | enable_gretap + br0 | 应用组织 |
| 4. Single Hub | 中心 Hub | enable_multi_hub: true | 合约管理 |
| 5. Double Hub | 双中心 | enable_vxlan_between_hubs: true | 多地区融合 |
| 6. Multi Hub | 多中心 | 全部开 | 大型实施 |
Step-by-Step
第一步: P2P 模型
- 启用 WG 通信
- 配置 /etc/wireguard/wg0.conf
第二步: 二站 L2 通
- 启用 gretap
- 框架 br0 + 连接 gretap0
第三步: Net2Net
- 多个 LAN 通过 br0 带入 gretap 框架
第四步: Signal Hub
- 各站点 gretap 连接 Hub
- 如有需要同时启用 VLESS
第五步: Double Hub
- Hub 间通过 VXLAN 结合 WG 融合
- 用 bridge fdb 构建组播 VXLAN
第六步: Multi Hub 应用
- 每个 Hub 都搭建 vxlan100 和 br0
- 站点自选最近 Hub
- 支持任意云平台
七、扩展建议
| 类型 | 内容 |
|---|---|
| 自动部署 | generate_all.sh 一键生成配置 |
| YAML 配置 | 集中 config/sites.yaml |
| 多平台 | 根据 uname 选择 GRE/VXLAN |
| 灾处备份 | 多 Hub 配置切换 |
| 状态监控 | Prometheus 搭配 WG Exporter |
本项目支持定制化配置,合适各类场景,有关 YAML 配置、服务启动脚本、应用调试相关内容,请连续跟踪项目文档和 config 文件夹。