Skip to content

HTTPDNS #128

@AlexZ33

Description

@AlexZ33

c端H5有时候会出现一些网络造成的白屏,无法查出原因,猜想可能是:

  • 用户网络本身存在质量问题,导致无法访问公网
  • 用户LocalDNS存在问题, 导致无法解析
  • 用户LocalDNS被劫持
  • 用户网络出口运营商和LocalDNS运营商不一致,导致用户到CDN节点的跨网访问(存在质量不好等情况)
  • 用户网络到达解析的CDN边缘节点网络链路质量有问题
  • 用户网络到达解析的API接口地址链路质量有问题
  • 极端弱网环境用户端bug
    以上几种猜想,大部分都可以通过HTTPDNS解决
    比如:
  • httpdns解析防止LocalDNS劫持
  • 自定义解析策略,实现自行调度
  • 部分体验可以得到提升(理论上可以,无数据支撑)

刨除白屏原因,单从DNS劫持、跨网访问等, HTTPDNS也是不错的方案

HTTPDNS

HTTPDNS使用HTTP与DNS服务器交互,代替传统的基于UDP的DNS协议,域名解析请求采用http协议直接发送到HTTPDNS服务端,从而绕过运营商的Local DNS。

  • 防劫持
    • 绕过运营商LocalDNS,避免域名劫持。
  • 精准调度
    • 基于来源IP,获得更精准的解析结果,就近接入。
  • 快速生效
    • 避免LocalDNS不遵循权威TTL,解析结果长时间无法更新
  • 客户端实现httpdns时候要注意
    • 构建客户端DNS缓存
    • 域名预解析
    • 懒更新
    • LocalDNS保底策略
    • httpdns下发的IP地址质量探测
    • https的sni证书验证问题
    • cookie管理
    • 连接管理
    • webview如何直连IP
    • Wi-Fi/4G网络切换,接入点网络归属可能发生变化

阿里云HTTPDNS

使用方式为:LocalDNS为主,httpdns保底。即只有当dns被污染、劫持才会走httpdns。

阿里云HTTPDNS

  • 使用固有IP地址进行访问。「IP是否接入了 anycast 网络?高可用等如何保障 还在咨询中」
  • 直接添加域名,即可根据来源IP进行解析。
  • 支持「自定义域名解析配置」即精准调度,此配置需要使用阿里云「函数计算」
  • 服务支持,详细见附件「小米SDNS接入文档」。
  • 接口支持鉴权方式调度。
  • 有成熟的SDK和最佳实践方案。
  • 计费:20亿次/年/4800元「资源包方式」。
  • 提供20Gb的免费共享DDOS攻击防御能力。

阿里云HTTPDNS采用ip访问,可以解决第一跳被劫持问题;一期CDN域名可以直接配置,不进行自定义调度,直接在平台上配置域名即可解析。

综上,建议直接使用阿里云httpdns服务,采用HTTPDNS为主,LocalDNS保底方案。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions