Golang Go语言中想自写一个内网穿透的工具,从哪些原理入门比较好呢?
最近家里的宽带被封了 IP 公网,查询后的 IP 都是经过转换的内网 IP 不想用 花生壳也不想做 ngrok 就想自己做一个轮子 听说 ngrok 也是用 go 写的 那在写这个东西之前是不是有个硬知识得要学习呢? 想问一下大伙们 有哪些知识或资料需要必备的?
Golang Go语言中想自写一个内网穿透的工具,从哪些原理入门比较好呢?
10 回复
从读 ngrok 和 frp 的源码开始
更多关于Golang Go语言中想自写一个内网穿透的工具,从哪些原理入门比较好呢?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
tcp/udp, 存储转发, proxy/reverse proxy,再随便来一点读写代码能力
ssh 代理下就好了
最简单的
只需要知道端口转发就好了。
从最简单的起就是 TCP 转发。
监听 A 端口,将获取的数据包转发到 B 端口
这个值得认真研究,谢谢
谢谢指点
其实和 5 楼说的差不多,主要是 io.copy
现成的方案就是 ssh https://www.v2ex.com/t/83715#r_783439
在Golang中自写一个内网穿透工具,可以从以下几个原理入手:
- 理解内网穿透的基本概念:内网穿透是指通过某种技术手段,使得外网用户能够访问到处于内网环境中的服务器或服务。这通常需要一个中介服务器,它既有公网IP地址,又能与内网服务器进行通信。
- 掌握TCP/IP协议:内网穿透工具的实现通常涉及TCP/IP协议。你需要了解TCP连接的建立、数据传输和连接关闭的过程,以及如何在Go语言中使用
net
包来操作TCP连接。 - 实现端口转发:端口转发是内网穿透的核心功能。你可以编写一个Go程序,监听某个端口上的TCP连接,并将这些连接的数据转发到内网服务器的指定端口上。
- 处理连接池和并发:为了处理多个并发连接,你需要实现一个连接池。这包括连接的创建、管理、复用和释放。在Go语言中,你可以使用goroutine和channel来处理并发任务。
- 考虑安全性:内网穿透工具涉及网络通信,因此安全性是一个重要问题。你需要考虑如何加密传输的数据、如何验证连接的身份以及如何处理可能的攻击。
综上所述,自写一个内网穿透工具需要深入理解网络通信原理、TCP/IP协议、端口转发以及并发处理等技术。同时,安全性也是一个不可忽视的问题。