概述
淘淘内网穿透是一款轻量级的 NAT 穿透工具,基于 Node.js + WebSocket 构建。它可以将你局域网内的服务(如 Web 服务器、远程桌面、数据库等)安全地暴露到公网。
系统架构
| 组件 | 技术 | 说明 |
|---|---|---|
| 服务端 | Node.js | 部署在公网服务器,负责隧道转发 |
| 客户端 | Electron | 桌面应用,配置映射并建立隧道 |
| 管理后台 | HTML | Web 界面,管理用户、配置、日志 |
| 通信协议 | WebSocket | 支持 ws:// 和 wss:// 加密 |
项目结构
gw-vpn-logo/ ├── server/ │ ├── index.js # 服务端主程序 │ ├── admin.html # Web 管理后台 │ ├── config.json # 服务配置文件(自动生成) │ ├── users.json # 用户数据(自动生成) │ └── logs/ # 日志目录 ├── client/ │ ├── main.js # Electron 主进程 │ ├── renderer.js # 界面逻辑 │ ├── index.html # 客户端界面 │ ├── style.css # 样式文件 │ └── tunnel-client-optimized-v2.js # 隧道核心 └── web/ # 官网和文档 服务端部署
环境要求
- 公网服务器一台(Linux / Windows)
- Node.js 16+ 运行环境
- 防火墙需开放对应端口(WebSocket 端口 + 映射端口)
安装步骤
1. 上传代码到服务器
# 将 server 文件夹上传到服务器 scp -r server/ root@your-server:/opt/taotao-tunnel/ 2. 安装依赖
cd /opt/taotao-tunnel/server npm install 3. 修改配置
编辑 server/index.js 顶部的 CONFIG 部分:
const CONFIG = { WS_PORT: 8986, // WebSocket 端口 ADMIN_PORT: 8987, // 管理后台端口 TOKEN: 'your-token', // Token 认证密钥 ADMIN_TOKEN: 'admin', // 管理后台密钥 SSL_ENABLED: false, // 是否启用 SSL SSL_CERT_PATH: '', // SSL 证书路径 SSL_KEY_PATH: '', // SSL 密钥路径 }; 4. 启动服务
# 直接启动 node index.js # 使用 PM2 后台运行(推荐) pm2 start index.js --name taotao-tunnel pm2 save 防火墙配置
# 开放 WebSocket 端口 ufw allow 8986 # 开放管理后台端口 ufw allow 8987 # 开放映射端口范围 ufw allow 10000:60000/tcp ufw allow 10000:60000/udp 端口说明
| 端口 | 用途 | 协议 |
|---|---|---|
8986 | WebSocket 隧道通信 | TCP (ws/wss) |
8987 | 管理后台 Web 界面 | HTTP |
10000-60000 | 自动分配的公网映射端口 | TCP/UDP |
客户端使用
安装客户端
客户端基于 Electron 构建,支持 Windows 系统。
开发模式运行
cd client
npm install
npm start
打包为安装程序
npm run build
当前版本界面能力
- 多服务器配置 — 支持保存多条服务器线路,切换时自动回填地址、端口、SSL 和认证方式。
- 映射列表单行展示 — 每条映射独占一行,方便扫描协议、本地端口、公网端口和域名。
- 本地设置增强 — 支持打开本地配置目录、查看当前绑定地址,并一键补齐远程桌面环境。
- 启动辅助 — 支持开机自启、自动连接,以及「修复开机自启」按钮。
- 连接兼容引擎 — 遇到 SSL / SNI 兼容性问题时,客户端会自动切换更稳的连接方式。
界面概览
服务器配置页面 — 除了基础连接信息,现在还可以折叠管理多套服务器配置。

端口映射页面 — 一条映射一行展示,支持 TCP / UDP、本地端口、公网端口和域名绑定。

本地设置页面 — 新增打开本地配置目录和一键远程桌面设置。

运行日志 — 会记录连接、兼容回退、隧道建立和错误提示,便于定位问题。

连接服务器
- 打开客户端,进入「服务器配置」页面。
- 填写服务器地址和端口,必要时勾选 SSL/TLS。
- 选择登录方式:账号密码 或 Token 令牌。
- 配置端口映射(本地端口 → 公网端口),公网端口可留空或填
0交给服务端自动分配。 - 点击「连接服务器」。
- 看到日志中的「隧道已建立」即表示连接成功。
SSL 加密
启用 SSL 后,客户端与服务端之间的通信将通过 wss:// 加密传输,防止数据被窃听。
服务端配置
- 准备 SSL 证书文件(
fullchain.pem和privkey.key)。 - 在
server/config.json中配置:
{
"SSL_ENABLED": true,
"SSL_CERT_PATH": "/path/to/fullchain.pem",
"SSL_KEY_PATH": "/path/to/privkey.key"
}
- 重启服务端。
客户端配置
在客户端「安全设置」中勾选 启用 SSL/TLS 加密 即可。
账号管理
服务端支持多用户账号密码登录,密码使用 PBKDF2 + Salt 安全存储。
认证模式
| 模式 | 说明 |
|---|---|
| both | 账号密码和 Token 都可以登录(默认,推荐) |
| user | 仅允许账号密码登录,拒绝 Token |
| token | 仅允许 Token 登录,兼容旧版客户端 |
管理用户
在管理后台的「用户管理」Tab 中:
- 添加用户 — 设置用户名、密码、最大映射数
- 编辑用户 — 修改密码、映射限制、备注
- 禁用/启用 — 临时禁止某用户登录
- 删除用户 — 永久删除用户
默认账号
admin,密码 admin。请务必在管理后台修改密码!端口映射
端口映射是内网穿透的核心功能,将你本地的端口映射到服务器的公网端口。
添加映射
在客户端「端口映射配置」页面点击「添加映射」,每条映射会以单行形式显示,便于快速检查。
| 字段 | 说明 | 示例 |
|---|---|---|
| 协议 | TCP 或 UDP | TCP |
| 本地端口 | 你要暴露的本地服务端口 | 3389(远程桌面) |
| 公网端口 | 映射到服务器的端口,可留空 / 填 0 自动分配 | 0 或 5200 |
| 域名 | 可选,绑定的域名 | mstsc.example.com |
常见映射场景
| 场景 | 本地端口 | 协议 |
|---|---|---|
| 远程桌面 (RDP) | 3389 | TCP |
| Web 服务 | 80 / 443 / 3000 | TCP |
| SSH | 22 | TCP |
| 数据库 (MySQL) | 3306 | TCP |
| Minecraft 服务器 | 25565 | TCP |
| 游戏 (UDP) | 自定义 | UDP |
TCP -> 3389 映射。域名绑定
为每个端口映射绑定自定义域名,方便记忆和管理。
- 在 DNS 中将域名解析到你的服务器 IP
- 在客户端映射配置中填写域名字段
- 连接后即可通过域名访问
管理后台
服务端内置了一个功能完善的 Web 管理后台。
访问方式
http://你的服务器IP:8987
使用管理 Token 登录,默认以 server/config.json 中的 ADMIN_TOKEN 配置为准。
功能模块
| 模块 | 功能 |
|---|---|
| 仪表盘 | 在线客户端、运行时间、流量统计、活跃端口、SSL 状态 |
| 客户端管理 | 查看已连接客户端,断开指定客户端 |
| 用户管理 | 创建 / 编辑 / 删除用户,设置权限 |
| 流量统计 | 服务器总流量、各客户端流量明细 |
| 域名绑定 | 查看所有域名绑定关系 |
| 配置设置 | 运行时修改 Token、端口范围、SSL、认证模式等 |
| 服务器日志 | 实时日志查看和导出 |
常见问题
连接报错 “Hostname does not match certificate's altnames”
SSL 证书的域名与你输入的服务器地址不匹配。请确保:
- 服务器地址填写的域名与 SSL 证书完全一致。
- 检查是否有拼写错误。
某些服务器能连,某些服务器需要兼容模式
这是 SSL / SNI 实现差异造成的常见现象。当前客户端会自动尝试兼容回退,并记住该服务器的可用连接方式。
远程桌面连接卡在“正在配置远程会话”
- 本地绑定 IP — 建议使用
127.0.0.1。 - 先执行一键远程桌面设置 — 让系统远程桌面、防火墙和服务一次补齐。
- 确认已添加 TCP -> 3389 映射。
连接成功但无法访问
- 检查服务器防火墙是否开放了对应的公网映射端口。
- 检查本地服务是否正在运行并监听对应端口。
- 确认本地防火墙没有阻止入站连接。
如何实现开机自启?
服务端: 使用 PM2 并执行 pm2 startup + pm2 save。
客户端: 在设置中勾选「开机自动启动」和「启动后自动连接」,必要时点击「修复开机自启」。
更新日志
v2.0 最新版
- 客户端界面升级,新增更紧凑的多服务器管理和单行映射列表。
- 新增智能兼容连接引擎,自动处理部分 SSL / SNI 兼容问题。
- 新增一键远程桌面设置,自动补齐系统项与防火墙规则。
- 新增打开本地配置目录、修复开机自启等辅助能力。
- 日志提示全面汉化,连接过程更容易判断。
- 服务端长期运行稳定性增强,补充心跳清理、UDP 空闲回收和优雅退出。
v1.0
- 基础 TCP / UDP 端口映射。
- Token 认证。
- Electron 客户端。