前言
穿云隧道是 Go 编写的轻量内网穿透工具,单二进制无依赖,自带 Web 管理面板,支持 TCP/UDP 隧道、自动端口分配、自定义隧道时效。适合家用无公网 IP 宽带临时对外暴露本地服务。参照了 NPS、FRP 等穿透工具的功能和 UI,结合自身需求用 AI 辅助重写了全部代码,属于全新系统。完整源码、高级编译、systemd 运维、API 开发文档详见 Gitee 仓库:https://gitee.com/cncsrf/port-tunnel-go

一、前置准备
- 拥有一台带公网 IPv4 云服务器
- 云服务器安全组放行端口:8888(Web 面板)、9999(通信端口)、自定义隧道端口池区间
- 客户端系统支持 Linux amd64/arm64、Windows10/11
二、两种快速部署方案
方案 1:直接下载预编译二进制(无需 Go 环境,一键启动)
无需源码、无需编译,官方提供成品静态二进制,开箱即用
1. Linux x86_64 服务器(主流云主机)
mkdir -p /opt/port-tunnel-go && cd /opt/port-tunnel-go
# 下载amd64预编译服务端
wget https://gitee.com/cncsrf/port-tunnel-go/raw/master/releases/server-bin-amd64 -O server-bin
chmod +x server-bin
2. ARM64 服务器(树莓派、ARM 云实例)
mkdir -p /opt/port-tunnel-go && cd /opt/port-tunnel-go
wget https://gitee.com/cncsrf/port-tunnel-go/raw/master/releases/server-bin-arm64 -O server-bin
chmod +x server-bin
3. 一键后台运行
nohup ./server-bin > server.log 2>&1 &
4. 访问 Web 管理面板
浏览器打开 http:// 公网 IP:8888默认账号:admin,默认密码:admin123,首次登录强制修改密码

方案 2:Docker 容器一键部署
1. 服务端容器
docker run -d --name ptgs --restart unless-stopped --network host \
-v /opt/port-tunnel-go:/opt/port-tunnel-go ad80a1/ptg-server:latest
2. 客户端容器
docker run -d --name ptgc --restart unless-stopped --network host \
ad80a1/ptg-client:latest --host 云主机IP --local 8080 --mode tcp --token 自定义密钥
三、客户端使用教程
1. 获取客户端二进制
登录 Web 面板,页面提供下载入口:
Linux 客户端:http:// 公网 IP:8888/download/ptg
Windows 客户端:http:// 公网 IP:8888/download/ptg.exe
Linux 客户端:http:// 公网 IP:8888/download/ptg
Windows 客户端:http:// 公网 IP:8888/download/ptg.exe
Linux 赋予执行权限:
wget http://公网IP:8888/download/ptg
chmod +x ptg
2. 常用启动命令
基础 TCP 隧道,本地 8080,默认 3 小时有效期
./ptg --host 云主机IP --port 9999 --local 8080 --mode tcp --token tk001
自定义隧道时长(60 分钟)
./ptg --host 云主机IP --local 8080 --minutes 60 --token tk001
UDP 隧道(DNS/TFTP 等场景)
./ptg --host 云主机IP --local 53 --mode udp --token tk001
指定云服务器固定映射端口
./ptg --host 云主机IP --local 8080 --bind 10086 --token tk001
二级转发,流量转发局域网其他设备
./ptg --host 云主机IP --target 192.168.1.100:80 --token tk001
Windows 客户端运行
ptg.exe --host 云主机IP --local 8080 --token tk001
客户端完整参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| –local | 必填 | 本地需要暴露端口 / 地址 |
| –host | 服务 IP | 云主机公网地址 |
| –port | 999 | 服务通信端口 |
| –mode | tcp | 隧道协议 tcp/udp |
| –minutes | 180 | 隧道有效时长(分钟) |
| –bind | 自动分配 | 手动指定云主机端口 |
| –token | 可选 | 客户端接入鉴权密钥 |
| –target | 可选 | 内网二级转发地址,与 local 互斥 |
| –remark | 可选 | 隧道备注名称 |
| –tag | 可选 | 隧道分类标签 |
四、安全基础配置
- 云服务器安全组仅放行公司办公固定 IP,屏蔽其余所有外部访问
放行端口:8888、9999、10000-60000 - Web 面板安全设置
登录后台 – 系统设置 – 安全防护,配置 IP 黑白名单,限制面板、隧道访问来源 IP - 客户端连接必须配置自定义 token,避免他人随意占用端口
五、基础运维操作
- 查看运行日志
tail -f /opt/port-tunnel-go/server.log - 重置登录密码
./server-bin --reset-password - 重置 IP 安全规则
./server-bin --reset-security - 重启服务端
Git 部署方式:kill 进程后重新执行 ./server-bin Docker 部署方式:docker restart ptgs
六、补充说明
- 进阶内容(源码编译、systemd 开机自启、API 接口、数据结构、UDP 底层逻辑、多平台交叉编译),移步项目开发文档:http:// 公网 IP:8888/dev-docs
- 内置机制:客户端 30 秒心跳保活、断线阶梯重连、隧道到期自动释放端口、重连自动复用原有端口
- 持久化文件:隧道、安全、账号配置均以 JSON 存储,重启服务数据不丢失
- 开源地址:https://gitee.com/cncsrf/port-tunnel-go,MIT 开源协议,可自由修改使用