19BIG期间,网络环境又恶化了,唉,要连个Github,google这么难.本来一直用SS,手上有很多台VPS.基本都挂了SS。没想到这次居然封IP,奶奶的,虽说换一个IP就能用段时间,但是也不是办法啊,难道一直换IP?总有IP用完的时候,加上有些VPS服务商好说话帮你换了,有些就不换。唉,本来人就懒,能用别人的就用别人的,最近在研究NodeJS,加上环境形势所迫,自己动下手吧,权当练习NodeJS编程吧。(脑子里突然浮现出 爱国者电影的情节 官逼民那个啥)
前提基本知识
所谓墙,可能有不对啊,不知道他们是怎么运作的,但是在我这个程序员看来,不过就是一个包过滤和包嗅探。(最早有DNS污染,暂时不讨论,这种改HOST文件就能解决的事情,有点像土法炼钢,墙虽然还用着,但是早就淘汰了了)无论是代理,SSH,各种隧道,Tor,包括SS都是有一定的包协议,也就是格式存在的,所以通过研究了解包协议,然后墙就可以定点清除之间的通讯。
比如证书型代理,通过伪装一个请求,拿到证书,定点清楚所有IP,比如Tor伪装客户端获取服务节点IP定点清除。
比如HTTP,明文代理,则是更进一步,通过解析包,进行内容判断,不过这个数据如果是明码好实现,加密之后,对于即时通讯其实是有难度的。所以直接BAN…
这也是为啥没有明显特征的SS很难识别,很难清除的原因,当然最近还是。。。。
所以协议越多,也就是包越复杂,越容易被识别,墙的目的是只是阻碍通讯而已,随便找一个就行。
备注:关于SS的通讯格式,https://loggerhead.me/posts/shadowsocks-yuan-ma-fen-xi-xie-yi-yu-jie-gou.html 有说明
解决方案(验证中)
SS被请去和咖啡的那位说,翻那个啥,最重要的不是你要翻出去是不要暴露你的在提供翻的服务。所以各种加密,关键是开始阶段的问询还是有特征的。不大看好最近插件的更新,唉。当然特征是免不了的,但是如果省略掉联络问询,并且把包的定义交给客户来定义,是不是就会产生无数种特征,无数种特征也就等于了没特征。我们无非就是要建一个隧道,用Socket编程,省去一切不必要的定义,无脑数据传输。
格式是
数字(即包长) + 包数据
!这种特征广泛用于Socket通讯中,如果这个被封基本就大中华局域网了,GFW存在的价值就没有了。其实包括这个也是可以改的
具体数据包的格式用户自定义。
特征可以是各式各样的比如
12byte包头,32byte包头信息,64k数据 ;
16byte包头,16byte包头信息,32K数据;
32byte包头,32byte包头信息,12K数据
48byte包头,无包头信息,48K数据
(包头主要用于识别有效数据方便丢弃,和判断异常链接,包头信息用于扩展机能,RSV完全可以没有)你可以在包头里面写点问候GFW的话,也可以给你的女朋友或者老婆表白祝福一下。如果墙识别了你的格式,华丽的换一个。。。。
包数据部分,自选加密压缩,可以不加密不压缩,聊胜于无,比如我这样的看到我的数据在网上明码传递不爽的。。。。
一万句话归一句话,这个只是个通道软件,实现从你的端口透明到另外一个机器上另外一个端口的通讯。。。用者自担其责。
回到标题,翻一道墙所需要的技术?
代码200行足以。。。
https://github.com/akechi1980/ATunnel
最后附上附上一些天朝法律