小良内网穿透

工具人小良 · 内网穿透软件 简介  

这是一套开源免费、AI 智能体(通过 MCP)都能使用的 TCP 内网穿透工具。它基于 Go 语言采用 C/S 架构, 由公网服务端 nattserver 和内网客户端 nattuser 组成。 服务端负责公网监听、客户端授权、隧道状态和流量统计;客户端负责连接服务端、绑定本地目标服务, 并把公网访问流量转发到内网 TCP 服务。

当前版本v0.1,只支持 TCP 端口穿透,不包含 UDP、HTTP 域名转发、P2P 打洞。

⚠️ 注意: 使用或编译本软件前须阅读、理解并同意 免责声明 的内容,若不同意可选择其他如 FRP、花生壳、Ngrok 等同类软件。 禁止利用本软件从事任何触犯中华人民共和国及其本软件部署地相关法律法规的行为。

下载方式

百度网盘链接(提取码: 6666): https://pan.baidu.com/s/1SvAqFQfEbizim0t7q6beeQ

视频介绍和详细教程

详细教程

开源地址

GitHub:https://github.com/gongjuliang/xiaoliang02

GitCode:https://gitcode.com/gongjuliang/xiaoliang02

核心特性

项目结构

nattserver\ 服务端项目 nattuser\ 客户端项目 skills\ 项目 AI Skill

服务端 默认运行时母目录:

nattserver\xiaoliang02_server\ config\config.json data\nattserver.db data\sm2_private.pem data\sm2_public.pem logs\YYYY-MM-DD.log logs\audit\YYYY-MM-DD.jsonl ssl\web.crt ssl\web.key

客户端 默认运行时母目录:

nattuser\xiaoliang02_user\ config\config.json data\nattuser.db data\sm2_private.pem data\sm2_public.pem logs\YYYY-MM-DD.log logs\audit\YYYY-MM-DD.jsonl ssl\web.crt ssl\web.key

默认启动只读取上述母目录中的 config.json。显式传入 -config <path> 时仍支持 .json.yaml.yml

默认端口

服务端:

用途默认值
Web 管理后台0.0.0.0:25510
MCP 接口0.0.0.0:25510/mcp
客户端控制连接0.0.0.0:25511
客户端数据连接0.0.0.0:25512
公网映射端口范围0-65535

客户端:

用途默认值
Web 管理后台127.0.0.1:25520
MCP 接口127.0.0.1:25520/mcp
默认服务端控制端口25511
默认服务端数据端口25512

启动前会检查本机监听端口是否被占用。服务端检查 Web、控制、数据端口;客户端检查本机 Web 端口。

快速开始

1. 启动服务端

cd 项目文件夹路径\nattserver
        go run .

首次启动访问:

http://127.0.0.1:25510/init.html

初始化页分两步:

  1. 配置运行模式、端口、数据库路径和 Web 控制台 HTTPS。
  2. 创建控制台管理员账号密码,并勾选“已阅读并同意《用户协议》”。

2. 启动客户端

cd 项目文件夹路径\nattuser
        go run .

首次启动访问:

http://127.0.0.1:25520/init.html

客户端初始化时只配置默认控制端口和默认数据端口,不配置默认服务端地址。 服务端地址在新增隧道连接时填写。

3. 显式配置启动

cd 项目文件夹路径\nattserver
        go run . -config xiaoliang02_server\config\config.json

        cd 项目文件夹路径\nattuser
        go run . -config xiaoliang02_user\config\config.json

4. 编译

cd 项目文件夹路径\nattserver
        go build -p 1 ./...

        cd 项目文件夹路径\nattuser
        go build -p 1 ./...

编译后的 exe 放到空文件夹直接启动时,程序会以 exe 所在目录作为工作目录, 并自动创建 xiaoliang02_server/xiaoliang02_user/

基本使用流程

  1. 启动并初始化 nattserver
  2. 在服务端后台新增客户端授权,复制生成的客户端秘钥。
  3. 在服务端后台新增 TCP 隧道,填写公网监听地址和公网监听端口;本地地址和本地端口不在服务端填写。
  4. 根据需要勾选“nattuser 连接后自动启动”。
  5. 启动并初始化 nattuser
  6. 在客户端后台新增隧道连接,填写服务端地址、控制端口、数据端口、服务端隧道秘钥、本地目标地址和本地目标端口。
  7. 启动客户端隧道连接后,通过服务端公网端口访问内网 TCP 服务。

隧道归属规则:

MCP 使用

两端 MCP 都使用标准 Streamable HTTP JSON-RPC:

POST http://<host>:<port>/mcp

鉴权方式:

Authorization: Bearer <MCP_KEY>

或:

X-MCP-Token: <MCP_KEY>

支持方法:

服务端常用工具:

客户端常用工具:

客户端新增隧道连接工具参数: nameserver_hostclient_secretlocal_hostlocal_port 为必填; server_portdata_port 可省略,省略时使用客户端配置里的默认控制端口和数据端口。

工具发现示例:

{
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/list",
            "params": {}
        }

工具调用示例:

{
            "jsonrpc": "2.0",
            "id": 2,
            "method": "tools/call",
            "params": {
            "name": "server.list_tunnels",
            "arguments": {
            "page": 1,
            "page_size": 20
            }
            }
        }

测试

服务端:

cd 项目文件夹路径\nattserver
        go test ./... -count=1 -p 1
        go build -p 1 ./...

客户端:

cd 项目文件夹路径\nattuser
        go test ./... -count=1 -p 1
        go build -p 1 ./...

如果 Windows 下测试临时 exe 被占用,可以设置独立 GOTMPDIR 后重试。

相关文档

代码仓库

GitCode:

https://gitcode.com/gongjuliang/xiaoliang02

开源协议适用

1. 默认许可协议

本软件默认基于 GNU Affero General Public License v3.0 (AGPL-3.0) 开源协议发布。 除非您符合下面的第 2 条规定的例外条件能获得MIT开源协议,否则您的使用、修改、分发行为均受 AGPL-3.0 约束。

AGPL-3.0 协议全文见项目根目录下的 LICENSE 文件,或访问: https://www.gnu.org/licenses/agpl-3.0.html

2. 例外许可条件

在同时满足以下全部条件时,您自动获得本软件的 MIT 开源协议 授权:

  1. 关注要求: 您在以下任一平台 关注 官方账号 “工具人小良” 成为粉丝,且关注状态持续有效:
    • 哔哩哔哩 (账号uid:4298067)
    • 抖音(抖音号:76133222833)
    • 快手
    • 小红书
  2. 身份要求: 您的账号主体为 自然人(非企业、非个体工商户)。

注:企业或个体工商户需要联系开发者本人获取 MIT 开源授权书,否则请遵循 AGPL-3.0 开源协议。

3. 授权限制与撤销

  1. 不可转让: MIT 授权仅关注账号本人使用,不得转让、出租、出借给第三方。
  2. 持续义务: 获得 MIT 授权后,如您取消关注或将账号主体变更为企业/组织,授权自动终止。
  3. 违规后果: 未完成例外许可条件且违反 AGPL-3.0 开源协议的行为,开发者有权追究违约责任。已分发的衍生作品仍需遵守 AGPL-3.0 协议。
  4. 追溯效力: 若 MIT 授权撤销/终止后,后续分发行为须恢复适用 AGPL-3.0。

4. 协议冲突处理

免责声明 及 AGPL-3.0 协议共同构成完整的许可条款。冲突时优先级如下:

  1. 免责声明 中的强制性条款(特别是免责、责任限制条款)
  2. AGPL-3.0 协议文本(符合上述例外许可条件的自然人本项则为 MIT 协议)

© 工具人小良 · 小良内网穿透