DNS服務(wù)是一個(gè)非常簡單卻有十分重要的服務(wù)。因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。比如我們使用百度搜索時(shí),只需要在地址欄打入baidu.com就可以直接訪問,而不必記憶百度的原始IP地址。
網(wǎng)絡(luò)達(dá)人必備的DNS技巧(圖:昵圖網(wǎng))
不過不同網(wǎng)站根據(jù)DNS不同,而導(dǎo)致訪問速度也不一樣。有很多時(shí)候,你發(fā)現(xiàn)自己網(wǎng)絡(luò)速度突然變慢,但是電腦并沒有被木馬入侵或者有過多的程序占用,這個(gè)是否很有可能就是DNS的問題。
namebench執(zhí)行測試可以為你的計(jì)算機(jī)找到最快的DNS服務(wù)器地址。通過瀏覽器的歷史記錄,namebench計(jì)算出一個(gè)公平和徹底的標(biāo)準(zhǔn),tcpdump的輸出,或標(biāo)準(zhǔn)化的數(shù)據(jù)集,以提供個(gè)性化的建議。
DNS技巧(圖:computerworld.com)
測試完成后,namebench將提供一份報(bào)告出來。 除了直觀地給你一個(gè)顯示結(jié)果的圖表,它還會(huì)告訴你那個(gè)DNS服務(wù)器是最快的,讓你知道主DNS服務(wù)器在所有DNS服務(wù)器中速度占比情況。除此之外,namebench還列出推薦的DNS服務(wù)器的地址,作為最快最好的DNS服務(wù)器備選選項(xiàng)。
一旦你知道哪些服務(wù)器是最快的,你能通過配置靜態(tài)地址的TCP/IP設(shè)置來改變個(gè)人電腦的DNS地址,或者將這些更改應(yīng)用到整個(gè)網(wǎng)絡(luò)配置上。經(jīng)常網(wǎng)絡(luò)沖浪的朋友可能遭遇過DNS劫持或者一些其他的DNS問題,那么那時(shí)該如何應(yīng)對呢?
們很難記住所有人的電話號(hào)碼,大部分時(shí)候我們都需要通訊錄幫助我們把一個(gè)人的姓名和號(hào)碼聯(lián)系起來。而 DNS 服務(wù)器干的事情和通訊錄差不多,幫助我們把網(wǎng)址轉(zhuǎn)換成 IP,讓程序知道他們需要鏈接的服務(wù)器具體在哪里(或是服務(wù)器不存在)。
最為簡單的 DNS 請求過程
隨著互聯(lián)網(wǎng)技術(shù)的日新月異,大家上網(wǎng)的時(shí)候遇到下面的情況的概率卻一點(diǎn)都沒變少:
這些問題很多時(shí)候都是和你家的 DNS 設(shè)置有關(guān)系。
為什么會(huì)發(fā)生這些問題
只要你接入了互聯(lián)網(wǎng),互聯(lián)網(wǎng)服務(wù)提供商(也被稱為 ISP,以下簡稱: 運(yùn)營商)都會(huì)下發(fā)兩個(gè) DNS 給你,這個(gè)就是運(yùn)營商 DNS。
和電話對應(yīng)起來,DNS 服務(wù)器則將網(wǎng)址和 IP 對應(yīng)起來。隨著互聯(lián)網(wǎng)技術(shù)的日新月異,DNS 服務(wù)器也經(jīng)過了一段漫長的發(fā)展,衍生出了更多更棒的功能,讓用戶能自由地在網(wǎng)上沖浪。
每個(gè)運(yùn)營商在幾乎在每個(gè)城市都會(huì)部署自己的獨(dú)立的 DNS 服務(wù)器,這也是為什么同一個(gè)運(yùn)營商在不同城市分發(fā)下來的 DNS 服務(wù)器的地址也都不一樣。加上運(yùn)營商是最了解 內(nèi)容分發(fā)網(wǎng)絡(luò)(也就是我們經(jīng)常說的 CDN,CDN 主要起到兩大作用,第一個(gè)是能讓用戶用最快的速度訪問到用戶想要訪問的內(nèi)容,第二點(diǎn)是能減少主服務(wù)器的所需要的帶寬和維護(hù)成本)的位置和自家網(wǎng)絡(luò)的情況,所以運(yùn)營商 DNS 返回的結(jié)果應(yīng)該是:最準(zhǔn)確的、最合適的,響應(yīng)時(shí)間短的以及 CDN 解析結(jié)果最準(zhǔn)確的,簡單來說就是:你能快速訪問到位于你附近的有你想要訪問到內(nèi)容的服務(wù)器。
中國電信的路由表-圖源 http://bgp.he.net
在每個(gè)城市都要維護(hù)一個(gè) DNS 服務(wù)器開銷自然不會(huì)小到那里去,所以運(yùn)營商經(jīng)常在 DNS 結(jié)果上進(jìn)行改動(dòng),發(fā)生文章開頭所說的問題。運(yùn)營商那么做主要是為了減少成本。當(dāng)然還有種情況是附近的 DNS 服務(wù)器沒有及時(shí)擴(kuò)容或者維護(hù)不善,導(dǎo)致了上述的情況。
利用公共 DNS 服務(wù)來解決這個(gè)問題
解決上述這個(gè)問題的最快的辦法就是使用公共 DNS 服務(wù)。
公共 DNS 服務(wù)器一般是由大公司搭建的,或者非盈利組織搭建的。公共 DNS 的本質(zhì)上就是把你的查詢請求轉(zhuǎn)發(fā)給上游更權(quán)威的 DNS,所以一般這些公司或者組織提供的公共 DNS 服務(wù)器提供都是更安全、更準(zhǔn)確的結(jié)果。
當(dāng)然由于資金限制,公共 DNS 服務(wù)器不會(huì)每個(gè)城市都有一個(gè)。自然就會(huì)遇到使用公共 DNS 服務(wù)解析到的 IP 不是最快的情況。下圖展示了相同網(wǎng)址使用運(yùn)營商 DNS 解析到的結(jié)果和使用阿里云公共 DNS 解析到的兩種延遲完全不同的結(jié)果( time-ios.apple.com 是一個(gè)通過 CDN 優(yōu)化了網(wǎng)站):
DNS 返回結(jié)果對比
小知識(shí):怎么快速知道我到某個(gè)服務(wù)器之間的延遲?
使用 ping 指令
ping 是一種計(jì)算機(jī)網(wǎng)絡(luò)工具,用來測試數(shù)據(jù)包能否透過IP協(xié)議到達(dá)特定主機(jī)。按時(shí)間和成功響應(yīng)的次數(shù)估算丟失數(shù)據(jù)包率(丟包率)和數(shù)據(jù)包往返時(shí)間(網(wǎng)絡(luò)時(shí)延,Round-trip delay time)
ping 會(huì)直接附帶在任何的操作系統(tǒng)的內(nèi)置終端(或者命令提示符)中,使用時(shí),用戶只需要使用 ping +網(wǎng)址/IP 地址(如 ping 17.253.84.251)并敲擊回車即可得到結(jié)果。
因此,我們在挑選公共 DNS 的時(shí)候,要注意以下方面:
受限于篇幅限制,下圖只介紹符合 RFC 規(guī)范的(排除 IBM Quad9 DNS),擁有多個(gè)響應(yīng)地點(diǎn)的(排除 360 公共 DNS)大型的,準(zhǔn)確性也相對較好的(不會(huì)刻意投毒的),更重要的是 CDN 友好型的 公共 DNS 服務(wù)。延遲則由各個(gè)地方各個(gè)運(yùn)營商決定,請自行測試。
推薦的公共 DNS 服務(wù)器
利用安全的公共 DNS 服務(wù)解決這個(gè)問題
不過在一部分 DNS 問題嚴(yán)重的地方,將運(yùn)營商 DNS 更換為公共 DNS 可能還是不能解決本文開頭的問題。
這是因?yàn)?strong>我們的 DNS 流量沒有經(jīng)過加密,就和曾經(jīng)的 http 協(xié)議一樣,運(yùn)營商或是第三方還是能夠清楚的知道:我們發(fā)起了一個(gè) DNS 請求,我們想要知道 xxx 網(wǎng)站的地址。下圖展示了一個(gè) DNS 請求發(fā)起的過程,可以很清楚的看到,我請求了什么網(wǎng)址(用十六進(jìn)制碼顯示,右側(cè)是轉(zhuǎn)義以后的結(jié)果)
一條普通的 DNS 查詢
如果我們給我們的 DNS 流量加個(gè)密,就和 https 流量一樣,那么運(yùn)營商不就不知道我們我們的 DNS 請求了嗎。這就是 DNS over HTTPS (下文簡稱 DoH )和 DNS over TLS (下文簡稱 DoT )技術(shù)要做的事。他們分別利用 HTTPS (超文本傳輸安全協(xié)議)和 TLS(傳輸層安全協(xié)議)這兩種行業(yè)通用的安全協(xié)議,將我們的 DNS 請求發(fā)往 DNS 服務(wù)器。運(yùn)營商或是第三方在整個(gè)傳輸過程中,只能知道發(fā)起者和目的地,除此以外別的什么都知道,甚至都不知道你發(fā)起了 DNS 請求。同時(shí) HTTPS 和 TLS 都會(huì)使用網(wǎng)絡(luò)數(shù)字證書確保對面的身份,這樣傳輸?shù)?strong>過程中無論是任何第三方都不能修改 DNS 的請求內(nèi)容和最后的結(jié)果。保證你請求的結(jié)果就是你最后想要的。
DoH 和 DoT 不僅能為經(jīng)常被運(yùn)營商和第三方劫持 DNS 的人群提供安全可靠的 DNS 解析結(jié)果,還能給極為看重隱私人群補(bǔ)上上網(wǎng)隱私保護(hù)流程中的最后一塊短板。
下圖是目前支持 DoH 或者 DoT 的 DNS 服務(wù)器列表
推薦的安全 DNS 服務(wù)器
我應(yīng)該怎么使用 DoH 和 DoT 技術(shù)
對于 iOS 設(shè)備
大家可以前往 App Store 中下載 Cloudflare App(也被稱為 1.1.1.1),下載以后,打開應(yīng)用,直接打開開關(guān)即可享用到來自 Cloudflare 提供的 DoH 服務(wù)。
通過 Cloudflare 使用安全的公共 DNS 服務(wù)器
Adguard iOS 版的用戶可以手動(dòng)選擇 DNS 服務(wù)器(需要高級(jí)訂閱),前往 Adguard iOS 版本的設(shè)置,選擇 DNS,再選擇合適的 DNS 服務(wù)器即可,當(dāng)然你也可以選擇手動(dòng)輸入自定義的 DNS 服務(wù)器(DoH 和 DoT 均支持)使用這項(xiàng)功能。
通過 Adguard iOS 使用安全的公共 DNS 服務(wù)器
對于 Android
Android 9 以及以上的版本,你可以前往無線和網(wǎng)絡(luò),選擇指定加密 DNS 服務(wù)(部分設(shè)備上可能被命名為:私人 DNS),輸入 DNS over TLS 的地址即可。
Android 9 以及以上的版本直接能進(jìn)行設(shè)置
對于 Android 9 以下的版本,或者沒有指定加密 DNS 服務(wù),你可以前往各大應(yīng)用市場下載 Intra 應(yīng)用,進(jìn)行配置。前往 Intra 的設(shè)置,選擇 DNS over HTTPS 服務(wù)器,輸入或者選擇 DNS over HTTPS 服務(wù)器即可。
通過 Intra 使用安全的公共 DNS 服務(wù)器
當(dāng)然,如果你是 Adguard Android 版的用戶,你可以前往 Adguard Android 版本的設(shè)置,選擇 DNS,再選擇合適的 DNS 服務(wù)器即可,和 iOS 版本一樣你也可以選擇手動(dòng)輸入自定義的 DNS 服務(wù)器,使用更適合自己的 DNS 服務(wù)器。
通過 Adguard Android 使用安全的公共 DNS 服務(wù)器
對于 macOS & Windows
對于完全不熟悉終端命令的用戶來說,現(xiàn)在想在 macOS 或者 Windows 上得到安全可靠的解析,那么 Firefox 瀏覽器是目前唯一的選擇,前往 Firefox 的設(shè)置,常規(guī)-網(wǎng)絡(luò)設(shè)置-設(shè)置,選擇啟用基于 HTTPS 的 DNS,這樣就打開了 Firefox 上的 DoH 服務(wù)了。
通過 Firefox 使用安全的公共 DNS 服務(wù)器
當(dāng)然,用戶基數(shù)更大的 Chrome 在未來也會(huì)在實(shí)驗(yàn)性設(shè)置里提供對應(yīng)的選項(xiàng)(本文寫作時(shí) Chrome 正式版本為 77,從 78 版本開始將在實(shí)驗(yàn)性設(shè)置里提供對應(yīng)的選項(xiàng),78 正式版本將在 10 月 22 日推送)。打開你的 Chrome,在地址欄中輸入 chrome://flags/#dns-over-https,回車,在右側(cè)下拉箭頭中選擇 Enable。這樣就打開了 Chrome 78 上的 DoH 服務(wù)了。
在 Chrome 里打開 DoH
如果你自己有的代碼基礎(chǔ),也可以選擇 DNScrypt 作為本地的 DNS 客戶端,提供安全可靠的 DNS 解析。當(dāng)然你對代碼有更深入的了解,想要給全家或是全公司提供安全的 DNS,那么紅魚的這份文檔就特別適合你。當(dāng)然,希望在未來這兩大操作系統(tǒng)能加入對應(yīng)的設(shè)置,給我們提供額外的安全的選擇。
以上就是這篇文章的所有內(nèi)容了,希望能夠讓你能夠了解到目前的 DNS 的發(fā)展情況,并幫助到因?yàn)?DNS 被劫持或是默認(rèn) DNS 不那么好用,備受苦惱的你。
名系統(tǒng)是最重要的互聯(lián)網(wǎng)服務(wù)之一,沒有它,我們將無法訪問在線內(nèi)容,甚至無法發(fā)送電子郵件。每當(dāng)我們嘗試連接到其他網(wǎng)站或在線服務(wù)時(shí),根 DNS 服務(wù)器都會(huì)幫助我們的計(jì)算機(jī)找到并到達(dá)我們想要的地址。
DNS 根服務(wù)器是所有 DNS 的組成部分,因此也是 Internet 的組成部分,但關(guān)于它的信息并不多。今天我們將學(xué)習(xí)什么是根服務(wù)器?它們的作用是什么?以及實(shí)際上有多少根服務(wù)器?
根服務(wù)器或 DNS 根服務(wù)器是負(fù)責(zé) DNS 和整個(gè) Internet 功能的名稱服務(wù)器,它們是確定任何域名名稱的第一步,DNS可以將域名轉(zhuǎn)換為 IP 地址。
根區(qū)是頂級(jí)域的全局列表,它包含通用頂級(jí)域(.com、.net、.org)、國家代碼頂級(jí)域(.no、.se、.uk)和國際化的頂級(jí)域名,即以各國本地字符編寫的 ccTLD,根區(qū)來自互聯(lián)網(wǎng)號(hào)碼分配機(jī)構(gòu) (IANA),它是互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu) (ICANN) 的一部分。
域名到 IP 地址的映射是使用 DNS 區(qū)域以分層順序完成的,根服務(wù)器為根區(qū)域提供服務(wù),根區(qū)域位于層次結(jié)構(gòu)的頂部并發(fā)布根區(qū)域文件,根區(qū)域文件又包含所有 TLD 授權(quán)服務(wù)器的資源記錄。因此,它們可以通過兩種方式工作:
盡管在后一種情況下它們不直接參與名稱解析,但根服務(wù)器位于整個(gè) Internet 基礎(chǔ)結(jié)構(gòu)的根目錄中,沒有它們,我們今天所了解和使用的大部分網(wǎng)絡(luò)都將無法使用。
根服務(wù)器的工作方式取決于名稱解析過程:
這個(gè)大家都知道,一共有13臺(tái)。
這是由于本地 DNS 基礎(chǔ)設(shè)施的限制,它使用的是 32 字節(jié) IPv4,IP 地址必須對應(yīng)一個(gè)數(shù)據(jù)包,當(dāng)時(shí)數(shù)據(jù)包限制為 512 字節(jié),所以每個(gè)IPv4地址是32位,其中13位是416字節(jié),剩下的96字節(jié)是協(xié)議信息。
起初,13 個(gè) IP 地址中的每一個(gè)都有一個(gè)服務(wù)器,今天我們?yōu)槊總€(gè) IP 地址賦予一個(gè)服務(wù)器集群,使用廣播路由創(chuàng)建了一個(gè)由全球數(shù)百臺(tái)服務(wù)器組成的網(wǎng)絡(luò)。
這有助于平衡去中心化并確保可靠性,即使其中一個(gè)根服務(wù)器由于 DDoS 攻擊或其他類型的 DNS 攻擊也可以保證網(wǎng)絡(luò)的可用性。
然而,由于 IPv6 的小數(shù)據(jù)包大小限制,因此幾乎可以肯定,未來會(huì)出現(xiàn)更多的根 DNS 服務(wù)器。
這個(gè)問題,相信不用回答了,根本不可能,不是政治問題,而是技術(shù)問題,本身已經(jīng)超出協(xié)議范圍能力了,已經(jīng)有根DNS的組織是不可能讓給中國的。
在中國,一共有26個(gè)根域名服務(wù)器節(jié)點(diǎn):
首選:114.114.114.114
備選:114.114.115.115
首選:223.5.5.5
備用:223.6.6.6
IPv4 地址:180.76.76.76
IPv6 地址:2400:da00::6666
首選:119.29.29.29
備用:119.28.28.28
備用:182.254.118.118
備用:182.254.116.116
首選:1.2.4.8
備用:210.2.4.8
2001:da8:200:ffff::28
2001:da8:8000:1:202:120:2:101
2001:da8:202:10::36
或
2001:da8:202:10::37
等等,還有很多,等有機(jī)會(huì)給大家整理一個(gè)全的。
我們都知道,網(wǎng)絡(luò)掌握在其他國家,安全性會(huì)受到極大的安全風(fēng)險(xiǎn),我們錯(cuò)過了13個(gè)根服務(wù)器,難道永遠(yuǎn)都要“寄人籬下”嗎?
當(dāng)然不是!
雖然我們不能在ipv4領(lǐng)域擁有根DNS服務(wù)器,但是我們在ipv6的根DNS服務(wù)器中已經(jīng)占有一席之地了。隨著國家對ipv6的支持,中國在ipv6網(wǎng)絡(luò)建設(shè)上已經(jīng)有了驚人的速度!
隨之而來的ipv6根DNS服務(wù)器中,中國擁有4臺(tái)服務(wù)器,其中,一臺(tái)為主根,其他三臺(tái)為輔根!!!
DNS 負(fù)責(zé)幾乎所有與 Internet 相關(guān)的事情,根 DNS 服務(wù)器是互聯(lián)網(wǎng)的支柱。
希望通過本文,大家能夠?qū)τ?3個(gè)DNS根服務(wù)器有所了解。
在安全方面,DNS 仍然是企業(yè)基礎(chǔ)設(shè)施中最容易被忽視的部分之一,這就是頻繁執(zhí)行 DNS 審計(jì)如此重要的原因。
重視技術(shù)的本質(zhì),才能立足于技術(shù)公司之本!!!