概述

淘淘内网穿透是一款轻量级的 NAT 穿透工具,基于 Node.js + WebSocket 构建。它可以将你局域网内的服务(如 Web 服务器、远程桌面、数据库等)安全地暴露到公网。

系统架构

组件技术说明
服务端Node.js部署在公网服务器,负责隧道转发
客户端Electron桌面应用,配置映射并建立隧道
管理后台HTMLWeb 界面,管理用户、配置、日志
通信协议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

端口说明

端口用途协议
8986WebSocket 隧道通信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
  • 日志 — 连接日志、错误信息

连接服务器

  1. 打开客户端,进入「服务器配置」页面
  2. 填写服务器地址和端口
  3. 选择登录方式:账号密码Token 令牌
  4. 配置端口映射(本地端口 → 公网端口)
  5. 点击「连接服务器」
  6. 看到「认证成功,隧道已建立」即连接成功
连接成功后,其他设备可以通过 公网IP:公网端口 访问你的本地服务。

SSL 加密

启用 SSL 后,客户端与服务端之间的通信将通过 wss:// 加密传输,防止数据被窃听。

服务端配置

  1. 准备 SSL 证书文件(fullchain.pemprivkey.key
  2. 修改服务端配置或在管理后台「配置设置」中填写:
SSL_ENABLED: true
SSL_CERT_PATH: '/path/to/fullchain.pem'
SSL_KEY_PATH: '/path/to/privkey.key'
  1. 重启服务端

客户端配置

在客户端「安全设置」中勾选 启用 SSL/TLS 加密 即可。

启用 SSL 后,服务器地址必须使用域名(如 code.vdcheat.com),不能使用 IP 地址。证书的域名必须与地址一致。

账号管理

服务端支持多用户账号密码登录,密码使用 PBKDF2 + Salt 安全存储。

认证模式

模式说明
both账号密码和 Token 都可以登录(默认,推荐)
user仅允许账号密码登录,拒绝 Token
token仅允许 Token 登录,兼容旧版客户端

管理用户

在管理后台的「用户管理」Tab 中:

  • 添加用户 — 设置用户名、密码、最大映射数
  • 编辑用户 — 修改密码、映射限制、备注
  • 禁用/启用 — 临时禁止某用户登录
  • 删除用户 — 永久删除用户

默认账号

首次启动默认创建用户 admin,密码 admin。请务必在管理后台修改密码!

端口映射

端口映射是内网穿透的核心功能,将你本地的端口映射到服务器的公网端口。

添加映射

在客户端「端口映射」页面点击「添加映射」,填写:

字段说明示例
协议TCP 或 UDPTCP
本地端口你要暴露的本地服务端口3389(远程桌面)
公网端口映射到服务器的端口(0=自动分配)014378
域名可选,绑定的域名mstsc.example.com

常见映射场景

场景本地端口协议
远程桌面 (RDP)3389TCP
Web 服务80 / 443 / 3000TCP
SSH22TCP
数据库 (MySQL)3306TCP
Minecraft 服务器25565TCP
游戏 (UDP)自定义UDP
本地绑定 IP 建议使用 127.0.0.1(默认)。如果你的服务监听在其他 IP,可在「网络接口」中切换。

域名绑定

为每个端口映射绑定自定义域名,方便记忆和管理。

  1. 在 DNS 中将域名解析到你的服务器 IP
  2. 在客户端映射配置中填写域名字段
  3. 连接后即可通过域名访问

管理后台

服务端内置了一个功能完善的 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 客户端