智能DNS解析?
智能DNS解析 是如何做到的
我們一般查詢的是類似於公共DNS伺服器也就是8.8.8.8 或者114.114.114.114。這類伺服器上面緩存 負責解析域名的DNS伺服器(類似於DNSPOD)的緩存。
問題在於 如果在DNSPOD上面設置智能解析。但是我們訪問的是8.8.8.8 的時候去解析一個採用DNSPOD作為解析服務的域名。DNSPOD如何根據來源 給出智能解析結果(因為我們沒有訪問DNSPOD的伺服器,他是咋知道的 8.8.8.8如果沒有這個紀錄應該是根據根伺服器遞歸,也就是DNS會根據8.8.8.8(任播)這台伺服器後面負責遞歸的伺服器的IP給出結果才對啊)。
看到你的描述,想必對dns解析還是有一定了解的。我就不科普DNS了。
本想借你的問題,開個子域名到dnspod
分析分析,無奈人家不支持子域名添加。江湖傳聞的最大第三方DNS廠子竟然不支持3級域名添加。看看下面,我只能呵呵了...
看來,自從dnspod從了鵝廠後瞧不起咱這小門小戶了。得嘞,幸虧我還有CloudXNS這把瑞士軍刀在手。
CloudXNS不知道的同學請移步到此https://www.cloudxns.net/Index/AboutXns.html
。
你的問題是域名解析商是怎麼知道來源的?也就是如何精確解析的。
這裡要拋出一個概念,edns-client-subnet。它是google提交了一份DNS擴展協議,允許DNS resolver傳遞用戶的ip地址給authoritative DNS server. 如果DNS支持該協議,就可以獲取用戶真實的IP地址,進行準確的調度。
我的分析過程:
我在cloudXNS添加解析線路:
cloudXNS中的線路相當豐富,精確到省市各個運營商和海外線路;有圖為證:
為了解釋這個問題,我添加了代表性的 線路。然後分別dig域名:
我從電信北京設備dig域名。
可以看到返回是電信默認線路的A類地址。
然後我直接查詢CloudXNS的授權伺服器。
發現返回的是8.8.8.8。顯然走的是海外線路。
為嘛尼?抓報瞧瞧:
發包:
收包:
從上面可以看到,在additional records區域會攜帶客戶端ip地址。這就是edns-client-subnet的原理。這也是CloudXNS給大家帶來的驚喜,當然既然號稱瑞士軍刀,彩蛋還不止於此,據說CloudXNS最近還推出了httpdns,完全繞過了運營商,解析精確度高達99.999%嘍,真心NB...
回歸問題,8.8.8.8 是publicDNS,在收到用戶請求時候,會把客戶的LDNS的ip地址填充到Additional records區域,所以遞歸後傳的還是LDNS的IP。說到這估計你的疑慮已經消除了。
---------------------------分割線----------------------------------------------------------
感謝 橙芒果 同學的評論
若用戶用的是 public DNS,填充是用戶的源公網IP而不是LDNS了。
你的說法是正確的。看了我的結論估計是短路了。用8.8.8.8 就是繞開LDNS 。 怎麼會填充addr區域呢?
空說無憑,上代碼:
第一步:更改LDNS:用8.8.8.8來做DNS
第二步:檢查公網ip(ip138或者traceroute 公網域名)
看到我們的公網ip是163.53.243.17
第三步發起DNS詢問
第四步:抓包查看
00 a3 35 f3 翻譯過來就是163.53.243.0
可見攜帶的是公網ip地址
分享即學習
微信公眾號
CDN那些事
這裡得益於 Google 的 EDNS 協議,DNSPod 在 2012 年的時候就已經支持該協議,詳見:https://www.v2ex.com/t/46596 (DNSPod 與 Google Public DNS 建立合作關係,已經對 8.8.8.8 開啟了 edns 協議)。
並且在最近幾年,我們與 Google 的遞歸 DNS 團隊也有著非常密切的技術交流,整個技術的使用已經非常成熟了。
智能DNS全稱為「基於分散式架構的高速智能DNS解析服務系統」,是由睿江雲研發的一套智能DNS系統。可以隨時把域名託管到EflyDNS域名智能解析服務平台,享受DNS域名智能解析服務,讓域名能夠為各種網路來源的訪問用戶提供更好的網路瀏覽體驗。
推薦閱讀:
※IP報文的目的IP地址是私有IP地址,網路層如何處理的?
※nginx不是使用epoll么? epoll貌似是同步的吧! 那nginx的非同步非阻塞到底非同步在哪裡?
※DNS劫持和HTTP劫持有什麼區別?