🏗️ 架构概述
NetBird 由四大核心组件构成:
┌─────────────────────────────────────────┐
│ Management Service │
│ (用户/组/策略/IP/密钥管理) │
└─────────────────────────────────────────┘
│ │
┌────┴────┐ ┌────┴────┐
│ Signal │ │ Relay │
│(信令) │ │(中继) │
└────┬────┘ └────┬────┘
│ │
┌────┴────────────────────┴────┐
│ Client (Agent) │
│ WireGuard + P2P Tunnel │
└───────────────────────────────┘
📦 四大组件
1. Client(客户端)
- 运行在每台设备上的代理程序
- 管理 WireGuard 接口和隧道
- 与 Management 服务通信获取配置
- 与 Signal 服务协调建立 P2P 连接
2. Management(管理服务)
- 中央控制平面
- 管理用户、组、访问策略
- 分配 IP 地址和 WireGuard 密钥
- 提供 Web Dashboard
3. Signal(信令服务)
- 协调 P2P 连接建立
- 交换候选地址和公钥
- 基于 Pion ICE (WebRTC)
4. Relay(中继服务)
- 当 P2P 直连失败时中继流量
- 基于 Coturn (TURN)
- 支持自托管
🔄 连接建立流程
- 注册 - Client 向 Management 注册并认证
- 获取配置 - Management 返回 IP、密钥、策略
- 发现 Peer - 通过 Signal 发现其他在线设备
- NAT 穿透 - STUN 探测公网地址
- 建立隧道 - WireGuard P2P 加密隧道
- 回退中继 - 如 P2P 失败则使用 Relay
🔧 技术栈
- WireGuard - VPN 协议
- Pion ICE - NAT 穿透(WebRTC)
- Coturn - TURN 中继服务器
- Go - 主要开发语言
- gRPC - 组件间通信
- PostgreSQL/SQLite - 数据存储