文档
快速开始 + 每部分每设备的功能说明(持续更新中)
端口穿透
本文介绍面板的「端口穿透」功能——把没有公网 IP 的穿透服务器上的应用端口,映射到面板服务器的公网端口,让外部用户能够访问。
一句话理解
你的服务器藏在内网(没有公网 IP),它上面跑着一个网站或应用,外面的人访问不到。端口穿透就是「在面板服务器上开一个公网端口,把外面的访问通过加密隧道搬运到你这台内网服务器的应用端口上」。结果:外面的人访问 面板服务器IP:端口,就等于访问你内网服务器上的应用。
功能简介
对于通过「穿透运维」接入的无公网 IP 服务器,它上面的应用(如 Navidrome 音乐、Nextcloud 网盘、Memos 笔记)无法被外部访问。端口穿透把这些应用端口映射到面板服务器(有公网 IP)的端口上,让外部用户通过「面板服务器 IP:端口」访问。
适用场景
- 穿透服务器上跑了 Web 应用,想让外部访问
- 把内网设备的服务暴露到公网
- 给没有公网 IP 的设备上的网站、API、面板提供一个公网入口
原理(数据怎么流动)
外部用户 → 面板服务器公网端口 (如 :9117) → 加密隧道 → 穿透服务器应用端口 (如 :9117)
外部流量先到达面板服务器(唯一有公网 IP 的地方),再通过一条加密的反向隧道送到内网设备,最后落到设备上真实运行的应用端口。
统一通道(所有设备,无需手动选择):
| 设备类型 | 转发通道 | 说明 |
|---|---|---|
| Linux 服务器(无公网 IP) | 4433 反向隧道(AES-256-GCM 加密) | 原生 TCP 字节流,快且稳,支持大量并发 |
| 安卓/Termux 设备 | 4433 反向隧道(AES-256-GCM 加密) | 与 Linux 设备走同一条加密隧道,稳定且无额外开销 |
面板统一走 4433 反向隧道,创建穿透时无需关心底层通道,也不用手动选择。
> 补充说明:安卓/Termux 设备的系统管理(命令执行、终端、文件)走的是 SocketIO 稳定通道;但端口穿透统一走 4433 反向隧道,两者各司其职、互不干扰。
使用方法
1. 确保目标设备已通过「穿透运维」接入(Agent 在线)
2. 打开「端口穿透」,点击「添加穿透」
3. 选择穿透服务器(Agent),填写:
- 监听端口:面板服务器的公网端口(外部访问用),例如
9117 - 目标端口:穿透服务器上的应用端口,例如
8080
4. 创建后,外部即可访问 http://面板服务器IP:监听端口
示例
假设面板服务器公网 IP 是 203.0.113.10,你有一台内网树莓派上跑着 Navidrome(监听 4533):
- 监听端口填
4533 - 目标端口填
4533 - 创建后,外部用户访问
http://203.0.113.10:4533即可打开树莓派上的 Navidrome
资源上限
| 限制 | 值 |
|---|---|
| 每个 Agent 最多转发通道 | 32 条 |
| 全面板最多 Agent | 64 个 |
超出会自动拒绝新连接,不影响已运行的穿透。
注意事项
1. 云防火墙:面板服务器的云防火墙/安全组需放行对应的监听端口,否则外部访问不了。
2. Agent 版本:转发非 SSH 端口(非 22)需要穿透服务器已安装新版 Agent(旧版只支持转发 22 端口)。如需转发其他端口,请重新安装 Agent。
3. Agent 在线:穿透依赖 Agent 保持在线。Agent 离线时穿透会中断,重连后自动恢复。
4. 面板重启自动恢复:面板服务重启后,穿透会自动恢复(Agent 重连时触发)。
5. 安卓目标服务需支持并发:安卓上被穿透的目标服务(如 python3 -m http.server)若为单线程且启用 keep-alive,同一连接未关闭会阻塞后续请求。建议目标服务使用多线程,或确保连接及时关闭。
相关文档
端口穿透 vs 端口转发(怎么选)
| 端口穿透(本文) | 端口转发 | |
|---|---|---|
| 适用服务器 | 无公网 IP(穿透服务器) | 有独立公网 IP |
| 实现方式 | 反向隧道 | 系统防火墙 DNAT |
| 转发位置 | 面板服务器 | 目标服务器本机 |
| 需要 Agent | 是 | 否 |
一句话:没公网 IP 用穿透,有公网 IP 用转发。