Natok - 让内网穿透实现访问自由

natok 让内网穿透技术为您打开一扇通往自由的大门,无论身处何地,都能轻松访问本地服务器或内网资源,突破网络环境的限制。

  • 🌱 natok 是一个将局域网内个人服务代理到公网可访问的内网穿透工具。基于 tcp 协议、支持 udp 协议, 支持任何 tcp 上层协议(列如: http、https、ssh、telnet、data base、remote desktop....)。
  • 🤔 目前市面上提供类似服务的有: 花生壳、natapp、ngrok 等等。当然, 这些工具都很优秀; 但是免费提供的服务都很有限, 想要有比较好的体验都需要支付一定的套餐费用, 由于数据包会流经第三方, 因此总归有些不太友好。
  • 🚀 natok-server 与 natok-cli 都基于 GO 语言开发, 先天并发支持; 运行时的内存开销也很低, 一般在二十 M 左右 。
  • 🔥 安全升级:可自定义访问白名单,热更新可随时修改;自定义监听范围,global=可全局访问,local=仅本地访问(127.0.0.1:port 通过 nginx 等代理域名转发)。

下载安装


📌 运行 natok-server 相关的准备

  • 公网 ip 的服务器主机,配置无特殊要求,如果带宽能高点最好。
  • 数据库:推荐 sqlite,便捷无需任何配置;支持 mysql,便于数据维护。

一、natok-server 使用 sqlite:conf.yaml

natok: web.port: 1000 #natok·admin管理后台web页面 server: port: 1001 #natok-cli的通信;若更换需与natok-cli的端口保持一致 cert-pem-path: web/s-cert.pem #TSL加密密钥;若更换需与natok-cli保持一致 cert-key-path: web/s-cert.key #TSL加密证书;若更换需与natok-cli保持一致 log-file-path: web/out.log #程序日志输出文件 datasource: type: sqlite db-suffix: beta #库后缀,可指定 table-prefix: "" #表前缀,可指定

二、natok-server 使用 mysql:conf.yaml

natok: web.port: 1000 #natok·admin管理后台web页面 server: port: 1001 #natok-cli的通信;若更换需与natok-cli的端口保持一致 cert-pem-path: web/s-cert.pem #TSL加密密钥;若更换需与natok-cli保持一致 cert-key-path: web/s-cert.key #TSL加密证书;若更换需与natok-cli保持一致 log-file-path: web/out.log #程序日志输出文件 datasource: type: mysql host: 127.0.0.1 #自己的数据库地址 port: 3306 #自己的数据库端口 username: natok #数据库账号 password: "123456" #数据库密码 db-suffix: beta #库后缀,可指定 table-prefix: "" #表前缀,可指定
  • windows 系统启动: 双击 natok-server.exe
# 注册服务,自动提取管理员权限: natok-server.exe install # 卸载服务,自动提取管理员权限: natok-server.exe uninstall # 启停服务,自动提取管理员权限: natok-server.exe start/stop # 启停服务,终端管理员权限 net start/stop natok-server
  • Linux 系统启动:
# 授予natok-server可执权限 chmod 755 natok-server # 启动应用 nohup ./natok-server > /dev/null 2>&1 &

配置 systemd 服务 sudo vim /etc/systemd/system/natok-server.service

[Unit] # 服务名称,可自定义 Description = natok-server After = network.target syslog.target Wants = network.target [Service] Type = simple # 设置工作目录 WorkingDirectory=/data/server/natok-server # 启动的命令,需修改为您的安装路径 ExecStart = /data/server/natok-server/natok-server [Install] WantedBy = multi-user.target

相关命令

# 启动 sudo systemctl start natok-server # 停止 sudo systemctl stop natok-server # 重启 sudo systemctl restart natok-server # 查看状态 sudo systemctl status natok-server # 设置开机自启动 sudo systemctl enable natok-server

natok-server 开发环境搭建

Go 1.22.0 及以上(推荐)

# 配置 GOPROXY 环境变量 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
# 克隆项目 git clone https://github.com/natokay/go-natok-server.git # 进入项目目录 cd go-natok-server # 更新/下载依赖 go mod tidy go mod vendor # 设置目标可执行程序操作系统构架,包括 386,amd64,arm go env -w GOARCH=amd64 # 设置可执行程序运行操作系统,支持 darwin,freebsd,linux,windows go env -w GOOS=windows # golang windows 程序获取管理员权限(UAC) # go install github.com/akavel/rsrc@latest # go env GOPATH 将里路径bin的目录配置到环境变量 rsrc -manifest nac.manifest -o nac.syso # cd到main.go目录,打包命令 go build # 启动程序 ./natok-server.exe

初次启动 natok-server 会初始化随机密码,可在日志或日志文件查看。

image.png

版本描述

natok:1.0.0

natok-cli 与 natok-server 网络代理通信基本功能实现。

natok:1.1.0

natok-cli 与 natok-server 支持 windows 平台注册为服务运行,可支持开机自启,保证服务畅通。

natok:1.2.0

natok-cli 可与多个 natok-server 保持连接,支持从多个不同的 natok-server 来访问 natok-cli,以实现更快及更优的网络通信。

natok:1.3.0

natok-cli 与 natok-server 可支持 udp 网络代理。

natok:1.4.0

natok-server 的端口访问,支持白名单限制,重要端口(如:linux-22,windows-3389)可限制访问的 ip 地址。 natok-server 的端口监听,可选择监听范围:global=全局,local=本地。

natok:1.5.0

natok-server 数据库类型支持 sqlite、mysql,推荐使用 sqlite,部署更便捷。

natok:1.6.0

natok-server 与 natok-client 内部通讯采用连接池,即从公网访问 natok-server 后,会将连接放入连接池中,以便后续的请求时能更快的响应。

natok:1.7.0

正在规划中...


NATOK 平台界面预览

登录页面

image20250303220714r1kbi0b.png

统计概览

image20250303220743etmceyf.png

代理管理

image20250303220953vz1hjpb.png

image20250303221323a0q00lk.png

端口映射

image20250303221053j7b3tsy.png

image20250303221456pkfl4wt.png

标签名单

image20250303221123zl9f76j.png

image.png

  • natok
    1 引用 • 7 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    498 引用 • 1395 回帖 • 249 关注
  • 网络
    142 引用 • 184 回帖 • 4 关注
3 操作
natokplayxy 在 2025-03-11 00:44:30 更新了该帖
natokplayxy 在 2025-03-05 21:00:23 更新了该帖
natokplayxy 在 2025-03-05 20:51:46 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • natokplayxy 1

    刚刚看了 gost.run,它确实很不错,看起来是基于配置文件的方式。natok 这个除了 c-s 的最基本配置,代理端口的配置管理都是在服务端页面配置的,用起来会方便很多,安全方面可以通过访问名单 ip 配置与监听范围来控制。功能可能没有 gost.run 那么全面,因为这个是我自己在业余独立开发的,使用了 3 年多,也在不定期进行完善,感觉挺稳定的,才开放出来为程序有需要的伙伴们提供方便。

    1 回复
  • 其他回帖
  • 1218520326

    紧包大腿 ❤️

  • 看起来不错。

    和 gost.run 比如何?

    1 回复
  • 都挺好的!

    gost.run 的架构设计更加解耦一些。

  • 查看全部回帖