那些年移动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类似的问题。

目录
相关文章
|
1月前
|
缓存 安全 Java
提高APP安全性的必备加固手段——深度解析代码混淆技术
提高APP安全性的必备加固手段——深度解析代码混淆技术
23 1
|
1月前
|
开发者 iOS开发
iOS App上架新规解析:如何进行App备案
iOS App上架新规解析:如何进行App备案
135 0
|
1月前
|
测试技术 Android开发
快速上手App自动化测试利器,Toast原理解析及操作实例
`Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。
24 3
|
5月前
|
移动开发 程序员 API
item_get_app详细解析H5数据
item_get_app详细解析H5数据
|
8月前
|
Java 数据安全/隐私保护 Python
Crack App | 某站 1024 CTF App 逆向题解析(一)
Crack App | 某站 1024 CTF App 逆向题解析(一)
|
4月前
|
SQL 数据库 数据安全/隐私保护
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
60 0
|
6月前
|
存储 关系型数据库 MySQL
(demo)交易所App开发功能|交易所系统开发源码规则解析
(demo)交易所App开发功能|交易所系统开发源码规则解析
|
8月前
|
存储 移动开发 Linux
最新的iOS应用上架App Store详细流程解析
设置app图标、1024*1024规格的jpg或png格式图片,版权按照格式设置 每个网站下面都有版权信息‘可以参考格式写。© Appuploader 这样 然后点击分级的编辑进入下一步设置
|
9月前
|
移动开发 定位技术 API
手机端H5地图调起开发实战案例解析(百度高德腾讯地图调起、底部弹出层、提示安装地图导航APP)
手机端H5地图调起开发实战案例解析(百度高德腾讯地图调起、底部弹出层、提示安装地图导航APP)
268 0
|
9月前
|
数据库 开发工具 开发者
农场牧场养殖系统app合成养成模式玩法功能开发源码规则解析
农场牧场养殖系统app合成养成模式玩法功能开发源码规则解析

相关产品

  • 云解析DNS