术→技巧, 运维
目录
传统 域名解析面临的诸多问题与挑战本质根源在于 Local DNS 的服务质量不可控,如果有一个更安全、稳定、高效的递归 DNS 服务帮助我们代理了域名解析的过程,这些问题就可以彻底地得到解决。
HTTPDNS 在这样的背景下应运而生。我们一起来看看 HTTPDNS 的基本概念以及它是如何解决传统 DNS 解析面临的问题的。
运营商劫持
DNS劫持 就是通过劫持了 DNS 服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原 IP 地址转入到修改后的指定 IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。
HTTPDNS 使用 HTTP 协议进行域名解析,代替现有基于 UDP 的 DNS 协议,域名解析请求直接发送到 HTTPDNS 服务端,从而绕过运营商的 Local DNS。
HTTPDNS 代替了传统的 LocalDNS 完成递归解析的功能,基于 HTTP 协议的设计可以适用于几乎所有的网络环境,同时保留了鉴权、HTTPS 等更高安全性的扩展能力,避免恶意攻击劫持行为。另一方面,商业化的 HTTPDNS 服务(比如阿里云 HTTPDNS、腾讯云 HTTPDNS)缓存管理有严格的 SLA 保障,避免了类似 Local DNS 的缓存污染的问题。
域名缓存
LocalDNS缓存了域名的解析结果,不向权威DNS发起递归。
LocalDNS要把域名解析结果进行原因有以下几个:
这种类型的行为就是我们常说的域名缓存,域名缓存会导致用户产生以下的访问异常:
在域名解析生效周期方面,HTTPDNS 也有着传统域名解析体系所无法具备的能力。前面我们提到由于各个地区的 Local DNS 是独立维护的,服务质量参差不齐,缓存实现不一,因此导致的解析变更全网生效滞后的问题,在商业化的 HTTPDNS 服务上就不会存在(HTTPDNS 严格遵循 DNS TTL 限制进行缓存更新)。另一方面,即便我们假设 Local DNS 严格遵循域名 TTL 时间进行缓存管理(这里我们假设运维配置的域名 TTL 时间为 5min),当我们的业务受到攻击并需要快速进行切换时,Local DNS 也会遵循域名 TTL,在持续 5min 的时间段内返回旧 IP 信息,这 5min 的业务影响对于中大型企业而言是一个不小的损失(对于电商类的大型企业,5min 的访问异常可能意味着几百万的交易额下跌)。以阿里云 HTTPDNS 服务,HTTPDNS 在快速生效方面有专有的方案,配合阿里云的权威 DNS 服务云解析(我们的域名都是部署在阿里云的权威 DNS 服务云解析上面),用户在权威 DNS 变更的解析结果将快速同步给 HTTPDNS,覆盖原有的缓存记录,帮助用户实现毫秒级的域名解析切换。
解析转发:
除了域名缓存以外,运营商的LocalDNS还存在解析转发的现象。解析转发是指运营商自身不进行域名递归解析,而是把域名解析请求转发到其它运营商的递归DNS上的行为。正常的LocalDNS递归解析过程是这样的:
而部分小运营商为了节省资源,就直接将解析请求转发到了其它运营的递归LocalDNS上去了:
这样的直接后果就是权威DNS收到的域名解析请求的来源IP就成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。
LocalDNS递归出口NAT
LocalDNS递归出口NAT指的是运营商的LocalDNS按照标准的DNS协议进行递归,但是因为在网络上存在多出口且配置了目标路由NAT,结果导致LocalDNS最终进行递归解析的时候的出口IP就有概率不为本网的IP地址:
这样的直接后果就是GSLB DNS收到的域名解析请求的来源IP还是成了其它运营商的IP,最终导致用户流量被导向了错误的IDC,用户访问变慢。
解析生效滞后
部分业务场景下开发者对域名解析结果变更的生效时间非常敏感(这部分变更操作是开发者在权威DNS上完成的),比如当业务服务器受到攻击时,我们需要最快速地将业务IP切换到另一组集群上,这样的诉求在传统域名解析体系下是无法完成的。
Local DNS的部署是由各个地区的各个运营商独立部署的,因此各个Local DNS的服务质量参差不齐。在对域名解析缓存的处理上,各个独立节点的实现策略也有区别,比如部分节点为了节省开支忽略了域名解析结果的TTL时间限制,导致用户在权威DNS变更的解析结果全网生效的周期非常漫长(我们已知的最长生效时间甚至高达48小时)。这类延迟生效可能直接导致用户业务访问的异常。
商业化的 HTTPDNS 服务,都具备 99.99% 的高可用性, 确保域名解析服务稳定可靠。
HTTPDNS 客户端直接通过 IP 来进行域名解析请求的,HTTPDNS SDK 内部维护一个 IP 轮询池,当某个 IP 不可用时,会自动切换其他的 IP,并且 IP 轮询池也会更新。
HTTPDNS 服务端方面,拿阿里云的 HTTPDNS 来说,在全球有数十个服务集群,各个服务集群互相备份,具备异地容灾备份功能,当某个服务集群不可用时,会自动切换到其他的服务集群,可以确保解析和缓存正常。
HttpDNS的原理非常简单,主要有两步:
HttpDNS优势
从原理上来讲,HttpDNS只是将域名解析的协议由DNS协议换成了Http协议,并不复杂。但是这一微小的转换,却带来了无数的收益:
HTTPDNS设计中关键点
移动APP的域名解析机制,新的流程参考如下:
需要注意的是,发起网络请求时,在本地无缓存,或缓存已过期的情况下,直接使用localDNS解析,并同时异步更新本地DNS缓存。
虽然HttpDNS已经接入BGP Anycast,并实现了多地跨机房容灾。但为了保证在最坏的情况下客户端域名解析依然不受影响。建议采用以下的fail over策略:
不管是因为什么原因,当通过HTTPDNS服务无法获得域名对应的IP时,都必须降级:使用标准的DNS解析,通过Local DNS去解析域名。
移动互联网用户的网络环境比较复杂,为了尽可能地减少由于域名解析导致的延迟,建议在本地进行缓存。缓存规则如下:
除了以上几点建议外,减少域名解析的次数也能有效的减少网络交互,提升用户访问体验。建议在业务允许的情况下,尽量减少域名的数量。如需区分不同的资源,建议通过url来进行区分。
异步请求策略:解析域名时,如果当前缓存中有TTL未过期的IP,可直接使用;如果没有,则立刻让此次请求降级走原生LocalDNS解析,同时另起线程异步地发起HTTPDNS请求进行解析,更新缓存,这样后续解析域名时就能命中缓存。
懒加载策略的实施可以让我们真正实现 DNS 的零延迟解析。所谓懒加载策略,核心的实现思路如下:
下图描绘了预解析+懒加载的实现框架:
访问HTTPDNS服务解析域名时,如果请求HTTPDNS服务端失败,即HTTP请求没有返回,可以进行重试。 大部分情况下,这种访问失败是由于网络原因引起的,重试可以解决。
绝大多数的 APP 在应用初始化阶段都有一个启动期,我们可以在这个启动期做一些 preflight 工作,即在初始化阶段我们可以针对业务的热点域名在后台发起异步的 HTTPDNS 解析请求。这部分预解析结果在后续的业务请求中可以直接使用,进而消除首次业务请求的 DNS 解析开销,提升 APP 首页的加载速度。
发送HTTPS请求首先要进行SSL/TLS握手,握手过程大致如下:
上述过程中,和HTTPDNS有关的是第3步,客户端需要验证服务端下发的证书,验证过程有以下两个要点:
如果上述两点都校验通过,就证明当前的服务端是可信任的,否则就是不可信任,应当中断当前连接。
当客户端使用HTTPDNS解析域名时,请求URL中的host会被替换成HTTPDNS解析出来的IP,所以在证书验证的第2步,会出现domain不匹配的情况,导致SSL/TLS握手不成功。
当存在中间HTTP代理时,客户端发起的请求中请求行会使用绝对路径的URL,在开启HTTPDNS并采用IP URL进行访问时,中间代理将识别您的IP信息并将其作为真实访问的HOST信息传递给目标服务器,这时目标服务器将无法处理这类无真实HOST信息的HTTP请求。
绝大多数场景下,在代理模式下关闭HTTPDNS功能。
参考链接:
深圳SEO优化公司永湖百度网站优化排名多少钱河池建网站推荐安顺英文网站建设多少钱遵义百度网站优化排名报价盐城建网站哪家好本溪seo网站优化哪家好仙桃百度竞价包年推广公司横岗关键词排名包年推广公司烟台企业网站建设推荐达州英文网站建设价格漯河网页设计大浪关键词按天收费报价宜宾百度关键词包年推广青岛品牌网站设计多少钱梅州网站优化软件哪家好清徐百搜标王多少钱潮州网站关键词优化公司鹤壁SEO按效果付费承德百度爱采购开封网站优化按天收费价格衢州百搜标王公司汕头外贸网站建设报价通辽至尊标王哪家好新余关键词排名价格北京营销网站邢台网站推广工具价格通辽建网站价格揭阳百度seo报价唐山网站建设设计哪家好亳州英文网站建设多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运