隧道管理
学习如何创建、管理和监控隧道
📋 目录
隧道概述
什么是隧道?
隧道(Tunnel)是 YAT 的核心工作单元,用于将内网服务暴露到公网。
隧道的组成:
- Intent(意图) - 您想要做什么(协议、配置)
- Channels(通道) - 具体的转发规则
- Participants(参与者) - 设备及其角色
- Routes(路由) - 运行链路
隧道状态
| 状态 | 说明 | 图标 |
|---|---|---|
| active | 运行中 | 🟢 |
| inactive | 未启动 | ⚪ |
| stopped | 已停止 | 🔴 |
| failed | 启动失败 | ❌ |
| negotiating | 协商中 | 🟡 |
支持的应用类型
| 应用 | 协议 | 说明 |
|---|---|---|
| HTTP 代理 | HTTP/HTTPS | Web 服务、API |
| TCP 转发 | TCP | 数据库、SSH |
| UDP 转发 | UDP | 游戏服务器、DNS |
| ARD 远程桌面 | TCP+UDP | macOS 远程桌面 |
创建隧道
方式一:从 Tunnels 页面创建
- 点击左侧导航栏 Tunnels
- 点击 创建隧道 按钮
- 选择应用类型
📸
应用选择对话框
说明:显示可用的应用列表、应用图标和描述
方式二:从 Edge 页面创建
- 点击左侧导航栏 Edges
- 选择一个 Edge 服务器
- 点击 创建隧道 按钮
配置隧道
HTTP 代理
配置项:
- 隧道名称 - 自定义名称(必填)
- 本地端口 - 本地服务端口(必填)
- 本地主机 - 本地监听地址(默认 127.0.0.1)
- 传输模式 - Relay / P2P / WireGuard
- 共享设置 - 共享 / 独占
📸
HTTP 代理配置表单
说明:显示名称、端口、传输模式等配置项
TCP/UDP 转发
配置项:
- 隧道名称 - 自定义名称
- 本地端口 - 本地监听端口
- 远程端口 - 远程暴露端口(可选)
- 本地主机 - 本地监听地址
ARD 远程桌面
配置项:
- 隧道名称 - 自定义名称
- 目标主机 - 目标 Mac 的主机名或 IP
- 传输模式 - Relay / P2P / WireGuard
- 角色 - 服务器 / 客户端
配置初始化
某些应用会在创建时自动初始化配置:
// ARD 示例
{
localHost: '127.0.0.1',
sharedState: 'shared',
tunnelRole: 'publisher',
transport: 'relay',
creatorDeviceId: 'device-xxx'
}创建成功
创建成功后:
- ✅ 隧道出现在隧道列表中
- ✅ 状态为 未启动
- ✅ 可以点击查看详情
启动与停止
启动隧道
方式一:从列表启动
- 找到隧道卡片
- 点击 启动 按钮
- 等待状态变为 运行中
方式二:从详情启动
- 点击 查看详情
- 点击 启动 按钮
📸
隧道启动过程
说明:显示启动按钮、加载状态、成功提示
启动流程
用户点击启动
↓
检查 Edge 连接
↓
检查本地端口
↓
调用 Host API (startChannels)
↓
Edge 创建通道
↓
状态同步到客户端
↓
显示运行中停止隧道
方式一:从列表停止
- 找到运行中的隧道
- 点击 停止 按钮
- 确认停止
方式二:从详情停止
- 进入隧道详情
- 点击 停止 按钮
重启隧道
隧道运行异常时,可以点击 重新连接 按钮重启。
查看隧道详情
进入详情
点击隧道卡片上的 查看详情 按钮。
详情页面结构
1. 基本信息
- 隧道名称
- 应用类型
- Edge 服务器
- 创建时间
- 更新时间
📸
隧道详情 - 基本信息
说明:显示名称、应用、Edge、时间等信息
2. 远程地址
显示可用的远程访问地址:
- 系统分配域名 -
xxx.myroxy.dev - 自定义域名 - 如果已配置
- CNAME 状态 - DNS 验证状态
📸
隧道详情 - 远程地址
说明:显示多个地址、复制按钮、CNAME 状态
3. 通道列表
显示隧道下的所有通道:
| 通道名称 | 协议 | 本地端口 | 远程端口 | 状态 |
|---|---|---|---|---|
| VNC 通道 | TCP | 5900 | 12345 | 运行中 |
| VNC 通道 | UDP | 5900 | 12345 | 运行中 |
📸
隧道详情 - 通道列表
说明:显示通道 key、协议、端口绑定、状态
4. 参与者信息
显示参与设备的角色:
- 设备 ID
- 角色 - Publisher / Consumer / Controller
- 状态 - Online / Offline
- 最后在线时间
5. 应用自定义标签页
某些应用会提供额外的标签页:
ARD 示例:
- 连接状态 - 显示 VNC 服务状态
- 远程桌面快照 - 显示远程桌面预览
📸
隧道详情 - ARD 自定义标签
说明:显示连接状态、桌面快照
隧道共享与协作
共享模式
YAT 支持两种共享模式:
Exclusive(独占)
- 🔒 仅创建设备可以使用
- 🚫 其他设备无法加入
- ✅ 适合个人使用
Shared(共享)
- 👥 同一账号的其他设备可以加入
- 🔄 自动同步通道状态
- ✅ 适合多设备协作
设置共享模式
创建时设置: 在创建隧道的配置表单中选择共享或独占。
创建后修改: 目前不支持修改共享模式,需要重新创建隧道。
多设备协作
场景示例
场景: 在公司访问家里的 NAS
设置步骤:
家里设备(Publisher)
- 创建隧道,设置为 共享
- 角色:Publisher(发布端)
- 启动隧道
公司设备(Consumer)
- 看到共享隧道
- 角色:Consumer(消费端)
- 查看远程地址,访问服务
📸
多设备协作示意图
说明:显示 Publisher 和 Consumer 设备、隧道共享关系
角色说明
| 角色 | 权限 | 说明 |
|---|---|---|
| Publisher | 启动/停止/控制 | 服务提供者 |
| Consumer | 查看/访问 | 服务使用者 |
| Controller | 管理配置 | 管理员(预留) |
删除隧道
删除流程
- 找到隧道卡片
- 点击 删除 按钮
- 确认删除
⚠️ 警告:删除操作不可逆!
删除前检查
删除前,应用可以定义检查逻辑:
hooks: {
onBeforeDelete(context) {
// 检查是否有运行中的服务
if (context.tunnel.status === 'active') {
alert('请先停止隧道')
return false
}
return true
}
}删除后
- ❌ 隧道从列表中移除
- ❌ Edge 上的通道被清理
- ❌ 分配的域名被释放
- ❌ 无法恢复
隧道统计
统计卡片
Tunnels 页面顶部显示统计信息:
- 运行中 - 当前运行的隧道数量
- 已停止 - 已停止的隧道数量
- 入站流量 - 接收的数据量
- 出站流量 - 发送的数据量
📸
统计卡片
说明:显示 4 个统计指标
查看单个隧道流量
在隧道详情中可以看到该隧道的流量统计。
常见问题
Q: 创建隧道时提示"端口被占用"
原因: 本地端口已被其他服务占用。
解决:
- 更换本地端口
- 或关闭占用该端口的服务
# macOS/Linux 查看端口占用
lsof -i :8080
# Windows 查看端口占用
netstat -ano | findstr :8080Q: 隧道启动后立即停止
可能原因:
- Edge 服务器离线
- 本地服务未启动
- 网络不稳定
解决:
- 检查 Edge 状态
- 确认本地服务运行正常
- 查看错误日志
Q: 如何查看隧道日志?
目前日志功能开发中,您可以通过以下方式排查问题:
- 查看隧道状态提示
- 查看 Edge 服务器日志
- 提交 Issue 附带截图
Q: 一个 Edge 可以创建多少个隧道?
理论上没有限制,但建议:
- 单个 Edge 不超过 20 个隧道
- 总带宽不超过 Edge 服务器容量
Q: 隧道可以跨 Edge 迁移吗?
目前不支持。如需更换 Edge,需要:
- 删除原隧道
- 在新 Edge 上重新创建
💡 最佳实践
1. 命名规范
使用有意义的名称:
✅ 我的 NAS - HTTP
✅ 开发服务器 - TCP 3000
✅ 家庭监控 - UDP
❌ 隧道 1
❌ test2. 端口选择
- 使用非特权端口(>1024)
- 避免常见端口冲突
- 记录端口用途
3. 安全建议
- 个人使用选择 独占 模式
- 团队协作选择 共享 模式
- 定期清理不用的隧道
4. 性能优化
- 优先选择 P2P 模式(延迟更低)
- 大文件传输使用 WireGuard 模式
- Web 服务使用 HTTP/HTTPS
📚 相关文档
- 快速开始 - 创建第一个隧道
- Edge 服务器管理 - 管理 Edge 服务器
- 应用与扩展 - 使用扩展功能
- 传输模式 - 了解传输模式
YAT Team - 让内网穿透更简单
应用选择对话框
HTTP 代理配置表单
隧道启动过程
隧道详情 - 基本信息
隧道详情 - 远程地址
隧道详情 - 通道列表
隧道详情 - ARD 自定义标签
多设备协作示意图
统计卡片