用golang简单做一个内网穿透小工具!

一个个人需求,需要简单的穿透一下 家里的电脑,也不需要多稳定,也没有并发。然后 通过http可以访问到内网的 一个网站,

因为服务端 是linux 系统 ,内网是 windows10服务器

所以 就采用 用golang这个语言来实现,他的跨平台编译 还是很方便的。

原理:nginx 作为 web服务,通过nginx 反向代理 把请求 转发给 golang写的 一个端口,golang 是一个服务端 和一个内网 端,golang 的软件 启动后 服务端 和内网 会建立一个隧道,把 nginx转发的数据 发送给内网服务器 从而做到内网穿透。

觉得这个小工具挺有意思的,这里简单的分享给大家。有想玩一玩的小伙伴 可以看看。

go 版本:1.23.3

项目结构 :

服务端:

客户端:

配置文件:

代码实现较为简单,安全方面只做了 简单的 token验证。
如果有需要 只建议大家 参考

效果:

这里 nginx 怎么做反向代理 就不总结了。大家可以百度。

go windows 下编译 linux 和 exe 可执行文件

查看全局变量

bash 复制代码
go env 

如果 goos =windows 可编译 exe 执行文件。

cmd执行以下命令:

64位 linux

bash 复制代码
set GOARCH=amd64
set GOOS=linux

切换 64位 windows

bash 复制代码
set GOARCH=amd64
set GOOS=windows

需要编译哪个系统的可执行文件 就执行上面哪个命令 执行后 开始编译。

在 项目根目录下执行:

windows exe 编译命令:

bash 复制代码
go build -o myapp.exe main.go

linux 执行文件命令

bash 复制代码
go build -o myapp main.go

编译命令 只是举例 大家根据实际需求更改文件名

linux下后台执行命令 :

bash 复制代码
nohup ./myapp > output.log 2>&1 &

源码已经准备好了。需要的小伙伴,可以去下载,参考一下~

https://wwwoop.com/home/Index/projectInfo?goodsId=37&typeParam=2

相关推荐
忆~遂愿2 分钟前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
沐知全栈开发6 分钟前
API 类别 - 交互
开发语言
PP东9 分钟前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
ManThink Technology14 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
invicinble18 分钟前
springboot的核心实现机制原理
java·spring boot·后端
人道领域26 分钟前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
铅笔侠_小龙虾27 分钟前
Flutter 实战: 计算器
开发语言·javascript·flutter
全栈老石44 分钟前
Python 异步生存手册:给被 JS async/await 宠坏的全栈工程师
后端·python
2的n次方_1 小时前
Runtime 执行提交机制:NPU 硬件队列的管理与任务原子化下发
c语言·开发语言
space62123271 小时前
在SpringBoot项目中集成MongoDB
spring boot·后端·mongodb