架构师 – DNS与CDN

DNS域名系统详解

  • DNS Domain Name System 域名系统,作为域名和IP地址相互映射的系统,使用户更方便的访问互联网
  • 域名转化为IP
    • IP 可读性差
    • 会变动
  • 应用场景
    • 浏览器访问网站
    • 服务入口地址以域名形式对外暴露
  • 域名访问方案

    • Host文件特点

      • Key:Value
      • 终端本地保存
      • 访问速度快
    • Host文件缺点

      • 变更生效慢
      • hosts文件越来越大
      • 没规定命令规则,主机名会冲突
      • 维护映射关系代价高
    • 应用场景

      • 测试环境
    • DNS域名解析系统

      • DNS(Domain Name System)
      • 数据库系统
        • 层级
        • 分散
      • 基于域的命名方案
        • 域名
        • 子域名
      • 所有域名记录由DNS服务器集群存储
      • 用户终端不用存储所有的域名->IP映射,不再需要hosts文件
      • 规定了域名的命令规则,保证了主机名字不会重复
    • 域名结构

      • 根【就是个点】
      • 顶级域
      • 二级域
      • 三级域
      • 四级域
    • DNS 服务器

      • 根服务器
      • 顶级域名服务器【.com】
      • 权威域名服务器 [baidu.com]
    • DNS 解析过程

      • 优先使用缓存
        • 缓存时间可长期,比如30天
        • 缓存时间可短期,比如10分钟
        • 根据Time to live 字段灵活控制
      • Local DNS 服务器
        • 限制访问
      • DNS 迭代查询
        • Local DNS向根发起请求
        • Local DNS 向顶级域名DNS 发起请求
        • Local DNS 向二级域名DNS 发起请求
          image
        • localDNS自己一层层跑
      • DNS 递归查询
        • local DNS 向根发起请求
        • 根向顶级域名DNS发起请求
        • 顶级DNS 向二级域名DNS 发起请求
        • 最后一层层返回
      • 二者的区别就是 LocalDNS 在迭代的时候,需要自己根据线索一层层去寻找,而递归查询只需要自己在这等着就好
      • dig 查询解析路径
        • dig www.58.com +trace
        • 查询从根域名到指定域名可能经过的所有域名服务器
        • gTLD 一般通用顶级
        • ccTLDS 国家顶级域
  • DNS 资源记录
    • DNS数据库中每一个条目称作为一个资源记录(ResourceRecord,RR),说白了就是一条解析记录
    • owner 指示拥有资源记录的DNS域名
    • TTL 指明其它DNS服务器在期满放弃该记录信息之前对其缓存多长时间
    • CLASS IN(Internet类)
    • TYPE 资源记录类型(A:IPv4主机地址,AAAA IPv6主机地址,NS 权威名称服务器,CNAME 别名)
      • 举例:
      • www.baidu.com 190 IN CNAME
      • www.wshifen.com 195 IN A
  • DNS 协议
    • UDP协议
      • UDP两个包: 简单快捷,不用建立可靠连接有应答就行
      • TCP 开销大
      • image
    • 协议头
    • image
    • image
  • DNS 应用场景
    • 客户端请求服务端
      • APP客户端访问服务端
      • 小程序客户端访问服务端
      • H5页面访问服务端
      • 企业内部DNS
      • 线上服务之间访问通过DNS域名
      • 服务提供方IP变更只需要修改DNS配置即可
      • 预留资源实现客户端无感知扩容
      • 服务集群暴露3个节点,但提供6个域名
      • 通过DNS将6个域名解析到3个节点上
      • 服务集群扩容只需要修改DNS解析,客户端无感知
      • 通过域名二级映射从而多个域名修改时候一键完成
      • IP负载均衡

        DNS 产品选型分析

  • 百度公共DNS
    • 180.76.76.76
  • 阿里公共DNS
    • 223.5.5.5
    • 223.6.6.6
  • 腾讯公共DNS
    • 119.29.29.29
  • 114DNS
    • 114.114.114.114
    • 114.114.115.115
  • 国外DNS产品
    • Google DNS
      • 8.8.8.8
      • 8.8.4.4
    • IBM DNS
      • 9.9.9.9
      • 149.112.112.112
    • openDNS
      • 208.67.222.222
      • 208.67.220.220
  • DNS 选择
    • 国内外不同的DNS 解析出来的ip是不一样的
    • 国内用户
      国内用户百度,阿里、腾讯、114DNS任选其二
    • 国外用户
      优选Google、IMB,openDNS做备份
    • 建议
      一主一备,防止单公司故障
      使用付费版,可用性更高【提工单】

      DNS测试工具

    • DNS Benchmark
      https://www.grc.com/dns/benchmark.htm
      软件内部已经收集到的近5K个DNS全部扫描一遍,留下最快的50个
      image
  • DNS可能的问题
    • 请求耗时变长
      • 一个请求会有两次链路
        (先找到ip,再去解析)
    • 域名对应的IP生效不及时
      • 域名对应的IP修改后不能马上生效
        (存在缓存)
    • 域名被劫持
      • 域名对应的IP被篡改,导致访问的服务不对(弹广告)

DNS劫持技术分析

  • DNS劫持:通过攻击域名解析服务器(DNS),获取域名解析控制权和解析方法,把目标网站域名解析到错误的地址
  • DNS劫持原因
    • 域名服务器负责用户解析域名请求;
    • 没有机制保证域名映射是否准确;
    • 域名服务器被黑客攻击,恶意修改;
    • “流氓的域名服务器”更改一些域名的解析结果
  • DNS劫持的目的
    • 阻止用户访问某些特定网站【双11不让访问淘宝】
    • 引导用户到广告页面
  • 劫持原因
    • 利益因素
  • DNS 劫持的环节
    • 往往都在运营商Local DNS 处
  • DNS 污染
    • 劫持域名解析请求,返回伪造结果
    • DNS 污染原因
      • UDP无连接协议,导致篡改结果可行性
      • 监听53端口数据,发现匹配请求立刻返回伪造结果劫持域名解析请求,返回伪造结果
    • DNS污染过程
      • 用户客户端发出DNS请求后,等待应答
      • 如果此时有一个看起来正确的应答包(拥有和DNS请求一样的序列号),TA信以真,并且抛弃稍晚到达的应答包
      • 这个DNS欺骗的关键在于伪造一个特定序列号的应答包
      • 伪造DNS应答包个人难度大
      • 常见DNS污染案例
        • 屏蔽国外网站
  • DNS安全事件

    • 常见DNS污染案例 Ø

    • 2009年 巴西最大银行遭遇DNS攻击,1%用户被钓鱼;

    • 2010年1月12日 “百度域名被劫持”事件; Ø - 2012年 日本邮储银行、三井住友银行和三菱东京日联银行各自提供的网上银行服务被钓鱼网站劫持;

    • 2013年 史上最大规模DNS钓鱼攻击预估已致800万用户感染;

    • 2014年1月21日,全国大范围出现DNS故障,下午15时20分左右,中国顶级域名根服务器出现故障, 大部分网站受影响

    • 快速发现DNS劫持

      • App域名诊断
      • 浏览器访问,判断目标域名正确性
      • nslookup命令 + whois IP确认
    • 劫持恢复解决方案

      • 商务推动【给DNS提供方打电话】
      • 切换到备用域名
      • 切换到IP直连方案
        • 用户端直接使用IP进行访问服务端,从而绕过DNS解析
    • 避免劫持方案

      • 客户端IP直连
        • 客户端负责负载均衡
          • IP Server[先来请求一下,获取ip]
        • 移动端(Android, iOS)
        • IP直连案例
          • IM即时通讯
          • 通过Http拉取服务器IP列表
          • 根据负载均衡算法选择一个IP建立长连接
        • IP直连技术点
          • 服务节点扩展
            • 更新ServiceIPList文件
          • 流量问题
            • 通过版本号判断是否需要更新
          • 负载均衡
            • 客户端负载均衡
          • 异构服务器负载均衡 支持权重,IPList允许节点重复
          • IP直连优点
            • 不需要每次请求做DNS解析,节省时间
            • 不需要每次请求做nginx转发,节省时间
            • 不需要每次拉取ip-list,节省流量
            • DNS被劫持时仍可以使用本地ip
      • 使用 HttpDNS
        • 绕过DNS协议请求,解决运营Local DNS劫持问题
        • UDP协议->HTTP协议
        • 80端口取代53端口
        • 访问HttpDNS接口,绕过Local DNS;
        • 基于容灾考虑,保留次选使用运营商LocalDNS的域名解析方式;
        • 客户端使用获取到的IP地址,向此IP发送业务协议请求,获取数据
        • 优势
          • 根治域名解析异常
          • HttpDNS能直接获取到用户IP
          • 扩展性强,可实现更精细化的流量调度
        • 方案提供商
          • 阿里、腾讯、百度云、新浪的HttpDNS
      • 高可用DNS设计
        • 应用方面
          • 选用httpDNS
          • 基于IP地址直连
        • DNS监控治理
          • 实时监控,三种方式及时发现
          • 发现问题,及时推动解决

DNS设置策略

  • A 记录配置

    • 指向最终IP
    • wan.slb01.zhuanzhuan.com. A 115.159.231.71
  • NS 记录

    • 权威域名服务器
    • zhuanzhuan.com NS ns3.dnsv5.com
  • CNAME 配置

    • 业务域名使用CNAME
      • www.zhuanzhuan.com CNAME wan.slb01.zhuanzhuan.com[别名可能经常改]
    • 域名对应多个IP
  • 多数据中心解析

    • 异地多中心隔离
    • DNS轮询
    • 效果不稳定
  • 全局负载均衡

    • GSLB对服务器和链路进行综合判断来决定由哪个地点的服务器来提供服务
    • 将用户请求定向到最近节点
      • 根据服务器的负载
      • 健康度
      • 响应时间
  • 智能DNS

    • 智能DNS除了基本DNS功能外,可以自动识别发送者来源,将域名智能解析到不同IDC中的IP
    • DNSPod
      • 支持智能解析;
      • 电信用户访问电信服务器;
      • 网通用户访问网通服务器;
      • 不支持健康检查;
    • GTM(Global Traffic Manager)
      • 健康检查、
      • 资源管理、
      • 调度策略
  • 智能DNS 解析

    • 智能DNS解析最基本的功能是根据不同的访问者把域名分别解析成不同的IP地址
    • 配置示例
      • CNAME指向CDN域名
      • 真实IP由智能DNS返回
      • image

CND 系统

  • CDN(Content Delivery Network):内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负 载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和 命中率。
  • CDN关键字
    • 内容分发网络
    • 将内容从源站传输到用户端
    • 加速网络访问速度
    • 静态资源缓存
  • CDN好处
    • 改善用户访问体验
    • 缓解服务器压力
    • 全面预防单点故障
    • 解决网站突发流量问题
    • 合理利用互联网资源
    • 解决互联互通问题
  • CDN适合数据
    • 页面
      • htm、html、shtml
    • 图片
      • jpg、gif、png
    • 流媒体
      • mp3、flv、wmv
    • 样式脚本
      • css、js、xml
  • CND专业术语
    • 回源:
      当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是 缓存已经到期,就会回源站去获取;
    • 回源域名
      • 采用回源域名方式进行回源,解决原站IP变更问题
    • CDN回源率
      • 回源请求数比
      • 回源流量比【越少越好】
  • CDN系统技术点
    • 内容路由
      • CDN负载均衡系统实现CDN的内容路由功能
      • 将用户的请求分配到CDN中的最佳节点
      • 两个层次
        • 全局负载均衡(GLB)
        • 本地负载均衡(LLB)
      • 实现方法
        • DNS
        • 应用层重定向
        • 传输层重定向
    • 内容分发:虚拟专用网络,主动push,备用pull分发
      • 源内容到CDN节点的Cache过程 - 主流内容分发实现方式
        • PUSH
          • 主动分发;
          • 内容管理系统发起;
          • 将内容从源分发到CDN的Cache节点;
        • PULL
          • • 被动分发技术;
          • • 用户请求驱动;
          • 用户请求内容CDN中miss,从源中或者其他CDN节点中实时获取内容;
    • 内容存储:基于缓存技术;NAS(网络磁盘阵列)
      • 源内容存储
      • 存储量大
        • • 分布式存储系统
    • CDN节点存储
      • 功能和性能
      • 内容格式支持
      • 缓存命中率
      • 可靠性
      • 稳定性
    • 内容管理:内容、索引、访问状态信息收集,多属性内容监控机制
      • 本地内容索引
      • 本地内容拷贝
      • 本地内容访问状态信息收集
  • CDN 关键技术
    • 协作式推送技术
      • 内容推送到合适的边缘服务器
      • 边缘服务器之间共享内容(cdn与cdn之间)
      • 内容/边缘服务器映射表
    • 非协作式拉取技术
      • 向用户返回最近边缘服务器
      • 内容不存在,边缘服务器回源
    • 协作式拉取技术
      • 从其他边缘服务器拉取数据
      • 技术尚未成熟
  • CND层级结构
    • 中心层: 中心节点
    • 区域层:区域节点
    • 边缘层:边缘节点
  • CDN缓存策略
    • 缓存过期则回源
    • CDN服务商提供指定缓存时间方法
    • 刷新缓存,强制过期【js 图片等 】
    • 缓存时间影响回源率

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注