2022-11-25
今天写完了服务端的程序,把认证部分和转发部分都已经写完了。 接下来就是客户端都部分,客户端还要实现转发和通信,还是挺麻烦的。 昨天刚好通关了宝可梦朱紫,这一作除了优化不行,基本也没什么问题,没玩过前作也不了解。
今天写完了服务端的程序,把认证部分和转发部分都已经写完了。 接下来就是客户端都部分,客户端还要实现转发和通信,还是挺麻烦的。 昨天刚好通关了宝可梦朱紫,这一作除了优化不行,基本也没什么问题,没玩过前作也不了解。
今天基本重写了整个系统的网络结构,写了一天tm的手都麻了, 今年来头一次一天写这么多代码,主要是这个内网穿透的原理和我想象中差非常多: 外部进来连接后需要通知客户端建立新的隧道,然后拿到这个TCP的隧道后,对两个隧道执行连接(就是并行两个读,一个把连接1 读到 连接2,一个把连接2读到连接1)连接结束之后,自动关闭隧道。 ...
草,关于内网穿透的实现我一直的想法是错的. 我以为和内网机器只要建立一个连接就行,之后外部连接直接转内网连接然后分发给外部连接,但是实际上和内网机器建立一个连接就实现外部所有连接的转发是不可能的(你不可能知道内网机器传出的每个数据包到底是给哪个外部连接的),所以正确的方式用过是外部连接进来之后,通知内网机器连接服务端建立新的连接去处理新的外部连接…
今天有一个新的课题,要在FreeBSD 7.0上运行一些现代的程序。 首先是要去找到FreeBSD7.0的镜像源,这个系统是2008年发布的,花了点时间在找到,在官网的系统归档网站。 但是又来了新的问题,就是安装问题,FreeBSD的安装完全是以一个TUI的形式提供的,说实话非常难用,而且步骤非常多,跟着网上的一些老文章也算是完成了这步。 ...
今天一件事编写数据库CURD的部分,第二件事是关于服务端和客户端的验证问题,因为验证是个比较短的过程,所以方案里目前最优先的就是使用HTTP来做这个事情,但是没想到目前比较流行的rust的http库代码都很大,reqwest加进来就足足有1.4兆了,而且客户端还是优化过的,包着轻量化的想法,想了想还是只能用TCP来搞定。 ...
今天重新考虑了一下Tunnel和客户端连接的设计,如果按照昨天的方案来,一个Tunnel对应一个TID,会出现客户端管理困难的问题,所有的客户端只需要输入同一个TID就能直接连接到服务器,而客户端对服务器又是匿名的。 ...
今天工作主要优化了Config文件配置都部分,以及重构了整个项目的结构,现在看起来清爽多了,整个系统今天又想出了优化逻辑的方法,tunnel可以直接生产一个TID,客户端直接通过TID来连接tunnel,这样就不用做特别复杂的校验了,还能一定程度保证客户端的匿名性。下个礼拜开始写客户端和服务器的连接逻辑吧。 ...
今天主要是编写服务端的端口转发部分:A端口转发进来的数据发送给B端口,B端口进来发给A端口。中间也遇到了一些问题。 evio不支持异步读写,不过这个在issue里面也找到了解决方案,可以通过连接手动唤醒,出发数据接收的回调。 客户端的通信问题,因为服务端是没法主动去连接客户端的,只能被动接收。搞得我一开始的想法都被推翻了,屮啊。在客户端在连接服务器之前还需要进行一次通信,来知道具体是哪个端口执行长连接。 不过后面就差不多搞定了。 ...
今天主要编写服务端的代码,大概也就打了个框架,还有就是我放弃了iris,原因是因为这个框架太重了,加上iris都文档还写在github wiki里,md这个github的wiki巨tm难用,目录栏字体小,加上访问巨慢,体验极差。 ...
今天主要研究Socks5反向代理的问题,最后想完的时候都已经下午了,说实话一上午的时间都浪费掉了。 一开始我还以为只要代理机器做一个TCP转发就行,但是不行(因为转发需要目标机,这样Sock代理就失去意义了),然后我又想了一个做Socks双重代理,服务端代理,目标代理机器再一个代理,但是这样哪里怪怪的,后面才想到实际上只要服务端做转发就可以了,将代理流量转发到代理机器上。 ...