概述
淘淘内网穿透是一款轻量级的 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
首次启动会自动创建默认用户 admin / admin,请登录管理后台及时修改密码。
防火墙配置
# 开放 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 加密:

端口映射页面 — 添加和管理 TCP/UDP 端口映射规则:

流量统计页面 — 查看实时速率、入站/出站流量和活跃连接:

本地网络设置 — 选择本地绑定 IP,查看网络接口信息:

运行日志 — 查看连接日志、错误信息,支持导出:

客户端左侧导航栏包含以下页面:
- 服务器配置 — 服务器地址、端口、认证信息、SSL 设置
- 流量统计 — 实时速率、入站/出站统计、活跃连接
- 端口映射 — 管理 TCP/UDP 端口映射规则
- 网络接口 — 选择本地绑定 IP
- 日志 — 连接日志、错误信息
连接服务器
- 打开客户端,进入「服务器配置」页面
- 填写服务器地址和端口
- 选择登录方式:账号密码 或 Token 令牌
- 配置端口映射(本地端口 → 公网端口)
- 点击「连接服务器」
- 看到「认证成功,隧道已建立」即连接成功
连接成功后,其他设备可以通过 公网IP:公网端口 访问你的本地服务。
SSL 加密
启用 SSL 后,客户端与服务端之间的通信将通过 wss:// 加密传输,防止数据被窃听。
服务端配置
- 准备 SSL 证书文件(
fullchain.pem和privkey.key) - 修改服务端配置或在管理后台「配置设置」中填写:
SSL_ENABLED: true
SSL_CERT_PATH: '/path/to/fullchain.pem'
SSL_KEY_PATH: '/path/to/privkey.key'
- 重启服务端
客户端配置
在客户端「安全设置」中勾选 启用 SSL/TLS 加密 即可。
启用 SSL 后,服务器地址必须使用域名(如 code.vdcheat.com),不能使用 IP 地址。证书的域名必须与地址一致。
账号管理
服务端支持多用户账号密码登录,密码使用 PBKDF2 + Salt 安全存储。
认证模式
| 模式 | 说明 |
|---|---|
| both | 账号密码和 Token 都可以登录(默认,推荐) |
| user | 仅允许账号密码登录,拒绝 Token |
| token | 仅允许 Token 登录,兼容旧版客户端 |
管理用户
在管理后台的「用户管理」Tab 中:
- 添加用户 — 设置用户名、密码、最大映射数
- 编辑用户 — 修改密码、映射限制、备注
- 禁用/启用 — 临时禁止某用户登录
- 删除用户 — 永久删除用户
默认账号
首次启动默认创建用户
admin,密码 admin。请务必在管理后台修改密码!端口映射
端口映射是内网穿透的核心功能,将你本地的端口映射到服务器的公网端口。
添加映射
在客户端「端口映射」页面点击「添加映射」,填写:
| 字段 | 说明 | 示例 |
|---|---|---|
| 协议 | TCP 或 UDP | TCP |
| 本地端口 | 你要暴露的本地服务端口 | 3389(远程桌面) |
| 公网端口 | 映射到服务器的端口(0=自动分配) | 0 或 14378 |
| 域名 | 可选,绑定的域名 | mstsc.example.com |
常见映射场景
| 场景 | 本地端口 | 协议 |
|---|---|---|
| 远程桌面 (RDP) | 3389 | TCP |
| Web 服务 | 80 / 443 / 3000 | TCP |
| SSH | 22 | TCP |
| 数据库 (MySQL) | 3306 | TCP |
| Minecraft 服务器 | 25565 | TCP |
| 游戏 (UDP) | 自定义 | UDP |
本地绑定 IP 建议使用
127.0.0.1(默认)。如果你的服务监听在其他 IP,可在「网络接口」中切换。域名绑定
为每个端口映射绑定自定义域名,方便记忆和管理。
- 在 DNS 中将域名解析到你的服务器 IP
- 在客户端映射配置中填写域名字段
- 连接后即可通过域名访问
管理后台
服务端内置了一个功能完善的 Web 管理后台。
访问方式
http://你的服务器IP:8987
使用管理 Token 登录(默认 admin123,可在配置中修改)。
功能模块
| 模块 | 功能 |
|---|---|
| 仪表盘 | 在线客户端、运行时间、流量统计、活跃端口、SSL 状态 |
| 客户端管理 | 查看已连接客户端,断开指定客户端 |
| 用户管理 | 创建/编辑/删除用户,设置权限 |
| 流量统计 | 服务器总流量、各客户端流量明细 |
| 域名绑定 | 查看所有域名绑定关系 |
| 配置设置 | 运行时修改 Token、端口范围、SSL、认证模式等 |
| 服务器日志 | 实时日志查看和导出 |
常见问题
连接报错 "Hostname does not match certificate's altnames"
SSL 证书的域名与你输入的服务器地址不匹配。请确保:
- 服务器地址填写的域名与 SSL 证书完全一致
- 检查是否有拼写错误
远程桌面连接卡在"正在配置远程会话"
可能的原因和解决方案:
- 本地绑定 IP — 建议使用
127.0.0.1,不要用局域网 IP - 确保服务端和客户端都是最新版本 — 旧版本可能存在数据转发 bug
- 检查远程桌面是否已开启 — 设置 → 系统 → 远程桌面 → 启用
连接成功但无法访问
- 检查服务器防火墙是否开放了对应的公网映射端口
- 检查本地服务是否正在运行并监听对应端口
- 确认本地防火墙没有阻止入站连接
如何实现开机自启?
服务端: 使用 PM2 并执行 pm2 startup + pm2 save
客户端: 在设置中勾选「开机自启动」和「自动连接」
速度慢怎么办?
- 确保服务器带宽充足
- 启用 SSL 后建议关闭不必要的压缩
- 本项目已内置背压控制和二进制高效传输协议,性能已优化
更新日志
v2.0 最新版
- 新增账号密码登录系统,支持多用户管理
- 新增 SSL/TLS 加密传输支持
- 新增 Web 管理后台(用户管理、配置设置、日志查看)
- 新增域名绑定功能
- 新增流量统计和实时速率显示
- 新增自动端口分配
- 优化二进制传输协议,提升传输性能
- 修复 RDP 远程桌面连接数据丢失问题
- 新增背压控制,防止缓冲区溢出
- 全新 Claude 风格官网和文档
v1.0
- 基础 TCP/UDP 端口映射
- Token 认证
- Electron 客户端