域前置
目录
域前置
域前设置是一种规避互联网审查的技术,它在 HTTPS 连接的不同通信层使用不同的域名,以谨慎地连接到不同的目标域,而不是xxx请求和连接的第三方可识别的目标域。
由于安全证书中的怪癖、用作“域前端”的内容分发网络 (CDN) 的重定向系统以及 HTTPS 提供的保护,审查员通常无法区分规避(域前端)流量和公开的非 – 任何给定域名的前端流量。 因此,他们被迫要么允许所有流量进入域前端(包括规避流量),要么完全阻止域前端,这可能会导致代价高昂的附带损害,并且被比作阻止互联网的其余部分。
域前设置不符合要求 SNI 扩展和 HTTP 主机标头包含相同域的 HTTP 标准。 许多大型云服务提供商,包括亚马逊、微软和谷歌,都积极禁止域前端,这限制了它作为一种审查绕过技术。 来自俄罗斯和中国审查者的压力被认为促成了这些禁令,但域名前置也可能被恶意使用。
域前端的一种较新变体,即域隐藏,传递对一个资源(例如网站)的加密请求,隐藏在对另一个资源(其 DNS 记录存储在同一云中)的未加密(明文)请求后面。 它具有大致相同的效果。 折射网络是更广泛原理的应用。
技术细节
基础
域前端的基础是在与大型托管提供商或内容分发网络 (CDN) 的服务器(支持多个目标域;即主题备用名称)的不同通信层使用不同的域名。 CDN 之所以被使用,是因为它们在路由流量和请求方面具有特殊性,这就是前端工作的原因。
混淆请求
在 HTTPS 请求中,目标域名出现在三个相关位置:DNS 查询、TLS 服务器名称指示 (SNI) 扩展和 HTTPS 主机标头。 通常三个地方都会列出相同的域名。
在面向域的 HTTPS 请求中,一个域以纯文本形式出现在 HTTPS 请求的“外部”——在 DNS 请求和 SNI 扩展中——这将是客户端想要假装他们在连接建立中的目标并且是 一个对审查员可见的域,而隐蔽域出现在“内部”——在 HTTPS 主机标头中,在 HTTPS 加密下对审查员不可见——这将是连接的实际目标。
由于 HTTPS 协议对 HTTPS 主机标头进行加密,规避流量与“合法”(非前端)流量无法区分。 域前端的实现通过使用大型内容交付网络(例如各种大型 CDN)作为其前端域来补充 HTTPS,Web 的大部分功能都依赖这些网络。 为了阻止规避流量,审查员将不得不彻底阻止前端域。 对于大多数审查者而言,阻止流行的内容分发网络在经济上、政治上和外交上都是不可行的。
当 Telegram 于 2018 年 4 月在俄罗斯通过 ISP 封锁 CDN Telegram 的法院裁决被封锁时,Telegram 被用作逃避其自身 IP 地址封锁的前线,同时封锁了与谷歌和亚马逊的 CDN 相关的 1580 万个 IP 地址 . 这导致主要银行、零售连锁店和众多网站出现大规模网络中断; 封杀方式被诟病无能。
利用请求转发
域前设置与 CDN 一起工作——当在一个请求中提供两个不同的域时——它们(或者从历史上讲——它们曾经;参见§Disabling)被配置为自动完成一个请求以查看/访问 Hosts 标头中指定的域,甚至 在发现 SNI 扩展具有不同的域之后。 这种行为在托管服务提供商之间过去是普遍存在的,现在也不是普遍存在的; 有些服务可以验证同一域是否用于 HTTP 请求的不同层。 通常的域前端技术的一种变体,称为无域前端,在这种情况下可能会起作用,这会使 SNI 字段留空。