Posted in: VPN翻墙博客

全网最全的翻牆技术大全-墙知乎

我打算写一篇文章,来整理翻牆技术大全,对于想要了解翻牆技术细节的朋友们,可以有个参考,本文会白话详细解释各种翻墙技术,包含SSR,VPN, Trojan, V2ray 等,虽然对于只想要马上翻墙回国或出国的朋友们,或许没有太大帮助,但至少可有一个依据,本文就不推荐任何VPN了,当存作为一篇知识性文章,且引用各種參考資料。

如果单纯只是想看我推荐的翻牆软体,可以直接参考: 翻墙、科学上网指南-2021年更新

我們會介紹:

  • VPN 翻墙技术
  • SSR 翻墙技术
  • Trojan 翻墙技术
  • V2Ray 翻墙技术

VPN 翻墙技术

翻墙、科学上网传输协议|墙知乎

VPN(虛擬私人網路)可以视为是一种最古老的翻墙技术,听过翻墙的朋友们,肯定听过VPN这个名词,现在来解释VPN跟翻墙是什么关系。VPN是一种加密的方式,能过保护使用者的IP、位置、个人资讯不外泄,所以VPN可以视作是一种伪装(如果更学术的讲,叫做加密)。经过伪装(加密)后的使用者IP、位置、跟个人资讯,就可以翻墙来访问一些被防火墙屏蔽的网站。

不如换这个比喻:如果你的车开出你的车道,有人可以跟着你,看看你要去哪裡,你在目的地多久了,什么时候回来。他们甚至可以偷看您的车内并了解有关您的更多信息。看看车上有谁。假如你使用 VPN,就好像您从家裡开车进入地下隧道,进入封闭的停车场,换到另一辆车,然后开车出去。想要知道你讯息的人没有人知道你去了哪裡。。

当您的 VPN 开启时,任何窥探您网络的人都无法看到您在做什么。即使窥探者控製网络。最常见的就是无处不在且方便的公共 Wi-Fi 网络。例如,您怎么知道“starbucks_wifi”实际上真的是是咖啡店的 Wi-Fi 网络?事实上,一个流行的安全研究人员常常做的恶作剧是创建一个与免费、流行的服务同名的网络,看看有多少设备会自动连接。。 

即使即使您倾向于信任他人,仍然不应该信任您的互联网服务提供商 (ISP)。在中国,您的 ISP 可以深入了解您的在线活动。更糟糕的是,中国决定允许您的 ISP 出售您的匿名浏览历史记录。甚至可能出售您的数据,这十分恶劣了。VPN 甚至可以防止您的 ISP 监视您的活动,基本上VPN对于你的自身网路安全是至关重要的。

许多美国人也常使用VPN,目的不是为了翻墙,而是想要保护自己的资料不外泄(像是我自己在疫情期间,需要远端办公,也是透过VPN)。目前主流的VPN均为美国公司所开发,然而由于中国政府近年来强力打击加密流量,因此绝大多数的VPN已经无法在中国使用

关于加密的细节,有兴趣的朋友们可以搜寻RSA加密(透过数论学家认为质因数分解对电脑来说是很难的问题)来应用,另一种是所谓椭圆式加密,透过椭圆曲线上面的阿贝尔群来操作,除了这两种最常见的加密方式,还有运用其他数学结构来加密的,像是最短向量(Shortest Vector)。基本上加密就是用到许多数学跟程式来完成,是一门非常高深的学问。甚至牵涉到着名的P versus NP的问题。


SSR 翻墙技术

多型态多技术的类型成为VPN软体主流

主流SSR翻墙|墙知乎

传统的VPN是虚拟私人网路,常见用途是在学校或企业内建立私有的网路系统。SSR 则可以想像成是透过一个代理人,这个代理人(专有名称是Sock5)可以访问被屏蔽的网站,借由与这个代理人传输资料来翻墙,而且资料同样经过加密,而且没有专用网路,所以相较传统VPN来说,SSR更不容易被防火墙侦测到


SSR原本是一个开源专案,后因中国政府打压,源代码已经下架,但由于传统VPN多数已被墙,SSR现在已经取代VPN成为国内翻墙的主流。近年来近年来由于中国打击翻墙手段趋严,许多国内VPN像是光年VPN,熊猫VPN等暂时无法使用,而且常会有团队因为法律而跑路,因此建议使用欧美VPN,安全性有保证,团队也不会突然消失,造成使用者血本无归。

除了SSR之外,還有像是V2-ray 跟Trojan。Trojan是一个比较新的翻墙软件,在设计时采用了更适应国情的思路。 在穿透GFW时,人们认为强加密和随机混淆可能会欺骗GFW的过滤机制。 然而,Trojan实现了这个思路的反面:它模仿了互联网上最常见的HTTPS协议,以诱骗GFW认为它就是HTTPS,从而不被识别。

简单说,由于传统VPN的技术已经被中国防火墙识破,所以现在都是使用多技术的方式来翻墙。 像是光年VPN採用的就是特殊SSR技术。


Trojan 翻墙技术

現在來講講Trojan翻墻技術,Trojan 是一個開源專案,更多細節跟操作可以參考github的官網。建議熟悉程式的玩家自己去探求,如果是程式小白,當作故事看看就好。簡單就是透過Trojan來模仿成HTTPS。

在騙過 GFW 时,人们认为强加密和随机混淆可能会欺骗 GFW。然而,特洛伊木马实现了截然相反的功能:它模仿最常见的跨墙协议HTTPS,以欺骗 GFW 认为它是HTTPS

有效的木马协议

当木马客户端(木马客户端只是一个木马协议SOCKS5转换器。没有特別的)连接到服务器时,它首先执行真正的 TLS信息交換。如果 信息交換 成功,所有后续流量将受到保护TLS;否则,服务器将像任何HTTPS服务器一样立即关闭连接。(木马现在也支持对普通 HTTP 请求的类似 nginx 的响应。)然后客户端发送以下结构:

+-----------------------+---------+----------------+---------+----------+
| hex(SHA224(password)) |  CRLF   | Trojan Request |  CRLF   | Payload  |
+-----------------------+---------+----------------+---------+----------+
|          56           | X'0D0A' |    Variable    | X'0D0A' | Variable |
+-----------------------+---------+----------------+---------+----------+

where Trojan Request is a SOCKS5-like request:

+-----+------+----------+----------+
| CMD | ATYP | DST.ADDR | DST.PORT |
+-----+------+----------+----------+
|  1  |  1   | Variable |    2     |
+-----+------+----------+----------+

where:

    o  CMD
        o  CONNECT X'01'
        o  UDP ASSOCIATE X'03'
    o  ATYP address type of following address
        o  IP V4 address: X'01'
        o  DOMAINNAME: X'03'
        o  IP V6 address: X'04'
    o  DST.ADDR desired destination address
    o  DST.PORT desired destination port in network octet order

如果连接是 a UDP ASSOCIATE,则每个UDP数据包具有以下格式:

+------+----------+----------+--------+---------+----------+
| ATYP | DST.ADDR | DST.PORT | Length |  CRLF   | Payload  |
+------+----------+----------+--------+---------+----------+
|  1   | Variable |    2     |   2    | X'0D0A' | Variable |
+------+----------+----------+--------+---------+----------+

当服务器收到第一个数据包时,它会检查散列密码是否正确以及木马请求是否有效。如果不是,则该协议被视为“其他协议”。请注意,第一个数据包将附加有效负载。这避免了长度模式检测并且可以减少要发送的数据包的数量。

如果请求有效,特洛伊木马服务器连接到由DST.ADDRDST.PORT字段指示的端点,并在端点和特洛伊木马客户端之间打开直接隧道。

其他协议

因为通常将特洛伊木马服务器假定为HTTPS服务器,所以侦听套接字始终是TLS套接字。执行TLS交換后,如果木马服务器确定流量是“其他协议”,则在预设端点(默认为127.0.0.1:80本地HTTP服务器)到客户端之间打开隧道,以便预设端点控制解密TLS流量.

防检测

主动检测

所有没有正确结构和密码的连接都将被重定向到预设的端点,因此HTTP如果可疑的探针连接(或者只是您的粉丝连接到您的博客 XD),木马服务器的行为与该端点完全相同(默认情况下)。

被动检测

因为流量受到保护TLS,如果您正在访问一个HTTP站点,流量看起来是一样的HTTPS(握手RTT后只有一个TLS);如果您没有访问某个HTTP站点,则流量看起来与HTTPS保持活动或WebSocket. 因此,木马也可以绕过 ISPQoS限制。


Ray 翻墙技术

最後來說說近年很紅的V2Ray. 技術細節可以參考V2Ray Beginniner's Guide。或是GitHub https://github.com/v2fly/v2ray-step-by-step

簡單說,V2Ray可以當作是進化版的SSR,包含各種不同的混淆跟偽裝。

V2Ray 本身不是协议或规避系统。相反,V2Ray 是一个平台或框架,允许您运行一个或多个代理,具有各种分层代理协议、传输和混淆。例如,您可以在一个端口上运行 SOCKS-in-TLS,在另一个端口上运行 VMess-in-QUIC(可以选择混淆 QUIC 数据包)。在客户端,您可以配置路由来控制什么流量应该使用什么代理,或者根本不应该被代理。

在最底层,V2Ray 支持多种代理协议,有些是混淆的,有些则不是:

有一个可选的mux(多路复用)层通过一个代理连接隧道传输多个流。

代理协议本身并不是通过任何特定类型的网络连接实现的。相反,您必须为每个指定传输

  • 一个TCP 连接
  • mKCP,一种使用 UDP 数据包实现的可靠通道。我不确定 mKCP 与KCP有何不同,如果有的话。本 BBS 的读者会回忆起之前关于 Turbo Tunnel 内部会话层的讨论中的 KCP(#9#14)。
  • 基于 TCP的WebSocket 连接
  • HTTP/2
  • 一个QUIC 连接

任何传输层都可以选择应用一层 TLS。TLS 选项对于 HTTP/2 和 QUIC 传输是必需的。

最后,在最高级别,一些传输支持额外的、可选的混淆选项:

V2Ray 模型提供了很大的灵活性。您可以设置未经身份验证的 SOCKS 代理而不进行任何加密,或者您可以设置仅对授权用户开放的 VMess,通过 WebSocket 和 TLS 进行隧道传输。

V2Ray 和 Shadowsocks 有什么区别?

不同的是Shadowsocks只是一个简单的代理工具;它是一种加密协议。但是,V2Ray 是作为一个平台设计的,任何开发者都可以使用 V2Ray 提供的模块来开发新的代理软件。

熟悉Shadowsocks历史的人都应该知道,它是clowwindy开发的一款自用软件。开发的初衷是让穿越防火墙和审查变得简单高效。在clowwindy 将Shadowsocks 开源之前,它作为私有代理协议已经使用了很长时间。V2Ray 是在 clowwindy 受到中国政府威胁后开发的,而 Project V 团队则是为了抗议而开发的。由于历史背景不同,他们具有不同的特点。

单纯说Shadowsocks是单代理协议,V2Ray比单协议代理复杂。Shadowsocks 听起来有点黯淡?当然不是!从另一个角度来说,Shadowsocks 易于部署,而 V2Ray 在部署时有更复杂的配置。簡單說V2Ray就是進化版的SSR

既然 V2Ray 比较复杂,那我们为什么要用它呢?

事物的优点和缺点总是随之而来。例如,V2Ray 具有以下优点:

  • 全新强大的协议:V2Ray采用全新自主研发的VMess协议,改善了Shadowsocks现有的一些缺点,更难被防火墙检测到。
  • 更好的性能:更好的网络性能,具体数据可以看V2Ray官方博客
  • 更多特性:以下是V2Ray的一些特性:
    • mKCP:V2Ray 上的 KCP 协议实现,不需要另外安装 kcptun。
    • 动态端口:动态改变通信端口,对抗长期大流量端口的限速
    • 路由特性:可以自由设置指定数据包的流向,屏蔽广告,开启反跟踪
    • 出站代理,或者说链代理,使用许多链接来获得更好的隐私
    • 混淆:类似于ShadowsocksR的混淆,mKCP的数据包也可以混淆。混淆其他协议流量,增加检测难度
    • WebSocket 协议:只使用 WebSocket 代理,或用于 CDN 中间代理(更好的抗阻塞)
    • Mux:复用,进一步提高代理的并发性能

有任何问题或想法,欢迎提出,也欢迎参考我的: 翻墙、科学上网指南-2021年更新

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注