域名解析经常被劫持,试试HttpDNS

DNS协议解析

1. 本文概览

​ 本文不是为了讲解DNS域名解析相关概念,因此要求读者需要对DNS有相关的基本了解,最好对DNS相关概念有一定的认识。本文侧重分析DNS域名解析存在的问题,然后引出HttpDNS域名解析,并进行分析。

2. DNS解析存在的问题

2.1 DNS劫持

​ DNS劫持就是通过劫持DNS服务器,通过某些手段取得域名的解析记录控制权,进而修改域名的解析结果,导致对该域名的访问由原IP地址传入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。

在这里插入图片描述

​ 例如:当我们向外部发出请求解析 DNS 的时候,首先会先连接到本地运营商的 DNS 服务器(如电信/联通/移动),由他们的 DNS 服务器帮我们去根和顶级 DNS 服务器解析,然后将解析的结果返回给客户端。但如果这些本地运营商在其 DNS 服务器上有一些自己的想法,比如想推送个广告呢?这样他就可以轻易的劫持你的 DNS请求,达到自己的一些“小需求”,这就是我们常说的运营商劫持。

​ 对于DNS劫持,我们可以用一些方法来避免DNS劫持。首先,从上述DNS劫持的原理来看,我们可以明显得出DNS在解析域名的时候,经过本地DNS服务器的时候才出现DNS劫持的情况,如果我们在绕过这一层的时候,也就在一定程度上避免了DNS劫持,比如直接通过IP地址进行访问,或者在浏览器DNS缓存里输入正确的ip地址,这样在解析的时候直接在浏览器缓存里找到了该域名的ip地址,就不会在去走本地DNS服务器的流程了。相关方法有很多,本质上就是为了绕过发生DNS劫持的那一阶段。然而,接下来我将会介绍HttPDNS域名解析的相关原理,它在本质上就可以解决DNS劫持。

3. HttpDNS

3.1 概念

​ HttpDNS是使用HTTP协议向DNS服务器的80端口进行请求,代替传统的DNS协议向DNS服务器的53端口进行请求。也就是使用Http协议去进行dns解析请求,将服务器返回的解析结果(域名对应的服务器IP),直接向该IP发起对应的API服务请求,代替使用域名。

3.2 防止域名劫持

​ 由于 HttpDNS 是通过 IP 直接请求 HTTP 获取服务器 A 记录地址,不存在向本地运营商询问 domain 解析过程,所以从根本避免了劫持问题。

3.3 精准调度提高响应

​ HttpDNS能够直接获取到用户的IP地址,从而实现精确定位与导流。由于是IP直接访问省掉了一次Domain解析过程,(即使系统有缓存速度也会稍快一些“毫秒级”)通过智能算法排序后找到最快节点进行访问。

3.4 用户连接失败率下降

​ 通过算法降低以往失败率过高的服务器排序,通过时间近期访问过的数据提高服务器排序,通过历史访问成功记录提高服务器排序。如果ip(a)访问错误,在下一次返回ip(b)或者ip© 排序后的记录。(LocalDNS很可能在一个ttl时间内(或多个ttl)都是返回记录)。

3.5 HttpDNS优势

从原理上来讲,HttpDNS只是将域名解析的协议由DNS协议换成了Http协议,并不复杂。但是这一微小的转换,却带来了无数的收益:

  1. 根治域名解析异常:由于绕过了运营商的LocalDNS,用户解析域名的请求通过Http协议直接透传到了HttpDNS服务器IP上,用户在客户端的域名解析请求将不会遭受到域名解析异常的困扰。

  2. 调度精准:HttpDNS能直接获取到用户IP,可以保证将用户引导的访问最快的IDC节点上。

  3. 实现成本低廉:接入HttpDNS的业务仅需要对客户端接入层做少量改造,无需用户手机进行root或越狱;而且由于Http协议请求构造非常简单,兼容各版本的移动操作系统更不成问题;另外HttpDNS的后端配置完全复用现有权威DNS配置,管理成本也非常低。总而言之,就是以最小的改造成本,解决了业务遭受域名解析异常的问题,并满足业务精确流量调度的需求。

  4. 扩展性强:HttpDNS提供可靠的域名解析服务,业务可将自有调度逻辑与HttpDNS返回结果结合,实现更精细化的流量调度。比如指定版本的客户端连接请求的IP地址,指定网络类型的用户连接指定的IP地址等。

4. 总结

​ 众所周知,DNS域名解析就是为了将我们人为好记的文字变为机器熟知的IP地址,看似只是一个映射的过程,其中是十分复杂的。由于全球无数人每天都在使用网络,每一次域名解析的时候都有可能要经过DNS服务器,这就要求DNS服务器必须是一个高可用、高并发、分布式的架构。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值