码迷,mamicode.com
首页 > Web开发 > 详细

智能DNS解析之edns-client-subnet篇

时间:2017-08-17 14:45:31      阅读:1379      评论:0      收藏:0      [点我收藏+]

标签:width   图片   https   auth   工作方式   ati   根据   方式   需要   

  摘要:智能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篇

标签:width   图片   https   auth   工作方式   ati   根据   方式   需要   

原文地址:http://www.cnblogs.com/nopnog/p/7380766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!