Board logo

标题: [原创] 手打原创纯干货,你关于翻墙所需要了解的一切! [打印本页]

作者: hallows    时间: 2022-2-12 17:45     标题: 手打原创纯干货,你关于翻墙所需要了解的一切!

我们天天说翻墙?那到底什么是墙?我们在翻什么?我们是怎么翻出去的?墙还能怎么翻?
15年翻墙用户简单探讨一下目前常用的翻墙方式及优劣顺便科普一波墙此贴内的任何内容严禁转出论坛之外。
这个帖子的目的是通过一个帖子一站式地直接完成对翻墙的所有解释与翻墙方法的总结。
这个帖子是一个技术分享与讨论向的帖子,为了规避任何风险,此帖子内部不会直接提供任何翻墙服务供应商的网址或联系方法。

警告!为他人提供翻墙服务器极可能触犯刑法-破环计算机系统罪

(渣排版见谅,建议使用PC访问,不保证移动端的显示效果)
(写起来没刹住车,洋洋洒洒4000多字了。。。大概要读4-5分钟的样子)

一.墙的简介

众所周知,由于某些原因,某些外国网站无法直接访问,这通常是由于遇到了所谓的“墙”,简单来说,墙可以被理解为一个巨大的网络流量过滤器,将不符合规定的流量内容直接进行过滤不予显示。



好问题!墙的工作机制极其复杂,其包含大量的特征匹配与抓包处理和信息拦截工作,据说在几年前,墙开始使用神经网络对网络流量进行启发式分析。虽然我们很难窥见墙是怎么工作的,但是,我们可以清楚地解释墙是如何阻拦我们对外网的访问的,目前所谓的翻墙即为我们直接绕过墙的阻拦部分,利用特殊手段实现对目标的访问。在我们解释墙的作用原理之前,我们有必要先对访问网站的流程进行一个梳理,让我们用访问会所作为例子,通常来说,我们拿到的是一个网址,例如sis001.com,但是计算机在访问这个地址的时候并不知道应该去哪里,计算机只认识类似于【154.84.5.235】这样格式的IP地址,于是便有了DNS服务器DNS服务器的作用就是告诉计算机,sis001.com对应的IP地址是【154.84.5.235】,这样,计算机就可以通过标准的TCP/IP协议栈发起对【154.84.5.235】这个IP地址的直接访问。


读到这里,机智的小伙伴就发现了,那要是计算机搞不到IP地址,那不就连不上了吗?恭喜你,你知道了墙的第一个作用方式:拦截你的DNS查询请求,使你针对名单内的所有域名发起的DNS查询请求直接扣留,因为为了保证你的访问体验,DNS服务默认是由你的网络运营商提供最先的查询,网络运营商可以根据墙的要求直接扣留你针对目标域名的查询或者返回一个奇怪的导航页面的ip地址,例如中国联通网址之家。那么进一步,我们也就有了最简单的翻墙方法:修改DNS服务器,让电脑去外国的DNS服务器上查询,而非使用国内的DNS(感谢海底光缆的大量铺设,修改了DNS服务器并不会让上网出现了可感觉到的延迟)。

虽然我们解决了DNS污染的问题,但是墙也经过了大量的升级,在洪荒年代,DNS污染/拦截就足以拦住95%的网民,甚至没有多少人知道hosts文件的作用(为特定域名直接指定IP地址,绕过了DNS查询的步骤),后来,墙升级了,墙可以针对TCP协议发起拦截,那么,让我们再来简单看一下TCP访问的过程,首先,你的电脑要与目标IP地址建立连接(俗称握手),为了建立连接,你的电脑会先向你的网络供应商发送数据包,网络供应商收到你的数据包以后查看数据包的包头,将这个包转发给包头对应的IP地址的网络服务方,然后对方再根据包头里面的地址把这个数据包转给目标服务器,然后对方通过相同的链路进行回传,向你握手(俗称应答),在你收到应答后,你就知道了完成的数据链路,你们开始在这个链路上传输数据

聪明的小伙伴也许又发现了,那我在你们握手的时候直接强制终止你的链接然后把对方的握手应答给扣留,你们不就没法建立连接了?进一步的也就没法传输数据了?恭喜你,你找到了墙的第二个作用方式:根据数据包头包含的IP地址信息直接进行针对性断连。由于包头里面把你要访问的地址写得很清楚,所以可以轻松找到哪些数据包是要发给【不受欢迎的IP地址】的,也就可以实现对TCP的拦截。

简单总结就是:墙既可以污染你的DNS查询结果,也可以根据你发送数据包的包头目标与包内容直接给你针对性断网。



翻墙简单来说无非几种目的:
1.看国外的新闻,例如BBC(英国央视),太阳报(英国地方台)
2.刷Youtube(美国B站,没弹幕)或者NicoNico(日本B站)
3.从亚马逊(外国京东)之类的网站购物(俗称海淘)
4.看某些可以释放精力的网站比方说PornHub(加拿大91)
5.刷国外社交媒体例如Twitter(美国微博),TikTok(抖音国际版)
6.刷国际论坛如Reddit(外国sis)
7.玩外服游戏(例如EVE)
如果你觉得上面的都没什么吸引力,那不翻墙也无所谓。
翻墙严格来说是犯法的,但是目前由于翻墙的人过多,处于一种所谓的“法不责众”的状态,这里不进行进一步讨论。
你在外网会见到形形色色的人和事,比方说有反华的,有反美的,总之请务必保持你的“独立鉴别事物的能力”,不要被外网带了节奏。

二.翻墙技术的发展与迭代





在2007年之前,墙是不存在的,大家可以自由地访问任意网络资源,随着国家对网络主权的重视,从07年开始,慢慢地有一些网站没法访问了,首当其冲的是一些外国的新闻网站,一些大的成人内容提供站,一些可以帮助金融犯罪的网站。但是早期的墙技术水平极低,就是简单的DNS污染,可以非常轻松地通过修改host文件或者修改DNS服务器到国外地方法来绕过墙。2009年,谷歌甚至发布了自家的服务并承诺免费为全球提供DNS解析服务,这就是著名的【8.8.8.8】(备用地址8.8.4.4),直到现在,这个DNS地址也是我上网时候首选的DNS地址(我的备选通常是国内的114)。







在2010年左右,墙迎来了一波升级,大量的网站开始被墙,并且简单的修改DNS已经无法起效,大量的TCP连接被关闭,在10年-11年左右的几个月里,墙甚至会在发现可疑数据包后给你断网一小段时间(通常是几分钟)再恢复网络。那个时间,VPN(虚拟私人网络-Virtual Private Network)犹如雨后春笋一般出现在互联网上,低廉的搭建成本涌现了一大批VPN服务提供商,翻墙一词正式流传开来了,许多人都在讨论翻墙的技术,在给别人推荐自己的梯子,然而大量的VPN也选择了卷一笔钱就关服跑路,这种服务器在境外的违法基本无法查证,群魔乱舞一词更适合那个时代,当时有技术的人(例如我QAQ)都会选择租一个亚马逊的服务器自己给自己搭VPN。(2012年,通过翻墙,我注册了这个sis账号,当时论坛给正在上高中的我造成了巨大的心理震撼,同时觉醒了我的抖M属性,通过玩SM也认识了现在的女朋友 ^_^)




2013-2014年左右,VPN也开始变得不可靠,鉴于VPN协议孱弱的安全性,大量的VPN服务器被封禁,甚至一度达到了【无梯可用】的境界,国内互联网的翻墙群体一片哀嚎,几则因翻墙入狱的新闻更是让本就不好的环境雪上加霜,黑暗之中,一盏明灯从天而降,那就是——ShadowSocks,著名的SS,基于当时最新的sock5标准进行了安全性的改进,让我们铭记clowwindy,在2015年,由于受到了警告,其宣布永久放弃对ShadowSocks协议的维护与后续开发,同时封存了项目的Github地址(现在项目被SS项目组接手进行后续维护),但是SS的程序思维无疑值得后续所有程序员借鉴,从那以后,新的翻墙方式层出不穷,墙的拦截与识别也开始变得越来越智能




三.常见翻墙技术原理解析



VPN是所有翻墙技术的起点,早期,通过L2TP和PPTP等协议,VPN网络可以在公网上实现点对点的虚拟网络,这让你的电脑和VPN提供方的服务器处在了同一个虚拟的局域网内,进一步的,你可以在这个虚拟的外国服务器提供的网络上对外发送网络请求,但是,VPN只是一种可选加密的连接方式,其安全性是非常差的,并且VPN发起的流量还具有十分明显的特征,可以轻易进行识别并直接进行封锁。



Sock协议破天荒地提出了《将所有流量都交给sock服务器转发》这一核心思路,在你需要访问网络时,你不会直接访问,而是告诉sock服务器,你想访问某地址,由sock服务器代替你发起网络请求,并将请求到的结果转发给你,你的电脑相当有有了一个专门负责对外上网的替身,你只需要维持住你和替身的连接就可以让替身在境外替你访问所有你想访问的网络内容。但是,不幸地,sock5协议并没有过多得关注你和替身之间连接的安全性与流量特征,如果愿意,你发起的所有类型是sock的请求包都可以很快地暴露出来你和你的替身的网络地址,进一步导致封禁。


为了解决这个问题,clowwindy大神想到了一个新方案,给所有的sock请求再套一层加密,在正常数据包内部进一步封装sock请求并通过加密算法对双方的连接进行加密,通过预先沟通确定的密码或密钥进行验证,这就是shadowsocks。显然,这大大加强了你和sock替身之间的连接安全性,并且得益于加密算法的存在,你们的连接变得更加隐蔽了,很难通过拆包得到你的真实意图,你可能就是在简单地进行网络访问,或者换言之,shadowsocks就是为了针对墙的拆包检测而出现的。在这里,我想引用clowwindy本人对shadowsocks的描述:
引用:
一个用 Python 写的 socks 加密代理。加密方法很简单,不过欺骗 GFW 足够了。——clowwindy



shadowsocks似乎已经无敌了,但是后续的安全领域研究表明,其产生的数据流量依然有一定的特征可供神经网络进行识别,
具体可以看这篇论文:
引用:
Deng, Z.; Liu, Z.; Chen, Z.; Guo, Y. The Random Forest Based Detection of Shadowsock's Traffic. 2017 9th International Conference on Intelligent Human-Machine Systems and Cybernetics (IHMSC). August 2017, 2: 75–78 [2018-02-05].
针对这种情况,加密继续获得了改进,V2Ray应用而生,它可以视作是SSR的进一步进化,V2Ray本身并不是一个通信协议,也不是一种加密算法,它更像是一个平台或者是框架,在V2Ray这个平台上,可以同时产生许多许多代理,它们有不同的代理协议,不同的加密,甚至不同的传输方法,比方说,你可以在特定端口运行socks-in-LTS,同时在另外一个端口运行VMess-in-QUIC,V2Ray可以让不同的流量通过不用的端口进行加密和发送或者直接不代理。
很明显,这种“出拳没有章法”的方法也很有效,正所谓“乱拳打死老师傅”,各种加密的未加密的流量混杂着不同的加密方式从你的电脑发向各个地方,即使是真人来抓包也很难判断出来你是不是在翻墙了。


不管是SSR还是V2Ray,他们的作用都是尽可能通过加密来隐藏自己的真实意图,利用混淆等方法来骗过墙,而最近的Trojan直接推翻了这个思路。
Trojan尝试把你的流量伪装成再正常不过的HTTPS流量,就像你正在访问百度一样正常的那种,他的思路也很简单,首先,你的电脑会发送给代理一个非常正常的网页HTTPS握手,但是这个请求的包头有了一点小小的把戏,一旦代理回答了你正确的HTTPS握手应答,你们之间就会直接建立HTTPS隧道,这是极为安全的,但是,后续你们通过这个隧道传输的将不再是你原本请求的正常网页,而是被Trojan加密过的代理请求信息和应答,从墙的视角来看,你只是在访问网页而已。

四.各平台客户端推荐(只推荐客户端软件,不会推荐服务提供方



这个部分很简单,客户端软件百花齐放,我只写我现在用的比较顺手的。


windows平台我会用Clash For Windows,Mac平台则是对应的Clash For Mac,ClashX是这两个软件的核心,它是一个兼容大多数翻墙协议的代理核心,可以在Github上看到相关的源代码,两款软件也可以在Github上直接下载到。


而iPhone上我选择了QuantumultX,一个老牌代理终端,支持订阅连接与大部分代理协议,并且提供了丰富的自定义内容,但是需要美区的AppleID并且需要6美元购买(某宝可以找到充值卡)


至于安卓系统,我还是推荐使用ShadowSocksR for Android,老牌软件,开源且免费,还处于维护状态内。


最后,感谢看到这里的你,如果觉得有帮助还请点一下右上角的红心。
如果有任何感慨或者感受或者问题,都可以在下面写回复,友善讨论~




欢迎光临 SiS001! Board - [第一会所 关闭注册] (http://23.225.255.86/luntan/) Powered by Discuz! 7.2