作者:Sophon
來自:洛穀日報
鏈接:DNS-over-HTTPS(DoH)簡析與配置 - 未歸之人 - 洛谷博客
本文同步發佈於 Heliumの博客,到我的博客閱讀體驗更佳QwQ
DNS是什麼
DNS(Domain Name System)是一項網路服務,用途是對全球各個網站的域名進行解析。如果聽不懂上面這句話也沒關係,接下來會講解。如果你是網路方面的大牛可以直接跳過或關閉此網頁。
簡明易懂的DNS
舉個例子,從前有個叫小明的人(目測此人已累死),開了一家商店。一開始顧客要去購物時,就直接去商店裡買。
但由於網路環境的複雜性,讓顧客直接記住地址是不太可能的。(你試試看?)於是就有人動了腦筋,推出了一樣類似DNS的服務:你只需要說出地點(小明雜貨店),服務商就會開車送你去目的地。
很多大公司實際上都推出了這份服務,例如阿里,百度,谷歌,Cloudflare等。
實際網路中的DNS,則是向伺服器詢問域名,而伺服器返回IP地址。
順便推薦幾個質量好的良心DNS如下:
Cloudflare DNS:
1.1.1.1, 1.0.0.1
Google Public DNS:
8.8.8.8, 8.8.4.4
OpenDNS
208.67.222.222, 208.67.220.220
DNS查詢
看到這裡你可能有疑惑了,難道每一臺DNS伺服器都儲存了很多IP地址和域名的對應嗎?不是。一這很浪費空間,二這樣很難更新。
以我的博客地址keepthethink.github.io
為例,當你輸入地址後:
1.你的電腦首先會去詢問DNS伺服器;
這個「DNS伺服器」可能在任何地方,可能就在你家的路由器上,也有可能在萬裏之遙的燈塔國QwQ(如果你是非酋
當然,一般來講你的路由器上不會真的有一個DNS服務端,如果你在本地登錄912.168.0.1或192.168.1.1,你就會看到在「DNS」設置那一欄會有你的ISP的DNS地址(當然,如果你想把它換成公共DNS也可以,但要為你自己的網速負責。)
2.DNS伺服器詢問所謂「根伺服器」;
根伺服器詢問.io域名的權威伺服器;
.io域名的權威伺服器詢問.http://github.io域名的權威伺服器;
.http://github.io域名的權威伺服器將IP告知你的電腦;
OK
(這套措施實在是找不到合適的比喻,看不懂就跳過吧。)
注意事項
如果你訪問的是一些比較國際化的網站,而且還使用了國外的DNS伺服器,有可能會會給你分配個國外的IP地址。
舉個最基礎的例子:Hexo博客在註冊網址時,進行的國內外分流。這是不排除某些睿智國外DNS不管三七二十一給你個國外地址的情形。
DNS緩存
這麼幹,空間的確節省了很多,但效率顯然就更慢了。所以,DNS伺服器中一般有個「緩存」,當你重複詢問同一個網址時,直接找出緩存記錄並答覆。當然,每個一定的時間會更新緩存。
既然這套措施已經很完美了,那DoH是幹嘛的?別急,馬上就講。
DNS劫持與HTTP劫持
DNS劫持:當DNS不那麼老實
打個比方:
從前有個叫小剛的,他也開了家雜貨店;
小剛發現小明的雜貨店有很多客戶,分外眼紅,便拿錢賄賂了DNS服務商,於是,當顧客要求DNS服務商將其帶到「小明雜貨店」是,DNS會不管三七二十一將其帶到「小剛雜貨店」。在網路中,則是DNS伺服器故意給出錯誤的IP地址。
這顯然是無計可施的,一般來說,遇到這種人品爛的掉渣的服務商,最好的辦法就是換一家,好在這年頭網路條件不錯,大多數DNS都不搞這種事。
但是,對於DNS劫持,剛才講的一種情況並非最常見的,最常見的事下面這種:
假設只有服務商A收了賄賂,而服務商B沒有。當你向DNS服務商B打電話時,你的電話服務商將其轉接到服務商A,那你就前功盡棄了。唯一的方法是使用DNS-over-HTTPS,後面會講解。
HTTP劫持:當ISP不那麼老實
假設你向DNS伺服器打了個電話,「我要去小明雜貨店。」結果你的電話服務商竊聽了這句話,得知了你的行程;甚至將其修改為「我要去小剛雜貨店。」,然後你就不明不白的被帶到了另一個地方。
在這種情況下,你的DNS服務商是老實可靠的,但你的ISP(網路服務提供商)則不那麼可靠。當然,一般的ISP並沒有那麼猖狂,他們最多不過是往你身上塞幾張奇♂怪♂的廣♂告♂(想必大家都有這樣的經歷。)你有時候會不會發現你看到的廣告就是最近曾經關注過的事物?
你也許會說,可以修改DNS來解決這個問題,但如果你的ISP讓 Google Public DNS 跳轉到 ... 之類與其同流合污的DNS地址怎沒辦?圖樣圖森破。
注意
有哪些進行HTTP劫持的ISP?基本上都有:移動,聯通,電信,天下烏鴉一般黑,呵呵。 一個極其明顯的例子如下: