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 会初始化随机密码,可在日志或日志文件查看。
版本描述
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 平台界面预览
登录页面
统计概览
代理管理
端口映射
标签名单
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于