概述
當前網路通訊大部分採用的是tcp/IP協議,而TCP/IP協議的基礎是IP地址,所以計算機在網路中進行通訊時只能識別由純數字構成的IP地址。但在實際的工作生活中,我們只需在瀏覽器地址欄中輸入一串簡單易記的域名,就能訪問到所對應的網站,在這個過程中發揮重要作用的就是dns。接下來我們就針對DNS的原理和解析過程做下簡單介紹。
什麼是DNS
DNS是Domain Name System的縮寫,翻譯成中文就是「域名系統」。DNS是互聯網中的一項核心服務,是用於實現域名和IP地址相互映射的一個分散式資料庫,它將簡單明了的域名翻譯成可由計算機識別的IP地址,使用戶可以更快速便捷地訪問互聯。
互聯網連通的是全球資源,單一的域名伺服器不足以支撐全部的地址轉換操作,因此全球有多套域名伺服器相互配合使用。早在1983年互聯網就開始採用層次樹狀結構的命名方法,並使用分散式的域名系統進行解析操作。這樣既提升了域名解析的效率,同時也保障了域名解析的穩定性,如果系統中單個域名伺服器出現故障,不會對整個DNS系統的正常運行造成太大影響。
域名結構
互聯網採用了層次樹狀結構的命名方法。任何一個連接在互聯網上的主機或路由器,都有一個唯一的層次結構的名字,即域名。
域名的結構由標號序列組成,各標號之間用點隔開。類似於這樣:「….三級域名.二級域名.頂級域名」 。各級域名由其上一級的域名管理機構管理,而最高級的頂級域名則由ICANN進行管理。
域名由兩個或兩個以上的片語成,常見域名為二級域名+頂級域名組成,所以一般我們會將域名分為頂級域名、二級域名,除此之外,還有國家代碼頂級域名。
域名伺服器
互聯網上的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根伺服器的新格局。
頂級域名伺服器
頂級域名為域名最後一個.號右側部分的單詞,如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域名解析過程
下圖是域名解析的一個示例圖,它涵蓋了基本解析步驟和原理。
下面解析步驟進行講解,後面將採用命令行的形式來跟蹤解析過程。當用戶在地址欄鍵入並敲下回車鍵之後,域名解析就開始了。
第一步:檢查瀏覽器緩存中是否緩存過該域名對應的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數據下發到adns(dnsserver)。
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、支持中文域名解析、支持泛域名解析、支持子域名解