使用httpdns方案防域名劫持

2016-11-24 01:09:09 10037

背景:对于互联网,域名是访问的第一跳,而这一跳很多时候会“失足”,也就是被劫持。劫持就有可能导致访问错误内容?失败连接等,被劫持部分请求到不了源站,一定程度上降低了站长对网站的可控性。

一提到劫持大家第一想到的就是黑客,其实不然。当前很多劫持是网络接入商在出口增加的一套缓存系统,其主要目的是将重复的且更新频率不是很高的可缓存的互联网资源缓存到本网的缓存服务器,在一定程度上是会提升网内用户体验的。一般情况下劫持也不会导致访问失败,只是偶尔部分网站有调整或者缓存规则配置不够严格,会导致缓存的资源有问题从而导致用户投诉。比如用户下载到的文件是旧的这种情况。劫持是被动缓存,缓存策略一般是按经验值设置,而不是由网站站长设置。如果网站有使用CDN就不一样了,一般是会配置非常严格的缓存策略,比如配置某些资源要缓存,缓存多久,是强制缓存还是遵循源站等等。当部?资源需要立刻更新时,网站站长可以使用CDN厂商提供的缓存刷新接口对资源进行统一刷新,保证CDN节点缓存的文件是最新的。

Httpdns主要是为了解决DNS劫持问题。DNS正常是走UDP协议,端口53。当出口有网络提供商的缓存系统时候,部分域名解析结果会被替换成本网缓存服务器ip,从而将用户请求引导过去。Httpdns就是使用http协议进行域名解析,代替原有基于UDP的DNS协议,域名解析请求直接发送到HTTPDNS服务器,从而绕过运营商的Local DNS,能够避免Local DNS造成的域名劫持问题和调度不精准问题。

先抓包来看下基于UDP的域名解析请求过程

使用httpdns方案防域名劫持

上图是域名解析请求包,走UDP协议,目的端口53,请求解析的域名是www.landui.com。

使用httpdns方案防域名劫持从响应包里可以看到www.landui.com的解析结果。

再来看下httpdns域名解析示例

使用httpdns方案防域名劫持示例图里的格式是如下:httpdns服务器ip 客户id 要解析的域名(每个厂商的httpdns请求的格式会有区别,这里只是以某厂商的?例,有兴趣的可以抓包分析下微信的httpdns请求)

当然实际应用中httpdns域名解析请求应该也会走Https,进一步提升安全性。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: