那些年移动App域名解析踩过的坑-阿里云开发者社区

开发者社区> 德泰> 正文

那些年移动App域名解析踩过的坑

简介: App出现域名劫持、解析结果修改生效慢、跨运营商跨地域访问问题?阿里云HTTPDNS可以解决这类问题。
+关注继续查看

一、摘要

移动应用出现域名劫持、解析结果修改生效慢、跨运营商跨地域访问问题?阿里云HTTPDNS可以解决这类问题。

二、域名解析阿喀琉斯之踵

域名解析是终端设备访问互联网的第一步,扮演着至关重要的角色。同时,域名解析服务是当前整个互联网基础设施中最脆弱的几个环节之一。移动互联网时代,由于接入智能终端数量激增,问题愈加严重。

案例1: 域名解析问题导致访问流量减半

2017年2月24日21:20-2月25日1:00之间,某App A在江苏省某ISP访问流量减半,排查后发现为递归DNS故障导致。

screenshot.png
图1 递归DNS故障导致业务访问受害

如图1所示,正常访问期间,App业务访问大致分为四步:

  • Step 1: App发起业务域名解析
  • Step 2: 递归DNS返回域名解析结果IP
  • Step 3: App根据返回的IP向业务服务器发起请求
  • Step 4: 业务服务器返回响应,交互结束。

故障发生时,递归DNS在第二步无法返回解析结果或者返回错误的结果,导致App无法正确获取业务服务器的IP,最终业务访问受到巨大影响。

案例2: 域名解析结果修改不生效导致流量无法迁移

2016年11月中旬,由于某App B访问的节点存在服务质量方面问题,计划通过修改域名解析记录将流量切走,但由于域名解析不生效,导致流量无法调走,最终4个小时后节点服务质量恢复了业务才回归正常。

screenshot.png
图2 域名解析不生效的恶果

如图2所示,正常访问期间,App业务访问的细化步骤可以分解成六步:

  • Step 1: App发起业务域名解析
  • Step 2: 递归DNS向权威DNS发起域名解析结果
  • Step 3: 权威DNS返回域名对应的IP给递归DNS
  • Step 4: 递归DNS给App返回域名解析结果
  • Step 5: App根据返回的IP向业务服务器发起请求
  • Step 6: 业务服务器返回响应,交互结束。

故障发生时,尽管权威DNS的解析记录已经修改,但递归DNS的解析结果却没有任何变化(常见原因是递归DNS不遵循返回结果的TTL,私自设置缓存时间),仍然返回之前的结果,导致了故障的发生。

案例3: 不能碰的递归DNS节点

2011年,某公司流量峰值期间,运维人员计划通过修改CDN的智能DNS系统配置将某一地区的部分流量从负载高的CDN节点到相对流量小的CDN节点去。实施过程中,发现某一个DNS IP对应的流量到达5G+,无法实现“调部分流量”的目标。

案例4: 客户端调度不准

客户反馈的服务质量问题往往是由于调度不准确导致的。参见以下案例。

screenshot.png
图3 手机DNS配置不准导致跨ISP跨地域访问

根据IP地址来判断,案例中的用户位于武汉联通,而递归DNS却配置成了上海电信的DNS服务器,导致最终调度系统会按照上海电信区域来做就近接入,出现了跨运营商、跨地域访问问题。

三、问题溯源

3.1 域名劫持问题

现网上DNS解析一般基于UDP来实现,由于UDP自身的脆弱性,很容易被劫持。

screenshot.png
图4 域名劫持原理

根据多种渠道统计数据,国内现网的周劫持率在3%-5%左右(对于某一个业务,一周之内曾经被劫持过的用户占比),部分地区部分时段的劫持率超过20%。

基于国内严重的流量劫持情况,腾讯、小米等六公司与2015年底联合声明抵制流量劫持等违法行为,但当前的形式仍不容乐观。

域名劫持的危害性在于隐蔽性强、品牌伤害严重、解决难度大。

  • 隐蔽性强。 劫持偶发,难以复现,举证难。
  • 品牌伤害严重。 劫持后往往弹出涉黄、涉赌等内容,严重伤害应用品牌。
  • 解决难度大。 确认域名劫持后,一般开发者没有渠道去解决问题。

3.2 递归DNS数量少且分布不均导致无法就近接入

在国内,递归DNS数量较少且分布不均。据统计,top 200的递归DNS承担国内90%+的DNS访问流量。这样少的递归DNS是无法承载就近接入需求的。

3.3 终端手机的Local DNS配置错误导致无法就近接入

上节的案例4就是典型的递归服务器配置错误导致的就近接入问题。

四、阿里云飞天的解决之道

4.1 小工具大本领:HTTPDNS

screenshot.png
图5 HTTPDNS服务原理

如图5所示,HTTPDNS与传统的DNS对比起来,有以下几项功能:

  • 使用HTTP协议进行域名解析,极大增强了域名解析的安全性
  • 绕过了递归DNS服务器,最大限度防止域名劫持的发生
  • HTTPDNS服务自身利用IP地址而非域名对外提供服务,防止HTTPDNS自身域名被劫持
  • HTTPDNS想权威请求解析结果时,使用客户端IP进行解析

4.2 适用对象

有自己App的开发者,并且需要一定的App编码能力(接入HTTPDNS必须修改App源码)。

4.3 如何使用

  • Step 1: 开通HTTPDNS
  • Step 2: 到HTTPDNS产品控制台配置待解析域名
  • Step 3: 通过Android/iOS SDK或者HTTP API将App接入HTTPDNS服务

请参见HTTPDNS帮助文档

五、案例

手机淘宝、支付宝钱包等阿里系App都已经接入HTTPDNS产品,治愈了上面提到的一系列顽疾。

案例中App B尝试接入阿里云飞天HTTPDNS后,在2017年2月24日的故障中,新版本未受任何影响,老版本则遇到了App A类似的问题。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python3 配置文件 解析
/************************************************************************ * Python3 配置文件 解析 * 说明: * 通常写软件都会写配置,这样是为了方便调试或者这种软编码的方式可以让 * 我们变得相对来说自由那么一点。
573 0
Scrapy框架-通过scrapy_splash解析动态渲染的数据
前言 对于那些通过JS来渲染数据的网站,我们要解析出它的html来才能取到想要的数据,通常有两种解决办法: 1、通过selenim调用浏览器(如chrome firefox等)来爬取,将解析的任务交给浏览器。
2012 0
面试疑难点解析——Java数据库开发(四)
无法缩短内存与磁盘间的读取的延迟,这个时候该怎么办?缓存与数据如何保持同步?本文为你详细解答。
897 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4477 0
【大创_社区划分】——PageRank算法的解析与Python实现
一、什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO(^_^)。
1032 0
常见设计模式解析和实现(C++)Adapt模式
作用:将一个类的接口转换成客户希望的另一个接口。Adapt模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。     UML示意图 1)      采用继承原有接口类的方式   2)采用组合原有接口类的方式   解析: Adapt模式其实就是把完成同样一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能。
726 0
+关注
德泰
阿里云高级产品专家,负责阿里云移动开发者服务。
10
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载