2025年HttpDNS介绍

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

大家好,我是讯享网,很高兴认识大家。

一、什么HttpDNS:

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

 

二、为什么要用HttpDNS:

那么为什么要使用HttpDNS呢?主要原因有四点:

1、LocalDNS劫持;

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

2、平均访问延迟下降:

由于是IP直接访问省掉了一次Domain解析过程,(即使系统有缓存速度也会稍快一些“毫秒级”)通过智能算法排序后找到最快节点进行访问。

3、用户连接失败率下降:

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

4、域名解析异常及用户访问跨网的问题:

见第三部分:

 

三、HttpDNS如何解决域名解析异常及用户访问跨网的问题:

该部分转自:【鹅厂网事】全局精确流量调度新思路-HttpDNS服务详解

1、问题根源:

国内运营商LocalDNS造成的用户访问异常可以归为下三类:

(1)域名缓存:

域名缓存很好理解,比如LocalDNS缓存了腾讯的域名的解析结果,不向腾讯权威DNS发起递归,示意图如下:

为何LocalDNS要把域名解析结果进行缓存呢?原因有以下几个:

①保证用户访问流量在本网内消化:国内的各互联网接入运营商的带宽资源、网间结算费用、IDC机房分布、网内ICP资源分布等存在较大差异。为了保证网内用户的访问质量,同时减少跨网结算,运营商在网内搭建了内容缓存服务器,通过把域名强行指向内容缓存服务器的IP地址,就实现了把本地本网流量完全留在了本地的目的。

②推送广告:有部分LocalDNS会把部分域名解析结果的所指向的内容缓存,并替换成第三方广告联盟的广告。

这种类型的行为就是我们常说的域名缓存,域名缓存会导致用户产生以下的访问异常:

A、仅对80端口的http服务做了缓存,如果域名是通过https协议或其它端口提供服务的,用户访问就会出现失败。比如支付服务、游戏通过指定端口连接connect server服务等。

B、缓存服务器的运维水平参差不齐,时有出现缓存服务器故障导致用户访问异常的问题。

(2)解析转发:

除了域名缓存以外,运营商的LocalDNS还存在解析转发的现象。解析转发是指运营商自身不进行域名递归解析,而是把域名解析请求转发到其它运营商的递归DNS上的行为。正常的LocalDNS递归解析过程是这样的:

而部分小运营商为了节省资源,就直接将解析请求转发到了其它运营的递归LocalDNS上去了:

这样的直接后果就是腾讯权威DNS收到的域名解析请求的来源IP就成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。

(3)LocalDNS递归出口NAT:

LocalDNS递归出口NAT指的是运营商的LocalDNS按照标准的DNS协议进行递归,但是因为在网络上存在多出口且配置了目标路由NAT,结果导致LocalDNS最终进行递归解析的时候的出口IP就有概率不为本网的IP地址:

 

这样的直接后果就是GSLB DNS收到的域名解析请求的来源IP还是成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。

2、现有的解决方案及存在的问题:

运营商的LocalDNS解析域名异常,给对用户访问腾讯业务的体验造成了非常大的损害。那么我们是如何处理这些域名解析异常的问题的呢?

(1)绕过自动分配DNS,使用114dns或Google public DNS:

这个方案看上去很美好,114dns是国内最大的中立缓存DNS,而Google又是秉承不作恶理念的互联网工程帝国巨鳄,而且腾讯的权威DNS又支持edns-client-subnet功能,能直接识别使用Google publicDNS解析腾讯域名的用户的IP地址,不会出现流量调度失效。但是问题来了:

①如何在用户侧构造域名请求:对于PC端的客户端来说,构造一个标准的DNS请求包并不算什么难事。但在移动端要向一个指定的LocalDNS上发送标准的DNS请求包,而且要兼容各种iOS和android的版本的话,技术上是可行的,只是兼容的成本会很高。

②推动用户修改配置极高:如果要推动用户手动修改PC的DNS配置的话,在PC端和手机客户端的WiFI下面还算勉强可行。但是要用户修改在移动互联网环境下的DNS配置,其难度不言而喻。

(2)完全抛弃域名,自建connectcenter进行流量调度:

如果要采用这种这种方案的话,首先你就得要拿到一份准确的IP地址库来判断用户的归属,然后再制定个协议搭个connect center来做调度,然后再对接入层做调度改造。这种方案和2种方案一样,不是不能做,只是成本会比较高,尤其对于腾讯这种业务规模如此庞大的公司而言。

3、利用HttpDNS解决用户域名解析异常:

既然上面的方案都存在那么多的问题,那有没有一种调度精准、成本低廉、配置方便的基于域名的流量调度系统呢?答案是肯定的。腾讯公司的GSLB 团队推出了一种全新的域名解析调度系统:HttpDNS。HttpDNS是为移动客户端量身定做的基于Http协议和域名解析的流量调度解决方案,专治LocalDNS解析异常以及流量调度不准。详细介绍如下:

(1)HttpDNS基本原理:

HttpDNS的原理非常简单,主要有两步:

A、客户端直接访问HttpDNS接口,获取业务在域名配置管理系统上配置的访问延迟最优的IP。(基于容灾考虑,还是保留次选使用运营商LocalDNS解析域名的方式)

B、客户端向获取到的IP后就向直接往此IP发送业务协议请求。以Http请求为例,通过在header中指定host字段,向HttpDNS返回的IP发送标准的Http请求即可。

(2)HttpDNS优势:

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

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

②调度精准:HttpDNS能直接获取到用户IP,通过结合腾讯自有专利技术生成的IP地址库以及测速系统,可以保证将用户引导的访问最快的IDC节点上。

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

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

 

四、客户端实现HttpDNS:

目前国内有一部分厂商已经提供了这个解析服务,我们可以使用它们的服务,也可以使用自建服务器进行中转,至于自建服务器上如何实现,是调第三方呢还是自己去解析呢属于服务器的事,对于客户端来说是完全透明的。这篇文章主要是为了学习,为了方便起见,我们直接使用第三方服务。目前,提供httpdns解析服务的有:阿里云HttpDNS、DNSPod D+

无论是哪个api,都是直接调用它们暴露的RestFul api获得解析结果,阿里云的HttpDNS服务的api比较标准,直接发一个Get请求,带上请求参数,返回结果以json返回。比如:

http://203.107.1.1/d?host=www.taobao.com&ip=42.120.74.196

请求成功时,返回结果如下:

{ "host": "www.taobao.com", "ips": [ "115.238.23.241", "115.238.23.251" ], "ttl": 57 }
讯享网

而DNSPod的API基本上和阿里云的没什么差别,只不过返回结果不是以json返回,而是直接返回ip地址。举个例子:

http://119.29.29.29/d?dn=www.dnspod.cn&ip=1.1.1.1&ttl=1

请求成功则返回ip地址,但不是json格式,如果存在ttl=1,则以逗号分隔

59.37.116.101,60

 

小讯
上一篇 2025-02-15 22:15
下一篇 2025-01-14 10:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18468.html