校园网部分网站无法访问的现象
同学使用校园网时发现部分网站无法访问,而这些网站在家里访问正常,由此引出疑问:校园网是如何发现并阻断这些连接的。
通过抓包实验揭示校园网如何利用明文传输的 SNI 实施 SNI 阻断,导致部分网站无法访问。
从校园网部分网站无法访问的现象出发,铺垫DNS、TCP与HTTP/HTTPS等网络基础,为后续抓包分析做铺垫。
同学使用校园网时发现部分网站无法访问,而这些网站在家里访问正常,由此引出疑问:校园网是如何发现并阻断这些连接的。
回顾浏览器发起网络请求的过程:先将域名交给DNS解析成IP地址,再与对应服务器通信;并提到校园网可通过IP和域名的双重封锁进行网络拦截,可用Wireshark抓包查看DNS请求与返回的IP地址。
客户端拿到IP地址后需建立TCP连接,过程分三步:客户端请求建立连接、服务器回应可以连接、客户端再次确认,即TCP三次握手,类比打电话。
三次握手只建立连接,并不传输有效数据;连接建立后双方才开始传输真正有用的数据,常用的HTTP/HTTPS都必须建立在TCP连接上。
通过Wireshark观察TLS握手,发现ServerHello包神秘消失,并分析两种丢包可能性,引出阻断规则之谜。
在校园网环境下用Wireshark可见三次握手完成、TCP连接建立后,客户端发送ClientHello包以开启TLS连接;TLS即传输层安全,用于加密双方数据,只有服务器和客户端能解密。
若网站使用HTTP而非HTTPS,数据为明文传输,中间人可偷偷查看通信内容,这就是浏览器一般将此类网站标注为不安全的原因。
正常情况下客户端发送ClientHello包后,服务器应返回ServerHello包回应,但Wireshark上却没有出现该包,引出其去向的疑问。
收不到ServerHello包有两种可能:一是ClientHello包被丢弃导致服务器收不到,二是服务器收到但ServerHello包被丢弃;并指出TLS应用广泛,不可能全盘阻断,神秘力量必须依据网络包中的其他线索判断。
揭示SNI字段明文标记目标主机,校园网可据此比对黑名单丢弃ClientHello包,即SNI阻断原理。
TLS建立时ClientHello包里有SNI字段,后面写着www.example.com;SNI即服务器名称指示,用来标记目标服务器主机叫什么,且SNI是明文传输,任何拿到包的人都能查看其值。
以校园网禁止某款游戏为例,说明只需比对SNI字段里有没有对应的游戏域名即可实施阻断,即按SNI黑名单比对域名。
用跨网络环境实验验证SNI阻断,确认ClientHello被丢弃,并介绍该技术的实际应用场景。
实验设计:一台电脑作为客户端连接校园网,另一台作为服务器连接移动数据处于校园网之外;服务器监听8443端口,客户端分别进行两次实验。
SNI设为www.baidu.com时TLS连接正常,客户端发送、服务器收到;设为www.example.com时双方均无响应,客户端等待后失败,服务器返回错误。
实验证明TCP连接虽建立成功,但后续TLS建立时ClientHello包被丢弃导致连接失败;这种技术称为SNI阻断,即在建立TLS连接时检查明文SNI,若在黑名单里就扔掉ClientHello包。
SNI阻断在许多学校校园网中存在,例如禁止部分内网穿透服务,因为内网穿透相当于在校园网里打洞,存在潜在网络安全风险;也有学校为促进学生好好学习,把视频网站或游戏服务器的SNI加入黑名单。
由知否生成 · 整理你自己的资料 · 登录后按账户权益阅读、整理与提问