知识卡片
HttpDNS:用应用层HTTP直连替代DNS协议,从根源消除运营商劫持
内容
传统域名解析依赖客户端向运营商的LocalDNS(走DNS协议、53端口)发起查询,而运营商LocalDNS本身经常被劫持(返回错误或被篡改的IP、被插入广告等),这个问题的根源在于协议本身——只要还在用标准DNS协议向运营商控制的服务器发起查询,就始终处在运营商可以介入篡改的路径上。HttpDNS给出的解法不是在DNS协议内部打补丁去对抗劫持,而是彻底绕开这条路径:直接用IP地址向自己控制的DNS服务器的80端口发起HTTP请求来获取域名对应的服务器IP(A记录),完全不经过运营商LocalDNS这一环,运营商自然也就没有机会在这个请求路径上做手脚。这个案例给出一条通用的架构设计启示:当某个基础设施协议本身处在一个不受信任、且无法绕过的第三方控制之下时,与其尝试在该协议框架内部想办法识别和对抗第三方的篡改行为,不如评估是否可以换一条完全绕开这个不受信任环节的替代路径,从根源上消除信任风险,而不是被动防御。
参考来源
- 位置:《高可用架构(第1卷)》第7章《安全与网络》"7.2 App域名劫持之DNS高可用——开源版HttpDNS方案详解"节(源文件:_epub-src/OEBPS/Text/Chapter7_2_1.xhtml)
- 结论依据:原文说明"HttpDNS使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求,绕开了运营商的Local DNS,从而避免了使用运营商Local DNS造成的劫持和跨网问题",直接支撑本卡片结论。
- 原始内容:HttpDNS使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求,绕开了运营商的Local DNS,从而避免了使用运营商Local DNS造成的劫持和跨网问题。