传输模式与协议
了解 YAT 支持的传输模式,选择最适合的方案
📋 目录
传输模式概述
什么是传输模式?
传输模式决定了数据如何在客户端和 Edge 服务器之间传输。
YAT 支持三种传输模式:
- Relay(中继) - 通过 Edge 服务器转发
- P2P(点对点) - 设备间直连
- WireGuard - VPN 隧道
底层协议
所有模式都使用 mTLS over TCP 作为底层传输:
- ✅ 双向 TLS 认证
- ✅ 加密传输
- ✅ 防中间人攻击
中继模式(Relay)
工作原理
客户端 A ──mTLS──► Edge 服务器 ──mTLS──► 客户端 B所有流量都经过 Edge 服务器中转。
特点
| 特性 | 说明 |
|---|---|
| 延迟 | 中(增加 Edge 往返时间) |
| 带宽 | 受 Edge 带宽限制 |
| 稳定性 | 高(Edge 通常网络稳定) |
| NAT 穿透 | 无需穿透 |
| 防火墙 | 只需 Edge 开放端口 |
适用场景
- ✅ 跨地域访问
- ✅ 网络环境复杂
- ✅ 需要高稳定性
- ✅ Web 服务(HTTP/HTTPS)
配置方式
创建隧道时选择 Relay 模式:
📸 [截图位置] 传输模式选择
说明:显示 Relay/P2P/WireGuard 选项
P2P 直连模式
工作原理
客户端 A ──mTLS──► 客户端 B(直连)
▲
│
Edge(仅协调)Edge 仅负责初始连接协调,后续流量直连。
NAT 穿透
P2P 模式使用 ICE/STUN/TURN 技术穿透 NAT:
- STUN - 获取公网 IP
- ICE - 候选地址收集
- TURN - 穿透失败时回退到中继
特点
| 特性 | 说明 |
|---|---|
| 延迟 | 低(直连,无中转) |
| 带宽 | 高(受两端带宽限制) |
| 稳定性 | 中(依赖 NAT 类型) |
| NAT 穿透 | 需要穿透 |
| 防火墙 | 可能需要配置 |
适用场景
- ✅ 局域网或同地域
- ✅ 需要低延迟(远程桌面)
- ✅ 大文件传输
- ✅ 音视频流
NAT 类型兼容性
| NAT 类型 | P2P 成功率 |
|---|---|
| 全锥型 | ✅ 高 |
| 受限锥型 | ✅ 中 |
| 端口受限 | ⚠️ 低 |
| 对称型 | ❌ 很低 |
WireGuard 模式
工作原理
客户端 A ──WireGuard──► 虚拟网卡 ──转发──► 本地服务
▲
│
Edge(协调)使用 WireGuard VPN 建立虚拟局域网。
特点
| 特性 | 说明 |
|---|---|
| 延迟 | 低 |
| 带宽 | 很高 |
| 稳定性 | 高 |
| 安全性 | 极高(内核级加密) |
| 配置复杂度 | 中 |
适用场景
- ✅ 大文件传输
- ✅ 数据库同步
- ✅ 多服务访问
- ✅ 需要虚拟局域网
配置要求
Edge 服务器:
bash
# 安装 WireGuard
sudo apt install wireguard
# 加载内核模块
sudo modprobe wireguard客户端:
- macOS: 安装 WireGuard.app
- Windows: 安装 WireGuard
- Linux: 安装 wireguard-tools
模式对比
性能对比
| 模式 | 延迟 | 带宽 | CPU 占用 |
|---|---|---|---|
| Relay | 50-200ms | 10-100Mbps | 中 |
| P2P | 5-50ms | 100-1000Mbps | 低 |
| WireGuard | 5-30ms | 500-2000Mbps | 极低 |
兼容性对比
| 模式 | NAT 穿透 | 防火墙 | 移动网络 |
|---|---|---|---|
| Relay | ✅ 不需要 | ✅ 友好 | ✅ 支持 |
| P2P | ⚠️ 需要 | ⚠️ 可能受阻 | ⚠️ 不稳定 |
| WireGuard | ⚠️ 需要 | ⚠️ UDP 443 | ✅ 支持 |
协议支持
| 模式 | HTTP | TCP | UDP | WireGuard |
|---|---|---|---|---|
| Relay | ✅ | ✅ | ✅ | ✅ |
| P2P | ✅ | ✅ | ✅ | ❌ |
| WireGuard | ✅ | ✅ | ✅ | ✅ |
如何选择
决策树
是否需要低延迟?
├─ 是 → 同地域?
│ ├─ 是 → P2P 模式
│ └─ 否 → WireGuard 模式
└─ 否 → 需要高稳定性?
├─ 是 → Relay 模式
└─ 否 → P2P 模式推荐配置
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| Web 服务 | Relay | 稳定、兼容性好 |
| 远程桌面 | P2P | 低延迟 |
| 数据库 | WireGuard | 高带宽、安全 |
| 文件传输 | WireGuard | 速度快 |
| API 调试 | Relay | 简单易用 |
| 游戏服务器 | P2P | 低延迟 |
自动回退
YAT 支持自动回退机制:
P2P 尝试失败
↓
回退到 Relay
↓
保持连接常见问题
Q: 如何切换传输模式?
目前不支持运行时切换,需要:
- 停止隧道
- 删除隧道
- 重新创建并选择新模式
Q: P2P 模式连接失败怎么办?
原因: NAT 穿透失败
解决:
- 检查 NAT 类型
- 尝试在相同网络下
- 使用 Relay 模式作为备选
Q: WireGuard 模式需要额外配置吗?
需要:
- 安装 WireGuard
- 开放 UDP 端口(默认 51820)
- 配置防火墙
Q: 哪种模式最安全?
WireGuard > P2P > Relay
- WireGuard: 内核级加密,经过严格审计
- P2P: mTLS 加密,直连无中转
- Relay: mTLS 加密,但经过 Edge
Q: 移动网络下使用哪种模式?
推荐 Relay 或 WireGuard:
- 移动网络 NAT 类型复杂,P2P 成功率低
- WireGuard 对移动网络优化好
💡 最佳实践
1. 优先尝试 P2P
P2P 模式性能最好,建议优先尝试。
2. 准备回退方案
如果 P2P 失败,自动回退到 Relay。
3. 测试网络环境
bash
# 测试 NAT 类型
# 使用在线工具:https://test-ipv6.com/
# 测试带宽
speedtest-cli
# 测试延迟
ping edge.myroxy.dev4. 监控性能
定期监控隧道性能:
- 延迟
- 带宽
- 丢包率
📚 相关文档
YAT Team - 让内网穿透更简单