A Magic Tutorial ⭐️

2 天前
3

A Magic Tutorial ⭐️

这是一个面向萌新的科学上网不完全使用指北!

Note

👀 以下是杂谈和词汇表(比较长),请耐心阅读。

(如果比较懒,可以直接跳转到 ✨ 开始吧!)

🍥 在开始之前

Across the Great Wall we can reach every corner in the world.

Across the Great Wall we can reach every corner in the world.

1987 年 9 月 20 日 20 点 55 分,从北京向海外发出中国第一封电子邮件,揭开了中国大陆使用互联网的序幕。中国互联网在国际上的第一个声音就此发出。

Across the Great Wall we can reach every corner in the world.

这里不得不引用 Clouder 的话:

由于某些神秘的东方力量的影响,神州大地已与外界隔着一层可悲的厚障壁了。然而,邪恶的境外势力的糖衣炮弹总是蛊惑着数不胜数的懵懂少年,让他们时时不满足于四角的天空。

上帝或许将大门关上了,但城墙上仍有无数仁人志士留下的狗洞罅隙可供通行。猫抓老鼠的游戏经久不衰,然而在马伯庸设想的寂静之城真正到来前,我们依然能苟延残喘、岁月静好。

科学上网,从来都是难者不会、会者不难。在全球互联网上,有着大量的科学上网相关信息,然而在局域网上,你却很难见到。这先有鸡还是先有蛋的困局,也许只有靠口口相传方能打破。

📕 词汇表

突破网络审查或突破网络封锁,在中国大陆俗称翻墙科学上网等,是指通过技术方式绕过网络审查的措施。在中国大陆,突破网络审查一般指突破防火长城,访问被其封锁的网站,实现此类功能软件通常被称作梯子.....(From Wikipedia

读这段文字可能还是有点迷糊 🌀,我会在几个问题中带你了解这些词语。


Q: 为什么?它是如何运作的?

A: 因为有防火长城(Great FireWall, GFW),中华人民共和国的互联网审查系统,其监控所有经过国际网关的通讯,对认为不符合中国官方要求的传输内容,进行干扰、阻断、屏蔽。。

这里放张图可以让你直观地理解运作方式:

Topology of the Chinese firewall

Topology of the Chinese firewall

(深色模式下看不清,可以在新标签页中打开。)

具体内容可以在科学上网后在 Wikipedia 上查看。(是的,Wikipedia 也被封锁了 🐢。)


Q: 科学上网是如何突破审查的?

A: 尽管现在的科学上网产业异常发达,各种各样的奇技淫巧令人目不暇接,其实本质上,都无非是代理:

Excalidraw Loading...

比如目的地是 google.com,用户无法直接连接,但是用户可以把请求发给代理服务器,让在国外的代理服务器访问 google.com,再把收到的响应发给用户。这样就完成了一个连接。

原本 A 地到 B 地畅通无阻,可是,GFW 在两地之间造了一堵墙,只不过,A 地到 X 地尚可通行,X 地到 B 地畅通无阻,那么 X 地即为代理服务器。但这并不代表 A 地到 X 地永远可以通行,当墙发现你的行径之后,自会添砖加瓦。

实际上「墙」这种比喻并不合理,因为 GFW 是黑名单机制而非白名单。

在实际应用中,这两条传输线条中间可以有一些花样。比如经典的通过国内服务器中转、国外落地:

Excalidraw Loading...

以上方式是在传输路径上躲避/突破 GFW 的审查。

还有一种躲避审查的方式是在代理协议上隐藏自己。代理协议通常会对请求进行加密和混淆来成功通过 GFW 的审查。同时代理协议还能提高访问速度和突破网站的区域限制(如 Netflix 等流媒体平台),使用户获得更好的体验。

你是一位快递员,为用户送包裹。用户给你了一个外包装写着 google.com 的包裹,在过安检的时候被拦了下来,不让运输。但是聪明的你修改了文字 / 又套了层壳,顺利通过。

代理协议五花八门,以下都是代理协议 🔮:

  • Shadowsocks (SS)
  • ShadowsocksR (SSR)
  • Vmess
  • Vless
  • Trojan
  • Hysteria
  • ...

🌈 总结:

  1. 分成两种方式来谈比较方便理解,通常这两种方式会一起使用,各有各的功能和优点。
  2. 一般来说,这一切依然经过了 GFW 的审查,GFW 没有封锁代理服务器,用户就可以通过代理服务器作为「跳板」来访问目标。

(此外还有专线(IPLC, IEPL)等方法,不经过 GFW 直接连接海外,可以自己了解。)

🧩 其他词语:

  • 节点: 包含代理服务器地址和协议、很多参数的一个对象。
  • 订阅 / Subscription / Profile: 包含节点、分组、规则等的一个远程配置文件。可以方便地导入客户端,定时更新,也方便分享。
  • 机场: 指提供科学上网服务的商家。通常提供多个节点,并且有订阅链接。

Q: 科学上网合法吗?

A: 仅从技术层面看,科学上网没有对 GFW 做任何的干预,完全被动地接受其蹂躏,似乎是不违法的。

然而从实际层面,你可以被判非法入侵计算机罪。但从更实际的角度看,有很大的概率你并不会被抓,因为科学上网的人数基数很大 💨。

但被抓了你也只能受着,说不定是网警年底冲业绩,大家都不容易,多一点理解,多一点包容,让世界多一点美好。毕竟,在制度性的规约下,恶是平庸的 (The Banality of Evil)。

关于科学上网的法理层面讨论,曾经有一系列我非常敬佩的文章。其中的第一篇是:个人使用 vpn"翻墙"是否违法?——基于规范性法律文件、案例以及相关计算机技术的分析与讨论。有兴趣的可以自行阅读。

(请注意,外交部、部分高校使用专线进行科学上网是合法的。)

天子犯法,不与庶民同罪。

✨ 开始吧!

进入正题。如何成为一个时尚潮流、与全球接轨的、具有国际化视野的、具备充分科学上网能力的好少年。 咳咳 👀。

工欲善其事,必先利其器。

下载与安装

首先你需要确定你使用的是什么系统和架构...... 不知道架构的就都试试,通常是第一个,咕咕咕。

导入订阅

对于 FlClash(Windows / macOS / Android):

复制链接:

https://server.w0l.top/awa/my-sub

转到 配置,点击右下角 “ + ”,选择 URL,粘贴链接,点击 提交 按钮。


对于 Shadowrocket(iOS / iPadOS):

复制链接:

https://server.w0l.top/awa/my-sub

点右上角 “ + ”,类型选择 “ Subscription ”,填入 URL,名称随便取一个即可。

开启代理

  • FlClash ( Windows / macOS / Android ): 转到 仪表盘,点击右下角按钮。
  • Shadowrocket ( iOS / iPadOS ): 主页最上方 “未连接” 右侧,打开开关。

然后打开 Google 试试吧!🎉

进阶

到这里,你已经可以科学上网了,下面会写一些技术上的进阶知识与操作。(以 Clash 为主,Shadowrocket 类似)

工作原理

我们可以把流量路径分为三层:

  • Inbound 入站:由客户端到代理软件,比如:浏览器 -> Clash。
  • Outbound 出站:由代理软件到远端服务器,比如:Clash -> 节点。
  • 第三层:由远端服务器到目标服务器,比如:节点 -> Google。
Excalidraw Loading...

入站

系统代理

当你运行应用时,应用会启动 Clash 内核。Clash 会在本地监听一个端口并根据配置文件开启 HTTP / SOCKS5 / ... 的简单代理,能让系统、程序使用。

在 Clash For Windows 中有一个选项叫做「系统代理」,FlClash 按下启动开关时也是一样的效果。当你打开这个选项时,代理软件就会修改系统设置中的代理选项,设置为 Clash 的入站。但是,系统设置中的代理往往只可设置为 HTTP 代理,而且这个 HTTP 代理只对浏览器有效。

这也就是为什么 Windows 明明设置了系统代理,访问 GitHub 也很快,但在终端里运行 git clone [repo] 却很慢的原因。与 Android / iOS 不同,这种代理并不是系统层的,在命令行下,执行 git 命令不会自动读取系统代理设置和环境变量。不过 git 提供手动设置 git config –global http.proxy example,那要是在某些情况下没法手动设置呢?

TUN 模式

一些老用户可能了解过一款软件 SSTAP,这是很久前一个为了让某些游戏走代理而设计的软件,它的原理也就是 TAP 模式。所谓 TAP 模式其实就是在设备上安装一个虚拟的网络接口,从而使得系统所有的流量都能进入代理软件。

与 TAP 相比,TUN 工作在更高的网络层,不需要虚拟的 TAP 设备,也能实现跟 TAP 类似的效果。不仅如此,TUN 的性能也比 TAP 要好。

同时也可以解决 关机前忘记关掉,导致开机后打不开网页 的问题。

其他

其实还有一种方式:直接在路由器上运行代理。比如安装了 OpenClash 的软路由,手机、电脑直接连接无线网络 / 插网线,在设备上不需要安装任何软件,流量在软路由中被代理。

规则模式

访问国内网站时直连(不通过代理),速度更快。国外网站则相反。但总不可能每次都手动切换吧?或者我想屏蔽一些广告域名、让指定网站使用指定节点。这时规则模式就起到了很大的作用。

分流规则写在配置文件(订阅)内,大概长这样:

proxy-groups:
- name: "group1"
  type: select
  proxies:
  - proxy1
  - proxy2
  - DIRECT
  ...
- name: "group2"
  ...

rules:
# 类型,参数,策略 (,no-resolve)
- DOMAIN-SUFFIX,google.com,group1 # 匹配域名后缀 google.com,使用 Google 策略组
- DOMAIN-KEYWORD,facebook,group2 # 匹配域名关键字 facebook,使用 group1 策略组
- IP-CIDR,192.168.0.0/16,DIRECT # 192.168 内网,直连
- GEOIP,CN,DIRECT # 中国的 IP 地址,直连
- ...

在使用规则模式时,Clash 会根据这些规则来将数据包路由到指定的代理服务器 / 策略组 / 直连等。

如我的配置文件中的策略组:

  • 🚀 节点选择:手动选择使用的节点,通常用 ♻️ 自动选择 就可以了。
  • ♻️ 自动选择:自动选择延迟最低的节点。type: url-test
  • 🎯 直连
  • 🌍 国外媒体:
    • 🚀 节点选择♻️ 自动选择🎯 直连 和所有节点中选择节点。默认为 🚀 节点选择
    • 规则:匹配国外流媒体(Netflix、TikTok 等)。
  • 🍎 Apple:
    • (同上)
    • 规则:匹配 Apple 网站和服务。
  • 💬 Google FCM
  • Ⓜ️ Microsoft
  • 🐟 漏网之鱼:
    • (同上)
    • 规则:所有上述规则没有匹配到的,使用此策略组。

例子(顺便带上入站的过程):

  1. 你在浏览器中打开了 Netflix。
  2. 浏览器通过系统代理把流量转发到 Clash。
  3. Clash 开始匹配规则,命中 DOMAIN-SUFFIX,netflix.com,🌍 国外媒体
  4. 🌍 国外媒体 策略组 -> 🚀 节点选择 策略组。
  5. 🚀 节点选择策略组 -> ♻️自动选择 策略组。
  6. ♻️自动选择 策略组 -> 节点1
  7. Clash 把流量发给 节点1

FAQ 常见问题

Q:电脑重启之后,打不开网页了。「未连接到互联网:代理服务器出现问题,或者地址有误。」

A:应该是 Clash 没有正常关闭,这里提供两种解决办法:

  1. (Windows) 设置 - 网络和 Internet - 代理,把“手动设置代理”下的开关关掉。
  2. 进入 Clash,打开代理,关闭代理。
  3. 下次关机前记得手动关闭 Clash
  4. (推荐) 直接使用 TUN 模式就好啦

(还有什么问题的话,先去 Google 搜一搜,或者在底下评论告诉我 awa)

拓展

这里是拓展内容,有兴趣的可以阅读一下。其实不用了解过多知识,到「进阶」篇就够用了,其他知识在网上也都搜得到。你可以跳过这部分,看看「结语」吧。

DNS 污染与 Fake IP

先简单介绍一下啥是 DNS:

DNS:域名系统(Domain Name System)。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 (说人话就是:将域名转换为 IP 地址)

由于大多数中国用户、路由器都使用阿里 DNS(223.5.5.5)与腾讯 DNSPod(119.29.29.29)等,国内可以直接操控其 DNS 解析。这种方式叫做 DNS 污染。GFW 不仅对特定的 IP 阻断,还对相当一部分域名进行 DNS 污染,所以我们还需要对 DNS 查询请求进行代理,通过节点查询国外权威 DNS 服务器(像干净的 Google DNS 的 8.8.8.8 被 GFW 阻断了,无法直连)。当然现在还有 TLS、DoH(DNS over HTTPS)、QUIC 等新型方式解决 DNS 污染。

(关于 DNS 污染还有很多抽象的大事,如 2014 年中国大陆网络异常事件 等。)

但每次请求都先判断,再请求远程服务器 DNS ,再返回解析结果,客户端再请求,再代理,这样一来二去就极大浪费了时间。于是,Fake IP 技术出现了。

所谓 Fake IP,也就是虚假的 IP。客户端进行的每次 DNS 请求,都会直接被代理软件劫持,然后代理软件不会先判断,而是立即返回一个假的 IP。于此同时,代理软件再去判断并请求真实的 IP,保存到自己的表中。而客户端向这个虚假的 IP 进行连接时,都会由代理软件直接从表中取出结果,然后对流量进行进一步处理。这样以来就节省了大约一半的时间。如果对更多技术细节感兴趣的话,可以去看 Sukka 的 浅谈在代理环境中的 DNS 解析行为

但是这种方式也不是没有缺点,因为有着 DNS 缓存机制,把代理软件关掉后,客户端还是去请求这个虚假的 IP 地址,就得不到响应了。这时需要手动刷新系统 / 浏览器的 DNS 缓存才能解决。不过 Fake IP 比较常见的应用场景是在软路由上,毕竟软路由大部分时间都是 24 小时运行的,代理不会关,所以一般不会出现问题。

结语

还是 Clouder 的话:

现在,你已经穿越了新时代的防火长城,呼吸到了境外自由的空气,享受着地球村构想的实现,成为了一位世界公民。

也许你对外网充满了幻想,但一个残酷的事实是——这里同样是地球。这里同样充满了反智、营销、低俗、欺诈、暴力等等人性的黑暗面,国外也有审查,也有封禁,也有政治敏感。这里不是乌托邦,不是伊甸园,这里,只是「The Reality」。

你经历了重重关卡,过五关斩六将,终于完成了这趟旅途。但你也不必为此沾沾自喜,这没有什么,你学会了科学上网并不代表你高人一等,这只是一种生存技能。对于皇土以外的万千蛮洋,这就是他们常规、琐碎的生活。有的人穷尽一生都在找寻通往罗马的道路,而有的人出生就在罗马,这很正常。

科学上网,给予我们的不是自由,不是随心所欲,也不是精彩纷呈。这只是我们本就应得的,是全球互联时代的真实样貌。从柏拉图的昏暗洞穴中走出的我们,也不过是堪堪见到真正世界的样貌罢了。

当然,你可以拓展视野,真正成为一名国际化新青年。你可以方便地关注世界新闻,从多个不同角度(至少是国内和海外两个)看待问题,方便地获取各种网站上的资源,不用忍受时断时续的痛苦下载和被污染被阻断的传输链路。你可以与网友交谈,享受文化碰撞的头脑风暴。你可以尽情冲浪,弥补国内性压抑社会缺失的见识。你也可以谈古论今、挥斥方遒,只不过需要注意的,即使你科学上网,依然不代表你是匿名、安全的,Big Brother is still watching you.

互联网审查、GFW 的存在自然有其合理性与战略价值,这一点不可否认。但科学上网,同样有着非常重大的意义。我不想用「存在即合理」为这样的制度辩护,从我的主观情感出发,我就是明确反对这样的制度。某种角度上说,这何尝不是「闭关锁国」呢?讽刺的是,国外可以访问国内服务器,而国内无法访问国外服务器。这高高的城墙,单向阻隔着的正是其子民。

这场攻防的游戏也许会继续下去,维持一个微妙的平衡。未来究竟是海阔天空,还是 1984,光凭个人是无法预测的。被时代洪流裹挟着的我们,顾好自己就已经要竭尽全力了。

「人是生而自由,却无往不在枷锁之中。」无非是从一个铁屋走向另一个。但至少,我来过,我见过。

「自由从来不容易,不是一个姿态,一个手势,自由是永恒的克服重力,挣扎向上飞行。」某种意义上,我所追寻的并非自由,而仅仅是更多的选择、更多的体验。

没有什么,比告诉你四角的天空外还有璀璨的星河,而你却永远思而不得更令人痛苦的了。

更新于 2024/09/01。

参考文章

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...