DNS (Domain Name System) 域名系統(tǒng)可以看做是一個(gè)庫(kù)篡帕,完成的是從 語(yǔ)義上的域名(例如:www.baidu.com)到 機(jī)器可理解的IP(例如:14.215.177.38)的映射算墨。當(dāng)我們?yōu)g覽網(wǎng)頁(yè)時(shí)茄厘,我們通過(guò)輸入易讀的域名或網(wǎng)址便能訪問(wèn)到目標(biāo)主機(jī)提供的服務(wù)樟澜,問(wèn)題是對(duì)于人而言我們更能方便的記住域名而計(jì)算機(jī)底層卻在只有知道目標(biāo)主機(jī)的IP地址的情況下才能與之通信湿故。在 輸入網(wǎng)址 到 獲取資源中間有個(gè)過(guò)程及其重要惊完,那就是DNS域名解析過(guò)程堕澄。關(guān)于DNS解析的基本原理參見(jiàn)文末參考資料邀跃。
DNS域名解析之所以重要是速度霉咨、穩(wěn)定性和安全性三方面的考慮。從用戶(hù)的角度來(lái)講安全性是比較重要的坞嘀,但這個(gè)因素我們無(wú)法考量躯护;穩(wěn)定性決定用戶(hù)能夠獲取互聯(lián)網(wǎng)服務(wù)的可靠性;速度是用戶(hù)上網(wǎng)時(shí)能直接感受到的丽涩。有時(shí)候我們會(huì)覺(jué)得網(wǎng)頁(yè)刷不動(dòng)棺滞,導(dǎo)致這個(gè)問(wèn)題的原因是多方面的:計(jì)算機(jī)資源枯竭、DNS解析延時(shí)長(zhǎng)矢渊、網(wǎng)頁(yè)服務(wù)器響應(yīng)時(shí)間長(zhǎng)等继准,撇開(kāi)其他因素不看,單從DNS角度我們看看如何解決網(wǎng)絡(luò)延時(shí)問(wèn)題矮男。
本文討論的主要內(nèi)容:1)主流可用DNS服務(wù)器資源移必;2)不同DNS服務(wù)器解析延時(shí)比較和查看系統(tǒng)當(dāng)前使用的DNS解析服務(wù)器以及解析延時(shí);3)設(shè)置(指定)DNS解析服務(wù)器毡鉴;4)關(guān)于使用DNScrypt時(shí)的DNS設(shè)置注意事項(xiàng)
以下內(nèi)容均針對(duì)Linux平臺(tái)崔泵,對(duì)于其他平臺(tái)查看或設(shè)置方法或許不同,本文內(nèi)容也能有一定的啟發(fā)意義猪瞬。
主流DNS服務(wù)器資源
DNS解析服務(wù)器提供著從域名或網(wǎng)址解析目標(biāo)主機(jī)IP的服務(wù)憎瘸。DNS解析服務(wù)器收錄的域名信息是否完備、域名解析是否受保護(hù)陈瘦、解析到的是不是就近的主機(jī)等因素都將影響服務(wù)的速度幌甘、安全性和穩(wěn)定性。選擇一個(gè)垃圾的DNS服務(wù)器可能導(dǎo)致網(wǎng)頁(yè)加載緩慢痊项、DNS被劫持從而將用戶(hù)導(dǎo)引到廣告頁(yè)面锅风、用戶(hù)上網(wǎng)信息泄露等不愉快的沖浪體驗(yàn)。下面將收錄一些比較好用的鞍泉、信譽(yù)相對(duì)較高的DNS解析服務(wù)器皱埠。
國(guó)內(nèi)的:
114.114.114.114
114.114.115.115
223.5.5.5
223.6.6.6
# One DNS
112.124.47.27
114.215.126.16
119.29.29.29
180.76.76.76
# DNS派
123.125.81.6
101.226.4.6
國(guó)外的:
8.8.8.8
8.8.4.4
64.6.64.6
64.6.65.6
209.244.0.3
209.244.0.4
4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
8.26.56.26
8.20.247.20
# OpenDNS
208.67.222.222
208.67.220.220
解析延時(shí)和傳輸路徑是有很大關(guān)系的,在國(guó)內(nèi)設(shè)置國(guó)外的DNS時(shí)由于每次解析都要翻山越嶺地發(fā)送請(qǐng)求咖驮,解析結(jié)果又要漂洋過(guò)海才能傳回來(lái)所以解析時(shí)間一般比設(shè)置國(guó)內(nèi)DNS要慢很多漱逸。此外國(guó)外DNS對(duì)國(guó)內(nèi)域名以及服務(wù)集群的收錄可能不完整,會(huì)影響對(duì)國(guó)內(nèi)網(wǎng)站的訪問(wèn)游沿,相應(yīng)的對(duì)國(guó)外網(wǎng)站的解析要全面穩(wěn)定一些饰抒。這種地區(qū)差異導(dǎo)致的服務(wù)差異在所難免。
DNS解析服務(wù)器延時(shí)比較
國(guó)內(nèi)外DNS解析服務(wù)延時(shí)差距一般比較大诀黍,國(guó)內(nèi)DNS解析服務(wù)延時(shí)有差異袋坑,國(guó)外DNS解析服務(wù)有差異但不明顯。我們可是使用dig命令來(lái)測(cè)試DNS解析服務(wù)的響應(yīng)時(shí)間。
dig是一款dns查詢(xún)小程序枣宫,Linux系統(tǒng)自帶婆誓,基本使用方式是
dig @dns-server domain-name
意為使用制定DNS服務(wù)器解析特定域名或網(wǎng)址。下面我們通過(guò)使用114DNS也颤、One DNS 和 Google DNS洋幻、openDNS來(lái)比較國(guó)內(nèi)DNS服務(wù)器查詢(xún)區(qū)別、國(guó)外DNS服務(wù)器查詢(xún)區(qū)別以及國(guó)內(nèi)外DNS服務(wù)器查詢(xún)區(qū)別翅娶。
我們選取 www.reibang.com 和 www.facebook.com 作為查詢(xún)域名文留。
1)國(guó)內(nèi)114DNS
2)國(guó)內(nèi)One DNS
3)國(guó)外Google DNS
4)國(guó)外openDNS
觀察發(fā)現(xiàn)國(guó)內(nèi)DNS服務(wù)器對(duì)國(guó)內(nèi)域名解析基本一致,解析延時(shí)很短竭沫,對(duì)國(guó)外域名解析結(jié)果存在差異而這種差異即便是國(guó)外DNS服務(wù)器對(duì)國(guó)外DNS解析也同樣存在燥翅。國(guó)外DNS解析國(guó)外網(wǎng)址響應(yīng)速度極快,相比而言解析國(guó)內(nèi)網(wǎng)址速度要慢得多蜕提。國(guó)內(nèi)DNS解析國(guó)外網(wǎng)址響應(yīng)時(shí)間與解析國(guó)內(nèi)網(wǎng)址相差無(wú)幾森书,猜想可能是因?yàn)橛袎Φ脑颉A硗饣咽疲瑖?guó)內(nèi)DNS解析出的國(guó)外網(wǎng)址的IP都無(wú)法訪問(wèn)凛膏,ping丟包率100%,奇怪的是國(guó)外DNS解析出的IP有著相同的情況(國(guó)外IP能否訪問(wèn)的實(shí)驗(yàn)是通過(guò)海外vps測(cè)試的)脏榆,可能說(shuō)明DNS服務(wù)器的域名資源不完備猖毫。是不是存在其他原因這里并不清楚。姐霍。鄙麦。
關(guān)于DNS解析延時(shí)可以通過(guò) ping dns-server 的時(shí)間估計(jì)個(gè)大概典唇。網(wǎng)上也有網(wǎng)友提供以下代碼來(lái)檢測(cè)當(dāng)前系統(tǒng)DNS的響應(yīng)時(shí)間:(評(píng)估系統(tǒng)DNS解析淘寶網(wǎng)的時(shí)間)
curl -o /dev/null -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" "http://www.taobao.com"
具體參數(shù)意義和返回結(jié)果的解釋參見(jiàn)文末參考資料镊折。當(dāng)前系統(tǒng)使用的DNS羅列在文件 /etc/resolv.conf 中,可使用 cat /etc/resolv.conf 查看介衔。
設(shè)置系統(tǒng)DNS服務(wù)器
如上文言恨胚,系統(tǒng)當(dāng)前的DNS設(shè)置可通過(guò)查看resolv.conf 文件知曉。打開(kāi) resolv.conf 可見(jiàn)一份以nameserver 開(kāi)頭的列表炎咖,該列表羅列了當(dāng)前系統(tǒng)設(shè)置的可用于DNS解析的DNS服務(wù)器地址赃泡,其中 search lan 表示使用當(dāng)前局域網(wǎng)的DNS服務(wù)器設(shè)置,該選項(xiàng)只有當(dāng)設(shè)置網(wǎng)絡(luò)為自動(dòng)DHCP獲取IP和DNS是才存在乘盼。
在網(wǎng)絡(luò)設(shè)置為DHCP自動(dòng)獲取IP和DNS時(shí)升熊,首先查詢(xún)當(dāng)前局域網(wǎng)設(shè)置的DNS服務(wù)器,失敗后才按照順序逐個(gè)向其他DNS服務(wù)器發(fā)送查詢(xún)請(qǐng)求绸栅,直到某服務(wù)器成功返回查詢(xún)結(jié)果為止级野。當(dāng)網(wǎng)絡(luò)設(shè)置為DHCP只獲取IP時(shí),系統(tǒng)不會(huì)查詢(xún)局域網(wǎng)DNS設(shè)置粹胯,而是直接使用系統(tǒng)內(nèi)設(shè)的DNS列表按從上到下的順序發(fā)送DNS請(qǐng)求蓖柔。
設(shè)置系統(tǒng)備選DNS時(shí)直接修改/etc/resolv.conf 是不行的辰企,這種修改方式只是臨時(shí)的,當(dāng)系統(tǒng)重新啟動(dòng)或網(wǎng)絡(luò)解析服務(wù)重啟后設(shè)置將丟失况鸣±蚊常可將備選DNS寫(xiě)入文件夾/etc/resolvconf/resolv.conf.d下的base或head文件中以便長(zhǎng)期保留。有一點(diǎn)需要注意的是這樣設(shè)置的DNS會(huì)出現(xiàn)在/etc/resolv.conf列表的最前面镐捧,由于網(wǎng)絡(luò)DNS解析按照自上而下的順序進(jìn)行潜索,因此設(shè)置的DNS將代替網(wǎng)絡(luò)自動(dòng)獲取的DNS成為首要解析服務(wù)器。解決這個(gè)問(wèn)題我們可以通過(guò)在/etc/resolvconf/resolv.conf.d文件夾下新疆 tail 文件并將DNS服務(wù)器寫(xiě)入該文件愤估。這樣重啟系統(tǒng)或網(wǎng)絡(luò)服務(wù)后tail中的DNS列表將追加在系統(tǒng)自動(dòng)獲取的DNS列表后成為備選DNS服務(wù)器帮辟。
使用DNScrypt 進(jìn)行DNS加密傳輸?shù)淖⒁馐马?xiàng)
DNScrypt 通過(guò)將不安全的http傳輸方式改成安全的https方式來(lái)傳輸DNS解析請(qǐng)求,從而有效避免DNS劫持玩焰、篡改等DNS安全隱患由驹,達(dá)到加密DNS的目的。
DNScrypt的使用參見(jiàn) Linux下配置DNScrypt避免DNS污染
自用DNScrypt時(shí)遇到一個(gè)小問(wèn)題:自定義DNS備選服務(wù)器后 DNScrypt 不能正常工作昔园,查看日志顯示 " Unable to retrieve server certificates" 錯(cuò)誤蔓榄。出現(xiàn)這個(gè)問(wèn)題是DNScrypt啟動(dòng)時(shí)需要先在其他DNS服務(wù)器的輔助下與DNScrypt服務(wù)器建立鏈接,而我設(shè)置的備選服務(wù)器中第一個(gè)服務(wù)器是無(wú)效的默刚,導(dǎo)致DNScrypt啟動(dòng)時(shí)無(wú)法與服務(wù)器建立鏈接甥郑,刪除無(wú)效DNS服務(wù)器解決問(wèn)題。
參考資料:
從瀏覽網(wǎng)頁(yè)看DNS解析 |? DNS原理總結(jié)及其解析過(guò)程詳解 | curl 查看一個(gè)web站點(diǎn)的響應(yīng)時(shí)間(rt) | curl 獲取站點(diǎn)的各類(lèi)響應(yīng)時(shí)間 | Linux下配置DNScrypt避免DNS污染