从爬虫到网络---<基石3> gfw防火墙是怎么保护我们的?
第一部分:什么是GFW,为什么它要拦住我们和'谷歌'的连接?
1. 什么是“防火墙”?
你可以把“防火墙”想象成网络世界里的一个超级大门卫。本来,互联网是一个大操场,大家可以自由交流。可有些地方,为了各种理由,需要控制进出信息,这时候就得有个“把门儿的”——这就是“防火墙”。
全球很多国家、地区的企业或组织,都有自己的“网络防火墙”来保护数据或限制访问。GFW(Great Firewall)中文全称叫“CN国家互联网信息隔离系统”,俗称“防火长城”,就是CN特有的一套超大规模的网络过滤系统。
2. 为什么要拦住谷歌这样的国外网站?
这就涉及到网络主权、内容监管、安全合规等等。cngv认为,有一些国外网站(比如谷歌、YouTube、脸书)中包含的内容不符合国内互联网法律法规,于是就通过GFW这套技术防线来加以拦截和过滤。
比如谷歌,除了搜索引擎,还涉及邮箱、翻译、地图、云端等诸多服务。考虑到其中有大量不可控的信息流和技术透明度问题,于是官方就采取了“物理隔离+技术管控”的手段,直接把我们和谷歌的“连线”给掐断了。
第二部分:访问谷歌的普通流程
要搞明白GFW怎么“拦”,咱们得先搞明白普通情况下,计算机是怎么和谷歌连接上的。你可以把这看成一次“从家打到国外亲戚家电话”的过程:
- 输入网址:你在浏览器地址栏里输入“www.google.com”
- DNS域名解析:计算机会先问“www.google.com”这个名字对应的IP地址是什么(就像问“我亲戚手机号码是多少?”)
- 拿到IP后发请求:得到了IP后,计算机就用这个地址去“拨号”,发起连接
- 握手建立连接:双方要先“打招呼”,建立一个HTTPS的加密通道
- 数据正式传输:你可以收发邮件、查资料、看地图了
整个流程每一步,GFW都可以下手。下面每个环节咱们都细说。
第三部分:GFW的“阻断”大招,你一定要熟悉的几大拦截节点
GFW怎么做到万无一失?
GFW跟一个多层安保似的。它不是只靠一道“门”,而是靠一堆“机关”——DNS污染、IP黑名单、协议层阻断、TLS“SNI”监控、流量分析、关键词特征检测……甚至还有“主动检测机器人”不定期来“钓鱼”,看看谁在尝试翻墙。
它们就是专门用来盯着我们和诸如谷歌等“被墙”网站之间的所有“通信路径”。你以为从门口过不去,钻窗户能行?不好意思,窗户也上了栅栏,洞口还塞了保安。
举个简单例子:
比如你打算访问谷歌,GFW就像“耳朵灵、腿脚快、爱琢磨”的门卫,从最早的“查你电话号码”(DNS)、到“查电话归属地”(IP)、到“窃听你打招呼用的话术”(TLS/SNI)、再到“分析你在说什么话”(关键词过滤)——总有办法在某个环节,把你的“连线”拦住。
你偶尔换点新花样,它也时不时升级——非常较劲。
第四部分:DNS污染/劫持——最早的拦截
DNS相当于互联网的“翻译官”,你输入网址,它帮你找门牌号(IP)。当你输入“www.google.com”,其实你是在问“谷歌的服务器在哪里?”
这时GFW第一招就来了:DNS污染。
怎么污染DNS?
打个比方,你问“谷歌公司在哪?”本该有人告诉你一个真实的地址。但GFW会主动“截走”这个问题,给你报一堆“假地址”——有时候是“0.0.0.0”,有时候根本就是“127.0.0.1(你自己家)”,有时候是腾讯、阿里等国内大厂随便一个服务器的IP。
这么操作的结果,是你根本找不到谷歌的“正门”在哪。你以为到了谷歌门口,其实进的却是“自家大院”。
还会针对DNS请求内容下手
有些朋友很机灵,直接用“8.8.8.8(谷歌公开DNS)”试试。抱歉,GFW在出口路由器也会特意查你问的是不是“敏感域名”,只要发现你问“google.com”相关的域名,立刻给你个“假答复”——DNS污染就发生了。
举例说明:
你在家用电脑敲下:
nslookup www.google.com 8.8.8.8
结果出现在屏幕上的,常常根本不是谷歌的真实IP,而且还时常变。
第五部分:GFW出手的关键节点和手段概述
1.咱们先整体把GFW的“拦截链路”走一遍。
想象你在中国大陆的一台电脑上输入www.google.com。你期待的流程大致是:
- 先发个DNS请求,问“www.google.com这个域名对应啥IP地址?”
- 拿到谷歌服务器的IP后,发起TCP连接,想和谷歌聊聊天(用HTTP/HTTPS等协议)。
- 数据一来一往,页面就刷出来了。
但现实呢?
GFW几乎在每一步都给你设了“机关”!
- DNS请求时,GFW可能直接“下毒”——把域名解析结果给你污染成无效IP、错的IP,甚至是指向某个陷阱服务器的IP。
- IP地址阶段,如果你机智地知道正确IP,GFW干脆把谷歌的IP段全封了,你看得到门但永远进不去。
- 流量传输阶段,无论是HTTP还是加密的HTTPS流量,GFW都有办法分析你的流量特征,发现你是在“翻旧账”连谷歌了,直接把连线一刀切断。
- 高级识别手段,比如说TLS握手阶段拿“指纹”一比对,或看SNI(Server Name Indication)字段里的域名,查到你要去谷歌,又给你拦下来。
GFW基本就是技术与人力双保险,像个“网络大门神”,盯着中国用户和外部世界的动静。
2. DNS污染与域名劫持:第一道防线
咱们先说说“DNS污染”。
DNS请求是怎么被下毒的?
DNS,全称“Domain Name System”,就是把你记得的域名(比如google.com)翻译成电脑认识的IP地址(比如142.250.206.206)的系统。正常流程是你发出DNS请求后,DNS服务器给你返回正确的IP。
但在中国,大部分“出国”的DNS请求都要经过GFW这道关卡。
- 场景一:你用普通的国内DNS服务器(比如运营商自带的),这些服务器干脆就已经配置好,遇到某些敏感域名直接回的是假IP,“毒”就藏在DNS服务器本身。
- 场景二:你想聪明点,直接用8.8.8.8(谷歌DNS),希望它能跳出“本地限制”。GFW这时会在网络核心层监听到你发去8.8.8.8的DNS查询,然后偷偷地、飞速地给你塞回一个假的DNS响应,甚至比真服务器还快!你收到的IP就是错的,要么是不存在的,要么是某个黑洞IP——这样,不管你怎么连,都是废流量。
举个生活中的例子
就像你想问“村口的老大爷,市里公交路线咋走”,可惜这个大爷被指令,只要你一问,立刻给你瞎指。你信了“假路线”,最后肯定迷路。
域名劫持的延伸危害
DNS造假不仅影响访问,甚至还有更大的安全隐患。有些高级的攻击方式是,把你引到钓鱼网站(比如假谷歌登录页),骗取你的账号密码。所以说,DNS污染本身就是安全领域的“大杀器”。
3.IP封锁:精准打击谷歌服务器
有些人想机灵一点,觉得:“既然DNS会被污染,我直接用谷歌的真实服务器IP连过去行不?”
理论上你想得没错,不过GFW几十年前就料到你要“绕路”。怎么破?干脆直接封IP!
IP封锁是如何运作的?
- GFW掌握了一长串的“黑名单IP”——这包括了谷歌所有的官方服务IP,以及相关的CDN、云服务段。
- 当你任何流量被检测到目标IP在这个黑名单上——无论是HTTP、HTTPS、FTP还是其它协议,GFW都能阻断。
- 具体表现为:网络直接连接超时,要么这里TCP三次握手被“重置”(发个RST包),要么完全没回应。
举个简单例子
这像什么?你就想订一台快递去国外,但快递公司(GFW)早把所有“敏感目的地”的地址包装上了警报——一发现目的地是“谷歌总部”,直接把包裹扔进垃圾桶,你永远收不到到货提醒。
不仅是谷歌,连CDN都可能遭殃
2022年以后,连Cloudflare、Akamai这种巨头的IP段也会波及,甚至有时候只是因为上面托管了“敏感网站”,整个段就有可能被连坐。这样做,影响面很广,但GFW宁愿“杀错、不放过”,安全第一位。
4. HTTP/HTTPS流量识别与阻断:再给“拦”上一道保险
DNS和IP封了还不够,因为有些服务很“狡猾”会变换IP、用CDN跳转,GFW于是得再上“流量识别与阻断”。
HTTP协议拦截——明文时代的“抓包大法”
- 早年HTTP协议都是明文传输,GFW直接在网络核心“读包”,看你请求的Host字段,如果是“google.com”这样的敏感内容,直接就给你断掉连接。
- 这就像隔壁老王在小区门口,翻你快递包裹地址,“一看是国外的,扔到一边”,毫不犹豫。
HTTPS协议来了,GFW怎么办?
- HTTPS 加密了内容,GFW不能直接看到里面的东西,但它还是能从握手过程中(比如SNI)拿到你要访问的域名。
- 一旦识别出你是冲着谷歌来的,就算看不到你包裹里装的啥,也还是能“拆信封”防止你送达。
升级打法:主动断开加密连接
- 有时GFW甚至会插手TLS握手阶段,强行插入“Connection Reset”(RST包),让你的连接还没开始就直接阵亡。
7. TLS指纹识别、SNI拦截:堵住各种“旁门左道”
有些技术宅,会玩出花样:自己开发一套TLS库、DIY一些罕见的客户端配置,看能否混淆GFW的检测。GFW当然也跟着升级,研究各种“握手指纹”和“服务名”。
TLS指纹识别
- 每个浏览器、操作系统发起TLS连接时,都有独特的“握手指纹”——比如用哪些加密套件、顺序、参数等。这些指纹会被GFW收集整理,一发现某些特定指纹极有可能就是翻墙工具、一看就是访问谷歌的专用客户端,这时候,GFW就能实现定点精准拦截。
- 这就像警察在检票口看你穿着、背包和走路姿势,一眼就知道你跟普通旅客不一样,那保安自然会重点关注。
SNI(Server Name Indication)拦截
- 在TLS握手阶段,SNI字段会暴露出你要访问的实际域名,比如“google.com”。哪怕其他内容被加密,这一行“门牌号”是明文。
- GFW专门盯着SNI,凡是谷歌系的、不在“白名单”里的,直接网络一刀切。
典型连锁反应
- 有时候你会看到,Chrome浏览器访问没法访问谷歌,但某些老客户端还可以——这类“猫腻”,大多是因为GFW尚没分析到新的TLS指纹,随着一次次升级,这类灰色地带也会被逐步封死。
8. 流量分析与主动探测(主动探测机制)
GFW可不是被动拦截那么简单,它还有一招叫主动探测。
主动探测是什么意思?
- 当GFW在流量中检测到一些疑似绕过工具、翻墙端口、怪异的协议特征,会主动发起请求,来确认这个IP和端口是不是“在搞事情”——比如模拟你发更深一层的请求,伪装成用户上谷歌试探性访问。
- 一旦确认是翻墙、代理或敏感内容,GFW可能会自动添加进“黑名单”,实现快速围堵。
生活中的比喻
就像小区里的保安发现你总深夜鬼鬼祟祟,他会专门派人蹲点,甚至上门敲门打探下你到底是不是搞传销的。
下一篇,后面我们还会详细讲讲:
- GFW如何应对DoH/DoT等新协议的挑战
- 实际网络访问案例分解
- 绕过防火墙的常见办法
- GFW的技术演进和未来趋势