文档

快速开始 + 每部分每设备的功能说明(持续更新中)

端口穿透

本文介绍面板的「端口穿透」功能——把没有公网 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
全面板最多 Agent64

超出会自动拒绝新连接,不影响已运行的穿透

注意事项

1. 云防火墙:面板服务器的云防火墙/安全组需放行对应的监听端口,否则外部访问不了。

2. Agent 版本:转发非 SSH 端口(非 22)需要穿透服务器已安装新版 Agent(旧版只支持转发 22 端口)。如需转发其他端口,请重新安装 Agent。

3. Agent 在线:穿透依赖 Agent 保持在线。Agent 离线时穿透会中断,重连后自动恢复。

4. 面板重启自动恢复:面板服务重启后,穿透会自动恢复(Agent 重连时触发)。

5. 安卓目标服务需支持并发:安卓上被穿透的目标服务(如 python3 -m http.server)若为单线程且启用 keep-alive,同一连接未关闭会阻塞后续请求。建议目标服务使用多线程,或确保连接及时关闭。

相关文档

  • 穿透运维 — 先把无公网设备接入面板
  • 端口转发 — 有公网 IP 服务器的传统端口转发(两者的区别见下文)

端口穿透 vs 端口转发(怎么选)

端口穿透(本文)端口转发
适用服务器无公网 IP(穿透服务器)有独立公网 IP
实现方式反向隧道系统防火墙 DNAT
转发位置面板服务器目标服务器本机
需要 Agent

一句话:没公网 IP 用穿透,有公网 IP 用转发