天天看點

科普-DNS原理及解析過程

作者:網際網路技術集中營

概述

目前網絡通訊大部分采用的是TCP/IP協定,而TCP/IP協定的基礎是IP位址,是以計算機在網絡中進行通訊時隻能識别由純數字構成的IP位址。但在實際的工作生活中,我們隻需在浏覽器位址欄中輸入一串簡單易記的域名,就能通路到所對應的網站,在這個過程中發揮重要作用的就是DNS。接下來我們就針對DNS的原理和解析過程做下簡單介紹。

什麼是DNS

DNS是Domain Name System的縮寫,翻譯成中文就是“域名系統”。DNS是網際網路中的一項核心服務,是用于實作域名和IP位址互相映射的一個分布式資料庫,它将簡單明了的域名翻譯成可由計算機識别的IP位址,使使用者可以更快速便捷地通路互聯。

網際網路連通的是全球資源,單一的域名伺服器不足以支撐全部的位址轉換操作,是以全球有多套域名伺服器互相配合使用。早在1983年網際網路就開始采用層次樹狀結構的命名方法,并使用分布式的域名系統進行解析操作。這樣既提升了域名解析的效率,同時也保障了域名解析的穩定性,如果系統中單個域名伺服器出現故障,不會對整個DNS系統的正常運作造成太大影響。

域名結構

網際網路采用了層次樹狀結構的命名方法。任何一個連接配接在網際網路上的主機或路由器,都有一個唯一的層次結構的名字,即域名。

域名的結構由标号序列組成,各标号之間用點隔開。類似于這樣:“….三級域名.二級域名.頂級域名” 。各級域名由其上一級的域名管理機構管理,而最進階的頂級域名則由ICANN進行管理。

科普-DNS原理及解析過程

域名由兩個或兩個以上的詞組成,常見域名為二級域名+頂級域名組成,是以一般我們會将域名分為頂級域名、二級域名,除此之外,還有國家代碼頂級域名。

域名伺服器

科普-DNS原理及解析過程

網際網路上的DNS域名伺服器也是按照層次劃分的,每一個域名伺服器都隻對域名體系中的一部分進行管轄。根據域名伺服器所起的作用,可以把域名伺服器劃分為四種不同的類型:

根域名伺服器

在2016年之前全球一共擁有13台根伺服器,1台主根伺服器在美國,其他12台為輔根伺服器,其中美國9台,英國1台,瑞典1台,日本1台,這13台根伺服器主要管理網際網路的主目錄,主要作用IPV4。

2016年,中國下一代網際網路工程中心領銜發起雪人計劃,旨在為下一代網際網路(IPV6)提供更多的根伺服器解決方案,該計劃于2017年完成,其中包含3台主根伺服器,中國1台,美國1台,日本1台,22台輔根伺服器,中國3台,美國2台,印度和法國分别有3台,德國2台,俄羅斯、意大利、西班牙、奧地利、智利、南非、澳洲、瑞士、荷蘭各1台,共22台,從此形成了13台原有根加25台IPV6根伺服器的新格局。

科普-DNS原理及解析過程

頂級域名伺服器

頂級域名為域名最後一個.号右側部分的單詞,如mail.baidu.com的com就是頂級域名,頂級域名對應的伺服器我們稱之為頂級域名伺服器,除此之外,常見的頂級域名還有.NET,.TOP,.ORG等,他們都有各自的用途。

  • .COM:用于商業機構,沒有使用限制,所有人都可以注冊
  • .NET:最開始用于網絡組織,如服務商和維修商,現在沒有使用限制,所有人都可以注冊
  • .TOP:用于行業内的頂級企業或個人,所有人都可以注冊
  • .ORG:用于各種組織,如非盈利組織、教育組織等,現在所有人都可以注冊

常見的頂級域名除上述的之外,還有.CN,.UA,.JP等,這些是由兩個字母組成的,是各個國家專用的頂級域名,如.CN是中國專用的頂級域名,.JP是日本專用的頂級域名。

權威域名伺服器

當一個權限域名伺服器還不能給出最後的查詢回答時,就會告知發出查詢請求的DNS客戶,下一步應當找哪一個權威域名伺服器。

如mail.baidu.com中的baidu.com就是二級域名,二級域名沒有固定的單詞,可以由各種字母和數組組成,mail是二級域名baidu.com的MX解析,以此類推,可能還有三級域名伺服器,四級域名伺服器。

本地域名伺服器

本地域名伺服器并不屬于下圖中的樹狀結構的DNS域名伺服器,但是它對域名系統非常重要。當一個主機發出DNS查詢請求時,這個查詢請求封包就發送給本地域名伺服器。每一個網際網路服務提供者ISP都可以擁有一個本地域名伺服器。

DNS域名解析過程

下圖是域名解析的一個示例圖,它涵蓋了基本解析步驟和原理。

科普-DNS原理及解析過程

下面解析步驟進行講解,後面将采用指令行的形式來跟蹤解析過程。當使用者在位址欄鍵入并敲下Enter鍵之後,域名解析就開始了。

第一步:檢查浏覽器緩存中是否緩存過該域名對應的IP位址

使用者通過浏覽器浏覽過某網站之後,浏覽器就會自動緩存該網站域名對應的位址,當使用者再次通路的時候,浏覽器就會從緩存中查找該域名對應的IP位址,因為緩存不僅是有大小限制,而且還有時間限制(域名被緩存的時間通過屬性來設定),是以存在域名對應的找不到的情況。當浏覽器從緩存中找到了該網站域名對應的位址,那麼整個解析過程結束,如果沒有找到,将進行下一步驟。對于的緩存時間問題,不宜設定太長的緩存時間,時間太長,如果域名對應的發生變化,那麼使用者将在一段時間内無法正常通路到網站,如果太短,那麼又造成頻繁解析域名。

第二步:如果在浏覽器緩存中沒有找到IP,那麼将繼續查找本機系統是否緩存過IP

如果第一個步驟沒有完成對域名的解析過程,那麼浏覽器會去系統緩存中查找系統是否緩存過這個域名對應的位址,也可以了解為系統自己也具備域名解析的基本能力。在系統中,可以通過設定檔案來将域名手動綁定到某上,檔案位置在。對于普通使用者,并不推薦自己手動綁定域名和,對于開發者來說,通過綁定域名和,可以輕松切換環境,可以從測試環境切換到開發環境,友善開發和測試。在系統中,黑客常常修改他的電腦的檔案,将使用者常常通路的域名綁定到他指定的上,進而實作了本地解析,導緻這些域名被劫持。在或者系統中,檔案在,修改該檔案也可以實作同樣的目的。

前兩步都是在本機上完成的,是以沒有在上面示例圖上展示出來,從第三步開始,才正在地向遠端DNS伺服器發起解析域名的請求。

第三步:向本地域名解析服務系統發起域名解析的請求

如果在本機上無法完成域名的解析,那麼系統隻能請求本地域名解析服務系統進行解析,本地域名系統一般都是本地區的域名伺服器,比如你連接配接的校園網,那麼域名解析系統就在你的校園機房裡,如果你連接配接的是電信、移動或者聯通的網絡,那麼本地域名解析伺服器就在本地區,由各自的營運商來提供服務。對于本地伺服器位址,系統使用指令就可以檢視,在和系統下,直接使用指令來檢視服務位址。一般都緩存了大部分的域名解析的結果,當然緩存時間也受域名失效時間控制,大部分的解析工作到這裡就差不多已經結束了,負責了大部分的解析工作。

第四步:向根域名解析伺服器發起域名解析請求

本地域名解析器還沒有完成解析的話,那麼本地域名解析伺服器将向根域名伺服器發起解析請求。

第五步:根域名伺服器傳回gTLD域名解析伺服器位址

本地域名解析向根域名伺服器發起解析請求,根域名伺服器傳回的是所查域的通用頂級域()位址,常見的通用頂級域有、、、等。

第六步:向gTLD伺服器發起解析請求

本地域名解析伺服器向gTLD伺服器發起請求。

第七步:gTLD伺服器接收請求并傳回Name Server伺服器

伺服器接收本地域名伺服器發起的請求,并根據需要解析的域名,找到該域名對應的域名伺服器,通常情況下,這個伺服器就是你注冊的域名伺服器,那麼你注冊的域名的服務商的伺服器将承擔起域名解析的任務。

第八步:Name Server伺服器傳回IP位址給本地伺服器

伺服器查找域名對應的位址,将位址連同值傳回給本地域名伺服器。

第九步:本地域名伺服器緩存解析結果

本地域名伺服器緩存解析後的結果,緩存時間由時間來控制。

第十步:傳回解析結果給使用者

解析結果将直接傳回給使用者,使用者系統将緩存該位址,緩存時間由來控制,至此,解析過程結束。

這裡對解析的步驟進行了一個簡單的介紹分析,後面将通過指令行的形式來解析一個域名的具體解析過程。

AliDNS高可用架構

阿裡巴巴集團于2009年收購萬網,2013年1月6日阿裡巴巴集團宣布,旗下的阿裡雲與萬網将合并為新的阿裡雲公司,合并後“萬網”品牌将繼續保留,成為阿裡雲旗下域名服務品牌。

作為國内最大的域名注冊服務商,早期萬網的域名解析基于開源bind搭建,由于bind在性能方面存在很大問題,安全防護能力差,以及不支援智能解析等原因,阿裡雲接管萬網後走了自研DNS解析道路,取名為AliDNS。

AliDNS的想法很快成為現實,通過對DNS 軟體進行更新改造、全面提升其可靠性和承載力,并依靠阿裡巴巴集團強大的技術資源和實力,在全國部署多個節點提供高效穩定的解析排程,實作多機房雲計算叢集自動當機遷移,資料備份和復原,系統性能監測實時報警,并使用自主研發的超百G流量清洗中心,可對攻擊行為迅速做出判斷跟蹤,并按照預案進行處理,確定域名解析服務穩定可靠!

AliDNS作為雲計算服務的入口,将逐漸與阿裡雲已有雲産品進行融合打通,成為雲産品大家庭中不可或缺的一份子,ECS、SLB、RDS、CDN等為使用者提供高效可靠的計算、存儲、網站加速和負載均衡服務,AliDNS提供強大穩定的解析排程入口,確定使用者能有順暢的通路體驗。AliDNS的上線,使阿裡雲的産品服務成為一個整體,為使用者提供一站式的服務體驗。

實作DNS高可用,主要靠降低出故障、故障後快速恢複。下圖是dns服務架構簡圖,分為管控層和解析層,後面分别描述這兩層如何實作高可用。

科普-DNS原理及解析過程

管控層

管控層最主要的兩個功能:DNS資料的持久化,DNS資料下發到adns(dnsserver)。

科普-DNS原理及解析過程

1 資料持久化

管控層接收使用者配置的域名資料後,持久化存儲在資料庫。利用了資料庫團隊的X-Cluster産品,實作資料的高可用,消除了運維誤操作等原因導緻的資料丢失:

資料庫采用三地五副本,同城強同步方案部署;

資料庫各個節點間采用Paxos 協定選主,在任意階段出現問題後,資料内部自選主切換;

應用機房部署與資料庫解耦,可以任意機房部署;

在資料庫Leader 故障場景下,資料庫會自動發生切換,應用連入任意節點擷取目前Leader 位置後恢複應用業務。

2 資料下發

管控與adns之間,主要通過穩定的内部網絡來下發資料,資料傳輸出錯的機率低;

管控向adns發送資料時,有資料補償機制,對與下發失敗,做多次重試,如果重試都無法成功,報警轉人工處理。

解析層

解析層由adns叢集組成,部署在全球的上百個idc機房,通過anycast釋出大量的服務ip。使用者向這些ip發送dns請求,擷取解析結果。

1 消除單點

解析層主要靠消除單點實作failover,來減少故障。

  • 主機到網絡:每台adns通過雙網口,雙上聯到兩個不同的交換機,避免網口單點、交換機的單點故障;
  • 叢集内:adns分成多個不同叢集,每個叢集内多台adns,這些機器向交換機釋出相同的IP,通過ECMP分發流量。同叢集内DNS都是熱備的關系,當某台adns出問題,交換機把流量分發到其它伺服器。
  • 叢集間:多個不同的叢集,釋出相同的ip,這些叢集之間,通過網絡的anycast技術互相熱備,某個叢集不可用,流量被轉到其它可用的叢集。
  • NS IP:由于特殊原因(比如營運商黑洞等),個别IP全網都無法通路。我們對每個NS配置多個IP,LocalDNS會基于SRTT算法,選擇出最短的rt的IP,将請求轉發過去,進而避開有問題的IP。

2 系統容量

監控系統實時監控各個伺服器、叢集的qps容量;

adns叢集,部署上具備水準擴容能力,容量能達到機房的帶寬。

3 如何保證解析正确

部署資料對賬系統,對adns之間做資料對比,adns與管控的DB做資料對比;

部署撥測系統,對zone的soa做撥測,對特定域名的rr記錄做撥測;

通過上面的兩類手段,及時發現資料異常并作出響應,避免異常或者縮短異常的處理時間。

一般通過摘除有問題的伺服器的路由,幾秒鐘即可生效。

4 安全防護

作為面向公網的服務,網絡攻擊無法避免,會影響系統可用性。我們采用了下面兩類安防手段,提高dns的可用性。

1) 網絡攻擊防護

常見的dns攻擊,是4層的ddos攻擊。對于超大流量的網絡攻擊,利用機房部署的aliguard,做網絡防護;

為了減少ddos防護系統對dns的影響,我們設定了很高的防護門檻值,對應門檻值之下的ddos攻擊,通過我們高性能的dnsserver(adns)來承載攻擊。

2) 應用安全

為了應對DNS投毒、欺騙等場景,我們的dnsserver,支援dnssec;

為了應對DNS劫持,我們支援有連接配接的協定,比如tcp、dns、httpdns、tls等,使用者可以根據自己的需求,選擇合适的安全方案。

AliDNS功能與性能

快速

解析實時生效,多線路智能配置設定,使用者設定解析記錄後,AliDNS隻需5s就會将您的解析記錄同步到全國的DNS權威伺服器上,伺服器收到解析請求後,能夠在30ms内迅速給出解析結果,確定域名解析實時生效和高速通路;智能多線路解析通過精準的網絡位址IP庫,智能定位通路使用者來源,無論是聯通、電信、移動、教育網還是國外使用者,都能迅速配置設定最佳的通路解析線路,讓您的網站通路者獲得最為流暢的通路體驗!

穩定

100%可用性保證,讓您安心每一刻, AliDNS在全球19個DNS叢集節點和DNS智能加速服務,可為使用者提供就近通路和最低延遲的解析能力,多機房雲計算叢集自動當機遷移,資料備份和復原,系統性能監測實時報警,確定穩定的域名解析服務,讓您的每一次通路使命必達!

安全

超100G超強防護能力,讓您放心每一天,AliDNS憑借阿裡巴巴多年的攻防技術積累,依靠自主研發的流量清洗裝置,可抵禦超過百G的洪水流量型攻擊,全方位的安全監控體系,可對攻擊行為迅速做出判斷跟蹤,并按照預案進行處理,確定域名解析服務穩定可靠!每秒最高可承受過億次DNS查詢,保障網站或應用服務免受DNS攻擊威脅。

智能

可根據使用者地理位置,智能傳回IP位址。線路已覆寫中國6大營運商及省份,海外6大洲及88個國家/地區

AliDNS除了快速、穩定、安全外,解析設定也非常簡單便捷,解析管理工具使您登入AliDNS就可以友善的自行添加、修改、删除各域名記錄,包括域名A、CNAME、MX、AAAA、SRV、TXT、NS等記錄。此外還提供穩定可靠的URL轉發服務、按需自由定義TTL、支援中文域名解析、支援泛域名解析、支援子域名解