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

  摘要:智能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带来的问题。

时间: 2024-10-28 20:41:56

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

如何手动编译bind,如何使用view实现智能DNS解析,以及如何对DNS服务器进行压力测试。

今天带大家来看看如何手动编译源码bind,自己手动编译安装的很多文件都要自己去建立,配置文件也要从零写起,而且没有服务启动脚本,需要自己编写启动脚本. 实验规划: 1.在192.168.1.200这台主机上编译安装bind,完成后为named服务编写启动脚本,加入到service. 2.配置view实现智能DNS解析:当请求解析www.tuchao.com,来源为192.168.1.0/24时候,解析到192.168.1.100.其他的来源都解析到外网地址,1.1.1.1 3.使用querype

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

导读:在讨论这个问题,其中群友老孤同志也提供了不少非常有参考价值的资料,所以我们再把这些资料再整理一次,从比较底层的技术原理上重新进行一次分析.   我们知道,因为南电信北网通现象的存在,我们的服务器或网络内容.服务等提供商对网络的选择也至为重要.每位站长或网络内容.服务提供商都希望自己的网站在全国乃至全球都能快速被用户访问到,但现实国情中,单...正文: 其实双线技术的实现方式并不是什么新的技术问题了,说白了就是智能DNS解析+双线路接入,不过最近不少朋友都在讨论这个问题,其中群友老孤同志也提

centos 系统搭建 智能DNS解析-V1.1.pdf

centos5.8 DNS服务地址解析 目录 centos5.8 DNS服务地址解析... 1 一.         DNS服务地址解析... 2 1.      安装bind. 2 2.      配置named. 3 3.      配置named.rfc1912.zones. 4 4.      配置正反向文件... 7 1.      配置正向解析... 7 2.      配置反向解析:... 8 如果有多个IP段的话可以参考如下设置配置反向解析:... 8 5 检查文件是否有语法错误

高校智能DNS解析技术总结分析

写在正文之前: DNS:域名系统 DNS功能:提供域名及IP地址的解析查询服务 正向解析:已知域名www.abc.com,查询其对应的IP地址. 反向解析:已知IP地址,查询该服务器上配置的域名信息. 常用工具:nslookup 域名记录: NS记录:解析服务器记录,用于声明解析该域名的服务器.例dns.abc.com MX记录:邮件交换记录,用于指向该域名下的邮件服务器.例mail.abc.com A记录:正向解析记录 CNAME记录:别名记录 PTR记录:反向解析记录 SVR记录:一种资源记

访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)

大型网站或多受众用户服务网站在中国特定网络环境下,离不开CDN(内容服务网络)及用户调度.而CDN与用户调度则涉及智能DNS解析与用户定位的问题. 大家知道,现在很多网站的 GLSB 都是基于 DNS 来做用户定位调度.DNS 的解析流程如下: 比如,我是北京的用户,我的 DNS 为 202.106.0.20.当我要打开 www.php-oa.com 时,先会给请求发给 ISP 告诉我的 DNS.这个叫 Local DNS .然后其它的向根域和二级域的查询,都是由 Local DNS 帮我完成的

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

DNS/域名解析 可以看到dns解析是最初的一步,也是最重要的一步.比如访问亲友,要知道他的正确的住址,才能正确地上门拜访. dns有两种协议,一种是UDP(默认),一种是TCP. udp 方式,先回应的数据包被当做有效数据 在linux下可以用dig来检测dns.国内的DNS服务器通常不会返回正常的结果.下面以google的8.8.8.8 dns服务器来做测试,并用wireshark来抓包,分析结果. 1 dig @8.8.8.8 www.youtube.com dns-udp-youtube

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

dns理论 dns的出现 网络出现的早期是使用IP地址通讯的,那时就几台主机通讯.但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windows也继承保留了这个文件).这个文件中记录着主机名称和IP地址的对应表.这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了. 但是后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出现了在文件服务器上集中存放h

Windows Server 2016 智能DNS(一)

说到智能DNS,作为一个IT人员来说并不陌生,但是一般都是第三方提供的,很少可以在本地实现,今天我们说说可以在本地实现配置智能DNS的解决方案,那就是Windows Server 2016下通过配置DNS Policy可以实现智能DNS解析,我们必须要重申一下,只有Windows Server 2016下的DNS才支持哦,Windows Server 2016已经发布很长时间了,所以今天我们对于Windows Server上DNS支持的功能我们做一下功能演示,首先介绍的是DNS Policy G

Windows Server 2016 智能DNS(五)

Windows Server 2016 智能DNS(五)我们前面几篇文章介绍了如何Windows Server 2016 智能DNS的相关配置介绍,今天继续介绍Windows Server 2016 智能DNS的配置管理,前面一篇我们介绍了根据自己的需求来配置相关功能,那今天继续介绍相关记录的编辑操作.前面介绍的是子网.子网区域.及子网区域的记录进行的日常管理介绍,这些都是基本,最主要的还是策略,所以我们今天介绍策略的介绍:Policy:查看:get-DnsServerQueryResoluti