摘要:智能DNS解析是CDN的重要组成部份,所谓的智能也就是根据请求用户来对同一域名作出相应不同解析(目前大多数域名注册商还没提供线路解析的服务),所以CDN的调度准确性也就完全依靠DNS智能解析,但于由DNS是互联网上较早设计的协议但没有考虑到今天网络的情况于应用。

 

一、前言

  智能DNS解析是CDN的重要组成部份,所谓的智能也就是根据请求用户来对同一域名作出相应不同解析(目前大多数域名注册商还没提供线路解析的服务),所以CDN的调度准确性也就完全依靠DNS智能解析,但于由DNS是互联网上较早设计的协议但没有考虑到今天网络的情况于应用。让我们简单的来看看传统DNS的工作方式——

  

  在整个解析过程中。公共DNS代替用户向根,顶级域,权威DNS去查询结果并把结果返回给用户,被查询的权威DNS服务器是无法知道具体是哪个用户来查询,这也是问题所在,既然无法获得用户IP又如何能精准调度呐?google提交了一份DNS扩展协议,允许DNS resolver传递用户的ip地址给authoritative DNS server。

二、协议

DNS query会包含header和RR两个部分

TYPE=41 为EDNS扩展内容

   

  

OPTION-CODE: 2个字节(在RFC里最新定义是 0×0008, 老板本为0x50fa)

OPTION-LENGTH: 2个字节,描述它之后的内容长度(BYTE)

FAMILY: 2个字节,1表示ipv4, 2表示ipv6

ADDRESS: 实际存放IP地址的地方,ipv4长度为4

三、测试

  目前BIND不能支持EDNS需要打补丁后才能发送EDNS的查询包,请先下载edns-client-subnet dig patch并安装进BIND中。

1. 先将测试域名做多线路的域名解析

  

分别为edns.dns.com做了两条DNS智能解析,分别来自上海电信的用户解析到3.3.3.3,北京电信的用户解析到2.2.2.2,其它的都解析到1.1.1.1。

2. 使用打过edns-client-subnet patch的DIG来查询

  

当client为180.149.128.1(上海电信IP)时可以正确返回对应的线路解析。

  

当client为58.32.1.1(北京电信IP)时也可以正确返回对应的线路解析。

四、总结

经上测试使用edns-client-subnet可以解决当前CDN不能精准高度的痛点。但也可以看到真正要支持EDNS0还需要中间各个环节的给力。

  1. 首先权威DNS要有智能解析的能力,一份精准的IP库;

  2. 权威要支持EDNS0的格式并且正确取出客户端IP;

  3. 公共DNS需要将客户端IP信息打包成EDNS0的格式发送查询。

参考文档

  https://tools.ietf.org/html/draft-ietf-dnsop-edns-client-subnet-08

  RFC2671中还包含了很多EDNS0实现时请求方和响应方注意的事项,以及EDNS0带来的问题。

智能DNS解析之edns-client-subnet篇的更多相关文章

  1. DNS中的AC、rndc、智能DNS解析和基础排错

    bind中的ACL和rndc DNS除了服务器外,还具有一些访问控制和视图功能. 访问控制是指仅对定义的网络进行解析,视图也就是智能解析. 1>访问控制是通过acl函数来实现的,acl把一个或多 ...

  2. 简单介绍智能DNS解析+双线路接入

    导读:在讨论这个问题,其中群友老孤同志也提供了不少非常有参考价值的资料,所以我们再把这些资料再整理一次,从比较底层的技术原理上重新进行一次分析.   我们知道,因为南电信北网通现象的存在,我们的服务器 ...

  3. 什么是智能dns解析

    智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案.具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS ...

  4. DNSPod--国内最早提供免费智能DNS产品的网站,致力于为各类网站提供高质量的多线智能DNS免费解析

    DNSPod 建立于2006年3月份,是一款免费智能DNS产品. DNSPod 可以为同时有电信.网通.教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网 ...

  5. 如何解决dns解析故障

    在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的.这个现象发生的机率比较 ...

  6. DNS单机部署以及智能dns部署

    dns理论 dns的出现 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linu ...

  7. DNS解析污染原理——要么修改包,要么直接丢弃你的网络包

    DNS/域名解析 可以看到dns解析是最初的一步,也是最重要的一步.比如访问亲友,要知道他的正确的住址,才能正确地上门拜访. dns有两种协议,一种是UDP(默认),一种是TCP. udp 方式,先回 ...

  8. BindWeb - Bind智能DNS管理系统介绍

    2019-05-08 演示网站: https://bindw.cdneks.com demo/demo 2018-11-27 修改部署架构,取消网络共享存储设备,在每台BIND服务器启用NFS4并仅向 ...

  9. C#实现DNS解析服务和智能DNS服务

    C#实现DNS解析服务有一个开源项目ARSoft.Tools.Net, ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID ...

随机推荐

  1. guacamole 0.9.13安装与配置

    以下命令很多都需要管理权限,建议使用管理员账号执行,遇到问题可以留言. Guacamole官网文档介绍翻译:http://www.cnblogs.com/ji-yun/p/5657709.html 1 ...

  2. 关于IT公司招聘的一个思考

    作者:朱金灿 来源:http://blog.csdn.net/clever101 21世纪什么最贵?人才!相信这是很多IT公司管理者的深刻感悟.对于IT公司而言,找到合适的人才往往不能单靠人事部门,一 ...

  3. Yii2.0 集成使用富头像上传编辑器

    在开发过程中,我们会用到头像上传的功能.这里给大家推荐一款比较流行的头像上传组件,FullAvatarEditor 2.3(富头像上传编辑器). 实际效果如图所示: 1.下载组件,下载地址:http: ...

  4. Python+selenium整合自动发邮件功能

    主要实现的目的是:自动将测试报告以邮件的形式通知相关人员 from HTMLTestRunner import HTMLTestRunner import HTMLTestReport from em ...

  5. Tomcat控制台乱码问题

    乱码效果图 解决办法 1.修改cmd的编码格式 快捷键win+R打开运行程序,输入regedit打开注册表,找到以下路劲并且修改. [HKEY_LOCAL_MACHINE\SOFTWARE\Micro ...

  6. Codevs 1860 最大数

    题目描述 Description 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 输入描述 Input Description 第一行一个正整数n. 第二行n个正整数,空格隔开 ...

  7. jquery.restrictFieldLength.js

    1.参考资料 http://www.cnblogs.com/aarond/archive/2013/08/02/3234042.html 2.使用举例 //字符控制 $(function () { $ ...

  8. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  9. python_98_面向对象_学校

    class School(object):#以后都加object(基类) def __init__(self, name, addr): self.name = name self.addr = ad ...

  10. idea前后端分离搭建 JavaWeb项目

    我们小组在开发的时候, 承诺了前后端分离, 那么就要求前端和后端需要分开搭建. 不能同时放在一个工程项目中. 大致的思路是开启两个Tomcat, 一个跑前端页面, 一个跑后端程序. 1. idea打开 ...