什么是域名前置?

域名前置是一种借助大型网络服务商隐藏真实访问目标的技术。它在明文阶段用一个无害域名建立连接,实际要访问的域名藏在加密数据里,让审查方难以区分。谷歌、亚马逊等公司已在 2018 年前后关闭了这一用法。

域名前置的做法,是在一次连接的不同层级使用不同的域名。第 62 期介绍过,TLS 握手时会明文发送服务器名称指示(SNI),告诉服务器要访问哪个域名;之后的 HTTPS 请求里还有一个 Host 头,指明真正要访问的目标。正常情况下这两个域名一致,域名前置让它们不一致。

具体过程是:客户端在明文部分(DNS 查询和 SNI)用一个大型内容分发网络上的无害域名,让审查方看到的只是访问了这个普通网站;而加密的 Host 头里,藏着真正想访问的被封锁域名,由内容分发网络转发过去。审查方要拦下这类流量,就得封掉那个无害域名,可它往往承载着大量正常服务,封锁代价很大。

这项技术由研究人员在 2015 年公开,曾被 Tor、Signal 等工具用于绕过审查。2018 年前后,谷歌和亚马逊先后关闭了各自平台上支持这一用法的功能,微软后来也跟进。封锁方的压力被认为是原因之一:俄罗斯当年为封 Telegram 封掉了上千万个谷歌和亚马逊的地址,连带波及大量正常网站。此后域名前置在大型服务商上基本失效,但也被记录为攻击者隐藏控制流量的手法之一。