网络封锁与突破技术完全指南
写在前面:这是一份关于DNS污染、SNI阻断及其突破方案的深度技术笔记。内容基于对Gemini AI的提问整理而成,用生动的比喻帮助理解复杂的网络技术原理。
目录
- 第1章 前言:从L站被墙说起
- 第2章 基础知识
- 第3章 被墙的技术原理
- 第4章 深度解析:污染是如何发生的
- 第5章 延伸思考:关于GFW
- 第6章 突破方案
- 第8章 深入理解:VPN vs 代理
- 第9章 Clash的三种工作模式
- 第10章 计算机网络分层详解
- 第11章 总结与对比
第1章 前言:从L站被墙说起
最近L站被墙了,我当时就好奇被墙的原理是啥呢,后来问AI后才懂了一点,整理了一下做个笔记,给大家分享一下。
被墙就是不让访问了,国内无法直连了。从技术层面来说,被墙主要通过两种手段实现:DNS 干扰 和 SNI 阻断。
术语说明:
- DNS 干扰是一个广义概念,包括多种干扰DNS正常工作的方法(如DNS污染、DNS劫持、DNS丢包等)
- **DNS 污染(DNS Poisoning)**是DNS干扰的一种具体实现方式,也是GFW(防火长城)主要使用的技术手段
- 本笔记重点讲解DNS 污染的原理,因为这是最常见的被墙方式
在深入了解这两种技术之前,我们需要先掌握一些基础知识。
第2章 基础知识
2.1 DNS:互联网的地址簿
首先我们要有个基本的常识:我们访问的网站那些 baidu.com 是域名,但实际上我们访问的是IP地址。但是IP地址太难记住了(比如 142.250.185.46),所以才有了域名。
DNS的作用:当我们在浏览器输入域名时,需要DNS服务把它解析成IP地址。
简单比喻:DNS就像是互联网的"地址簿"或"地图"。你想去"朋友的论坛"(域名),你查了一下地图(DNS服务器),地图告诉你,这家店在"XX路100号"(IP地址)。然后你就可以出发了。
2.2 SNI:HTTPS时代的"门牌号"
现在很多网站都使用 https:// 开头(即 HTTPS),意思是你的访问是"加密"的,很安全。
但这里有个问题:一个"商场"(一台服务器,一个IP地址)里可能开了很多家店(很多个网站)。
当你到达"XX路100号"(IP地址)这个商场门口时,商场的保安(服务器)需要知道你到底想去哪家店(A网站、B网站还是"朋友的论坛"),这样他才能把你转接到正确的商店。
你告诉保安你要去哪家店的这张"便条",就叫做 SNI (Server Name Indication,服务器名称指示)。
关键问题:为了让保安(服务器)能看懂,这张写着"我要去’朋友的论坛’"的 SNI 便条是明文的,没有加密!
这就好比你在商场入口大厅里,必须大声喊出你要去的商店名字。
第3章 被墙的技术原理
3.1 DNS污染:破坏你的地图
你对 DNS 的理解很对,它就像是互联网的"地址簿"或"地图"。
正常情况
你想去"朋友的论坛"(域名),你查了一下地图(DNS服务器),地图告诉你,这家店在"XX路100号"(IP地址)。然后你就可以出发了。
DNS 干扰(DNS Poisoning/Spoofing)
这时候,有人在你的地图上做了手脚。
方式一(投毒/污染):你去查地图,一个"干扰者"抢先告诉你一个假的地址。比如,他告诉你"朋友的论坛"在"一个不存在的荒地"(一个错误的、无法访问的IP地址),或者干脆把你指到"警察局"(某个被封锁的IP)。
方式二(干扰):你去查地图,干扰者就在旁边大喊大叫,让你根本听不清地图(DNS服务器)给你的正确答案。
结果:无论哪种方式,你都拿不到正确的"IP地址",导致你的浏览器"找不到服务器",你自然就访问不了这个网站了。
3.2 SNI阻断:在商场门口拦住你
这个稍微复杂一点,但也很容易理解。
SNI 阻断(SNI Blocking)的工作原理
“SNI 阻断"就是指,防火墙(可以理解为商场门口一个更高级别的"检查员”)一直在竖着耳朵听。
- 正常情况:你喊:“我要去A商店!” 检查员看A商店是合规的,就放你进去了。
- SNI 阻断:你喊:“我要去’朋友的论坛’!” 检查员的黑名单上正好有"朋友的论坛"。他一听到这个名字,根本不关心你后续要干嘛(即使你后续的通信是加密的),他立刻切断你的连接(RESET),把你赶出商场。
结果:你的浏览器会显示"连接被重置"或"无法访问此网站"。
3.3 双重防御体系:护城河与主城墙
为什么要同时使用DNS污染和SNI阻断这两种手段呢?这是一个精心设计的分层防御体系。
DNS 污染 = “护城河”
- 特点:成本极低,覆盖面极广。
- 目标:拦截 90% 的普通用户。
- 工作方式:
- DNS 查询(问路)的请求包非常小,特征明显(UDP 协议,53 端口)。"防火墙"处理这些请求非常省力。
- 它不需要关心你后续干嘛,只要一听到有人"问路"(DNS 请求),它就给个假地址。
- 比喻:
- "护城河"挖起来很便宜。
- 它能轻松挡住所有"不会游泳、没造船"的普通进攻者(普通用户)。
- 90% 的人一看到"护城河"就放弃了(访问网站失败)。
SNI 阻断 = “主城墙”
- 特点:成本极高,精准打击。
- 目标:拦截那 10% 绕过了"护城河"的技术用户。
- 工作方式:
- "防火墙"必须实时监控在它那里经过的每一个
https连接(TLS 握手包),并从里面揪出那个明文的 SNI 字段。 - 这个计算量是极其恐怖的,需要非常昂贵的硬件设备才能支撑。
- "防火墙"必须实时监控在它那里经过的每一个
- 比喻:
- 总有一些"进攻者"(比如你)比较聪明,自己造了船(比如用了
hosts文件或 DoH/DoT)渡过了"护城河"。 - 这时,"防火墙"就必须启用它的**“主城墙”**(SNI 阻断)。
- 当这个"造船"的进攻者到达城门下(服务器 IP),开始喊"我是来找’朋友论坛’的!"(SNI),城墙上的弓箭手(阻断器)就会立刻把他射杀(RST 重置连接)。
- 总有一些"进攻者"(比如你)比较聪明,自己造了船(比如用了
第4章 深度解析:污染是如何发生的
4.1 为什么我的域名配置会被污染?
如果你之前在websocket那节课买过域名的话,你可能会好奇:我之前在阿里云买过域名,我记得配置的时候就只需要把域名和IP地址绑定就没了,我自己都配置好了,别人又没我账号他怎么使用我的域名跟IP地址绑定污染的呢?
答案:这个问题不在于你"源头"的配置被改了,而在于普通用户查询你这个配置的过程被污染了。
你的阿里云配置(源头)
- 你:你是"发件人"。
- 你的阿里云 DNS 配置:你填写的"官方快递单"。
- 上面清清楚楚地写着:
- 收件人:
我的论坛(域名) - 地址:
A 小区 1 栋 1 号(你的真实 IP 地址)
- 事实:这张"快递单"的原件在你手里(在阿里云的服务器上),没人能改动它。你是对的。
普通用户的访问(查询过程)
- 用户:一个"访客",他想去
我的论坛。 - 用户的 DNS 请求:访客需要先知道"地址",所以他会去"公共查询点"(比如他当地的电信/移动 DNS 服务器,或者 8.8.8.8)问路。
4.2 DNS污染的两种实现方式
现在,“防火墙”(干扰者)登场了。它有两个时机可以"污染":
方式一:污染"公共查询点"(DNS 缓存投毒)
这是最大规模的。
- “公共查询点”(比如某省的电信 DNS)收到第一个访客的请求,它也不知道地址,所以它会去查询你的"官方快递单"(访问阿里云的权威 DNS)。
- 关键时刻:就在"查询点"发出这个请求的瞬间,"防火墙"也在监听。
- “防火墙"会抢答!它会伪装成"阿里云”,抢在真正的阿里云回复之前,给"公共查询点"一个假的答案。
- "防火墙"说:“
我的论坛在Z 小区 99 栋 9 号(一个错误的、被封锁的 IP)!” - "公共查询点"很傻很天真,它收到了这个最快到达的假答案,就信以为真了。
- 结果(投毒):"公共查询点"把这个错误地址(
Z 小区 99 号)"缓存"了下来。在接下来的一天里,所有来这个"查询点"问路的用户(可能几万、几十万人),全都被告知了Z 小区 99 号这个假地址。
关键理解:你的"官方快递单"(阿里云配置)还是
A 小区 1 号,它没变。但是公共查询点(缓存 DNS)被骗了,它告诉所有人的都是错的。
方式二:污染"访客"本人(DNS 欺骗)
这个更直接。
- "访客"去问路(发出 DNS 请求)。
- "防火墙"就在访客家门口(网络出口)守着。
- 它一听到"访客"在问
我的论坛在哪。 - 它立刻(同样是抢答)冒充 DNS 服务器,直接告诉"访客":“在
Z 小区 99 号!” - 结果:访客的电脑收到了这个假答案,就直接导航去
Z 小区 99 号了,访问自然失败。
DNS 污染的本质是:攻击者(防火墙)在你"官方地址"的传播途径中,通过"抢答"和"伪造回复",把"假地址"欺骗性地告诉了"访客"或"公共查询点"。
第5章 延伸思考:关于GFW
5.1 防火墙的两种类型
看我上面的手段你可能会好奇,这个DNS和SNI的手段都是这个防火墙干的,你可能会想这个防火墙部署用来保护的怎么还干扰我访问网站,那这个防火墙在个人手上还得了,这不是违法的吗?
其实我们之前理解的防火墙,我们称之为**“防御型防火墙”。而我之前提到的"干扰者",我们称之为"网关型/过滤型防火墙"**。
你理解的防火墙(防御型)
- 目标:保护你(你的电脑或服务器)。
- 类比:你家(服务器)门口的**“保安”**。
- 工作:它的职责是**“对内负责”。它只关心一件事:防止外面**的坏人(黑客、病毒)进来攻击你家。
- 例子:你在云服务器上配置的安全组、
fail2ban、Windows 自带的防火墙。它们会阻止来自恶意 IP 的 SSH 攻击或关闭不必要的端口。 - 方向:主要是**“防进来”(Inbound)**。
我们讨论的"干扰者"(网关型)
- 目标:管控整个网络(一个公司、一个地区、一个国家)的所有人。
- 类比:整个城市(网络)出入口的**“海关"或"检查站”**。
- 工作:它的职责是**“对外负责”**。它不关心你家(个人服务器)会不会被攻击,它只关心你(和你城里的所有人)要去哪里、在看什么。
- 例子:这就是我们之前讨论的,能实施 DNS 干扰和 SNI 阻断的那个大型"防火墙"。
- 方向:主要是**“管出去”(Outbound)和"管进来"(Inbound)**。
并且这种"网关防火墙"(我们常说的"海关")绝对不是个人能掌控的,它是一种**基础设施(Infrastructure)**级别的部署。它部署在国家或大型地区网络的总出入口,是耗资巨大、技术门槛极高的系统工程。
5.2 GFW的合法性问题
你觉得它"违法",是因为你站在一个"受干扰"的用户角度,觉得自己的网络访问被"随意"破坏了。
但从"部署者"的角度,它并不是"随意"在污染,它是在**“执法”**。
我们再用一次"海关"的比喻,这次我们聚焦在"部署"这个行为上:
- 制定法律:一个国家通过了法律,规定:“任何包含 X 内容的出版物(比如书籍、音像)禁止入境。”
- 部署工具(执法):为了执行这条法律,国家(海关)在所有机场、港口(边境)部署了 X 光机和检查员(这就是"部署工具")。他们的任务就是检查所有入境包裹,一旦发现 X 内容,就将其拦截。
- 这违法吗?:在这个国家内部,海关"部署" X 光机和检查员来"干扰"这些违禁品的入境,这不仅不违法,这恰恰是法律要求他们做的,是 100% 的合法执法行为。
现在我们把这个比喻换成网络:
- 制定法律:某个国家或地区制定了法律:“本国公民不允许访问包含 Y 内容的网站(比如你那个论坛)。”
- 部署工具(执法):为了执行这条法律,该国家的网络管理部门在"互联网出入口"(边境)部署了"网关防火墙"(这就是"部署工具")。它的任务就是检查所有"出境"的数据包(通过 DNS 查询、SNI 字段),一旦发现目的地是 Y 网站,就"污染"或"阻断"它。
- 这违法吗?:在这个国家内部,管理部门"部署"防火墙来"干扰"对 Y 网站的访问,这同样不违法,这是在执行该国的国内法。
在我们中国这个干扰者是 GFW,全称是 Great Firewall,中文一般翻译为"防火长城"。
第6章 突破方案
那有什么方法可以解决这个问题呢?下面介绍三种主要的突破方案。
6.1 方案一:修改hosts文件
hosts 是什么?它和 DNS 是什么关系?
简单来说:hosts 文件是你电脑上的一个"私密地址本",而 DNS 是公共的"电信黄页"。
工作原理
当你访问一个网站(比如 friends.forum.com)时,你的电脑需要知道它的 IP 地址。它会按以下顺序查找:
第一步:先查"私密地址本"(hosts 文件)
你的电脑会先打开自己系统里的 hosts 文件,看看里面有没有你"手动"为 friends.forum.com 指定的 IP 地址。
- 如果找到了(比如你写了
1.2.3.4 friends.forum.com),它会立即使用这个 IP 地址 (1.2.3.4),并且不再去问外面的 DNS。 - 如果没找到,它才会进入第二步。
第二步:再查"公共黄页"(DNS 服务器)
电脑会向互联网上的 DNS 服务器(比如你路由器设置的 8.8.8.8)发起请求:“你好,请问 friends.forum.com 的 IP 是多少?” 然后 DNS 服务器会回答它。
这和"DNS 干扰"有什么关系?
关系非常大!hosts 文件正是绕过 DNS 干扰最常用的手段。
- DNS 干扰:公共的"黄页"(DNS)被污染了,它给你的 A 网站的地址是 假 的。
- 解决方法:你通过其他渠道(比如论坛主私下告诉你)得知了 A 网站的 真实 IP 地址(比如 1.2.3.4)。
- 操作:你手动在自己的
hosts文件(私密地址本)里加一行:1.2.3.4 friends.forum.com - 结果:你的电脑在访问时,优先看
hosts文件,直接就拿到了正确的 IP (1.2.3.4),根本不给 DNS 干扰"发挥作用"的机会。
总结:
hosts文件是一个优先级高于 DNS 的本地 IP 映射表。
方案一的局限性
优点:简单直接,100%绕过DNS污染
缺点:无法绕过SNI阻断(如果目标网站被SNI阻断,hosts文件无效)
缺点:需要手动获取真实IP地址
缺点:IP地址变更时需要手动更新
6.2 方案二:使用DoH加密DNS
DoH(DNS over HTTPS)正是为了"DNS 污染"(护城河)而诞生的一个"重型武器"。
为什么需要DoH?
还记得我们说"DNS 污染"为什么会成功吗?
- 你发出的 DNS 查询请求是明文的(就像一张明信片)。
- GFW(海关)能看懂这张明信片,知道你要查询
friends.forum.com。 - GFW 抢答,给你一个假的 IP 地址。
DoH 就是来解决这个问题的。
DoH (DNS over HTTPS) 是什么?
它的全称是"通过 HTTPS 传输的 DNS"。
它的原理非常聪明:
DoH 把你的"DNS 查询请求"(明信片),放进了一个"加密的保险箱"(HTTPS)里,然后伪装成一次普通的网页访问(比如访问银行)发送出去。
DoH 是怎么工作的?
我们再用"海关"(GFW)的比喻:
1. 传统 DNS(你被污染的过程)
- 你:(发出一张明信片,上面写着:“
friends.forum.com的 IP 是啥?”) - GFW(海关):(一把抢过明信片)“我看到了!你要去’朋友的论坛’!给,它的地址是
Z 小区 99 号(假 IP)。” - 结果:你被 DNS 污染了。
2. DoH(你绕过污染的过程)
- 你(的浏览器):(拿出一个加密的保险箱,把"
friends.forum.com的 IP 是啥?"这张纸条放进去锁好。) - 你(的浏览器):(把保险箱打包,贴上快递单,收件人是"Cloudflare 的 DNS 服务器
1.1.1.1",并伪装成一次普通的https访问。) - GFW(海关):(看到你寄出一个加密的
https包裹) - GFW(海关):“这是要去哪?”
- 你(的浏览器):“去
1.1.1.1这个 IP。” - GFW(海关):(检查)“
1.1.1.1是个干净的 IP(Cloudflare 的服务器)。里面是啥?” - 你(的浏览器):“是
https加密内容,你看不懂的。” - GFW(海关):“哦,又是一个普通的加密访问。放行!”
- 结果:你的 DNS 查询请求,安全地、加密地到达了
1.1.1.1。1.1.1.1给了你真实的 IP 地址,GFW 全程被蒙在鼓里。
DoH 的局限性:它只是"护城河"的船
现在你一定能想通这个关键点了:
DoH 只能帮你绕过"护城河"(DNS 污染)。
它帮你拿到了真实的 IP 地址(A 小区 1 号)。
但是,它解决不了"主城墙"(SNI 阻断)的问题。
当你拿着 DoH 给你的真实 IP 去访问网站时,你依然要经过"主城墙"(GFW),并且在"握手"时喊出那个明文的 SNI:“我要去’朋友的论坛’!”
"主城墙"上的 GFW 还是会听到,然后照样阻断你。
方案二总结
- DoH 的作用:加密 DNS 查询,让你 100% 拿到"真实"的 IP 地址,彻底免疫"DNS 污染"(护城河)。
- DoH 的局限:它不能加密 SNI。所以它无法帮你绕过"SNI 阻断"(主城墙)。
形象比喻:DoH 就像是你造了一艘非常坚固的船,让你100%能渡过"护城河",但你上岸后,还是会撞上"主城墙"。
所以,DoH 只是一个"反审查"工具链中的一环,它并不能独立完成"翻越" GFW 的全部工作。
6.3 方案三:Clash+代理服务器
前面两种方案都有局限性:
- hosts文件:只解决了 DNS 污染,并且赌 GFW 还没有(或忘了)用 SNI 阻断那个新 IP。
- DoH:同样只解决了 DNS 污染。
但当 GFW 把所有 IP 都封锁并进行 SNI 阻断时,那个配置文件就失效了。
这时,“代理”(Proxy),这个 Clash 的核心功能,就登场了。
实际使用方式:机场订阅(最简单)
重要提示:现在使用Clash+代理已经非常简单了,不需要自己租服务器!
实际上,大多数人使用Clash的方式是:
- 购买"机场"服务 - 所谓"机场"就是提供代理服务器的商家
- 获取订阅链接 - 机场会给你一个订阅链接(URL)
- 导入Clash - 在Clash中导入这个订阅链接,一键完成配置
- 开始使用 - 选择节点,开启代理,就能访问了
注意:选择机场时要注意安全性和隐私保护,避免使用来路不明的服务。
高级玩法:自建服务器(可选)
当然,如果你是技术玩家,也可以选择自己租用海外服务器搭建代理:
- 优点:完全掌控,隐私性最高,独享带宽
- 缺点:需要技术能力,有成本(服务器租金),需要维护
但对于大多数普通用户来说,使用机场订阅已经完全够用了。
代理的作用:一个"安全"的海外代购
“代理"的字面意思就是"中介”。在网络世界里,代理(Proxy Server) 就是一个**“中转服务器”**。
它之所以能绕过 GFW,是因为它完美地"伪装"了你的两个关键信息:
- 你真正要去的地址(IP 地址)。
- 你真正要去干嘛(SNI 字段)。
我们还用"海关"(GFW)的比喻。
1. 没有代理(直连)的情况
- 你:“(对海关 GFW 喊)你好,我要去’朋友的论坛’(SNI),它的地址是
1.2.3.4(IP)!” - GFW:“(查黑名单)‘朋友的论坛’?不许去!
1.2.3.4?这个地址也封了!” - 结果:连接被阻断。
2. 使用 Clash + 代理的情况
Clash 会帮你执行一个极其精密的"伪装"计划。这里的"代理"就是你在其他国家(比如日本、美国)租用的一台"中转服务器",这个"中转服务器"的 IP 是干净的、没有被 GFW 封锁的。
第一步:Clash 在你本地"打包"
- 你:“(对 Clash 说)我要去’朋友的论坛’。”
- Clash:“收到。GFW 认识’朋友的论坛’,你不能直接去。”
- Clash 的操作:
- Clash 把你的请求(“我要去’朋友的论坛’”)**放进一个"加密的保险箱"**里。
- GFW 不知道怎么打开这个保险箱,也看不懂保险箱上写的(加密)内容。
- Clash 在保险箱外面贴上一张"快递单",这张快递单写着:
- 收件人:你在海外的那个"中转服务器"(比如,
5.6.7.8这个日本 IP)。
第二步:你"过海关"(GFW)
- 你(Clash):“(对海关 GFW 说)你好,我只是要去日本
5.6.7.8这个地址,送一个加密的包裹。” - GFW:"(查黑名单)
- 检查目标地址:
5.6.7.8(日本 IP)?嗯,是个普通的服务器,不在黑名单上。—— 放行! - 检查 SNI(内容):包裹是啥?(GFW 试图查看 SNI)…哦,是看不懂的加密内容(Clash 使用的 VLESS/VMESS/SS 等协议伪装得很好),不知道你要干嘛。—— 放行!"
- 检查目标地址:
- 结果:GFW 完全不知道你这个包裹里面藏着的是"要去’朋友的论坛’"的请求。它只以为你是在和日本的
5.6.7.8进行正常的、加密的通信。
第三步:代理"海外代购"
- “中转服务器”(代理):在日本收到了你的"加密保险箱"。
- 代理的操作:它打开保险箱,看到了你真正的请求:“我要去’朋友的论坛’”。
- 重点:因为这个"中转服务器"在日本,它不受 GFW 管辖。
- 代理:它在日本直接访问了"朋友的论坛"(
1.2.3.4),并成功拿到了网站数据。
第四步:数据返回
- 代理:把拿到的网站数据,再次放进"加密保险箱",然后寄回给你。
- GFW:看到一个从日本
5.6.7.8寄回来的加密包裹。 - GFW:“哦,是刚才那个包裹的回信。正常通信。—— 放行!”
代理工作原理总结
我们用一个表格对比一下 GFW 看到的情况:
| GFW 看到的内容 | 1. 直接连接 (失败) | 2. 使用代理 (成功) |
|---|---|---|
| 目标 IP | 1.2.3.4 (朋友的论坛, 在黑名单) |
5.6.7.8 (中转服务器, 不在黑名单) |
| 目标内容 (SNI) | friends.forum.com (明文, 在黑名单) |
[一堆加密的乱码] (无法识别, 放行) |
| GFW 的决定 | 阻断! | 放行! |
所以,代理的作用就是:
Clash 和代理(中转服务器)联手,把你真正的"意图"(friends.forum.com)藏在一个加密的"保险箱"里,然后贴上一个 GFW 允许的"假地址"(5.6.7.8),从而骗过 GFW。
方案三总结
使用机场订阅的方式:
优点:同时绕过DNS污染和SNI阻断,最彻底的解决方案
优点:可以访问任何被封锁的网站
优点:配置简单,导入订阅即可使用
优点:有免费机场可选(如白嫖机场)
缺点:免费机场可能不稳定,付费机场有成本
缺点:需要信任机场服务商(隐私问题)
缺点:可能存在法律风险
自建服务器的方式:
优点:完全掌控,隐私性最高
优点:独享带宽,速度稳定
缺点:需要技术能力
缺点:需要租用服务器(有成本)
缺点:需要自己维护
【未完待续】
下篇预告:第8章将深入讲解VPN vs 代理的本质区别、Clash的三种工作模式(系统代理、TUN、TAP),以及如何用计算机网络分层模型理解这些技术。敬请期待!