iT邦幫忙

0

root dns 伺服器如何不被撐死?

dns

root dns 伺服器如何不被撐死?

我今天在閱讀鳥哥文章 鳥哥的 Linux 私房菜 -- DNS Server

有個疑問
通常第一次請求沒有紀錄緩標記時,要去全球 root 伺服器詢問地址如何走
地球那麼大,每台電腦請求都送去 root 那伺服器不就要被撐死?

假如做成 CDN 方式,這樣那麼多 IP 、 Domain Name 怎麼同步的了...

還是 root dns server 是有按國家區域來做拆分?

更疑惑的是,全球每天 ddos 那麼多,很多大公司都撐不住了
但是乘載全球流量的 root dns server 卻撐住所有 ddos 更是厲害

PS : DNS (Domain Name System) = 域名系統,將域名解析為IP的服務器系統


更新 :

爬文1 : 閱讀完 wiki Root name server-wiki
後發現 root dns server 被掌握在西方國家
這樣不就代表西方國家看中國或是哪個國家不爽,直接斷你 root 權限 = 全國網路 GG

爬文2 : Distributed denial-of-service attacks on root nameservers - Wikipedia
發現 dns root server 真的很厲害,每秒 500 百萬的查詢 攻擊也能撐下

看更多先前的討論...收起先前的討論...
nansen iT邦新手 3 級 ‧ 2020-10-13 12:11:17 檢舉
笑死,中國自己DNS汙染玩那麼大,長城想擋誰就擋誰哪需要依賴root DNS
根,如.com.cn,根伺服器只需要記錄 a.com.cn、b.com.cn 、c.com.cn 的兩台主副DNS主機的位址,pornhub.com或 president.gov.tw就不關他的事

更上一級的cn,只要負責處理 com.cn 、org.cn、 edu.cn .........
Franky Chen iT邦研究生 4 級 ‧ 2020-10-13 13:16:30 檢舉
因為大部分的時候root server只負著TLD的解析(.tw, .com, .org, .google之類的),不會負責解析一般的domain name
魔鬼終結者的「天網」原理知不知道呢?不知道再去重看一次。
誰說每一次dns的請求都是往root dns請求的。

叫你基本觀念先搞懂。不要在這邊鬧笑話啦!
(我講話很毒,請見諒)
通常不會去問root dns會先去問中華那幾台吧
或是google的8.8.8.8
就看你primary dns設定誰
我有理解錯誤嗎?

鳥哥原話
首先,當你在瀏覽器的網址列輸入 http://www.ksu.edu.tw 時,你的電腦就會依據相關設定 (在 Linux 底下就是利用 /etc/resolv.conf 這個檔案) 所提供的 DNS 的 IP 去進行連線查詢了。由於目前最常見的 DNS 伺服器就屬 Hinet 的 168.95.1.1 這個 DNS,所以我們就拿他來做例子吧!嗯!這個時候,hinet 的這部伺服器會這樣工作:

收到用戶的查詢要求,先查看本身有沒有紀錄,若無則向 . 查詢:
由於 DNS 是階層式的架構,每部主機都會管理自己轄下的主機名稱解譯而已。因為 hinet 並沒有管理台灣學術網路的權力, 因此就無法直接回報給用戶端。此時 168.95.1.1 就會向最頂層,也就是 . (root) 的伺服器查詢相關 IP 資訊。
----

這樣不是代表hinet 底下的 domain 用戶每過 1-2 天 緩存過期,所有電腦都要最起碼向 root 發起請求一次?
並不會,有被請求過的會快取在168.95.1.1裡,但會有expiredr期限,通常是8到24小時,沒記錄才會幫往上一層查詢,並不會由"所有電腦"直接跟root查詢
`但會有expiredr期限,通常是8到24小時,沒記錄才會幫往上一層查詢` <--- 所以理論上 hinet 底下每台電腦不是一天之後就會過期? 這時候所有 hinet 底下電腦理論上都要(不同時間點)重新跟 root 查詢?
你沒理解錯誤。當所有的dns伺服都掛的時候。只剩下root ns。
的確會發生你說的情況。

但要等所有dns都沒任何緩存資料。除非全球大當機。要不然我想像不出來有任何可能性會發生。

另外,所謂的Hinet 的 168.95.1.1 。這只是一個網路接口。並非單純的代表是一台主機。

這其實又牽扯到網路資源還是啥鬼的分配問題。
總之,這之間的學問。並不是你單純的想法及自我誤解的解釋。

如果你真的想要了解其真正的原理。我可以建議你自已架一台ns伺服。
然後去玩看看。
你自然就可以了解。

不要認為一個ip指的就是一台主機。它只是一種網路接口。
要發生你誤解中的全球性電腦都跟root dns請求。這是比登天還難的事。

不要再那邊自我擔心。
有一個議題可以給你去擔心。

有關ipv4已經全球全分配完了。未來有機會將不在有所謂獨立型的ipv4的ip了。
而配套的方式就是目前的ipv6。

考考你,預估ipv6全用完需要多久的時間。(不要問我,我也沒有標準答案)

如果你想玩這一類的議題,我就出議題讓你去找。不要再去問讓人覺得想發笑的問題。也不要拿「鳥哥」當擋箭牌。「鳥哥」會覺得很無辜的。不小心讓知識不足的人誤解了其意義。
感謝討論
不會同時都到期,更何況向上層查詢動的是客戶設定的DNS伺服器(或端口轉發),至於會不會發生客戶端都向root查詢,也不會,你知道上層IP在哪嗎?
*.ithome.com.tw到期了,很快就會有其他電腦也會來查詢168,當168查到後便會快取並設期限,一個域名如此,千個域名如此,你根本不用緊張

資料都放在查詢用的DNS主機記憶體裡,一組IP需要多少空間?128GB存個幾億筆不成問題,問題是........常用的域名不過就那幾千組,你何苦擔心
DNS 是階層式架構,目前用的 NS 沒紀錄,會去找父系NS ,而是不是找root ns,不是最終用戶可以決定,除非你自己架NS,你用自己的NS,然後讓你的NS只要找不到,就去 root ns 找,但這只會讓你的 NS查詢變慢,因為最頂層,他只有 TLDs 紀錄,沒有下層域名紀錄,也就是說,假如你跟 root ns 問 WWW.HINET.NET 在哪,他會把要求直接丟給管理 NET域的NS,讓他回應,可是 NET域的NS 有可能會發現這個位置在台灣,所以又丟到台灣TLD NS,然後再丟到HINET的 DNS機房之後讓HINET的NS把這個主機紀錄拋回來給查詢者,假如轉一次NS要用掉 30毫秒,最後翻查資料要 100毫秒,那這樣轉下來可能就要 3*3*30+100 = 370毫秒
本來用當地的NS只要 160毫秒,但現在多了1-2倍的時間,這樣真的有比較好,所以,建議樓主自己架一次NS就能了解這些原理,然後一定要買書回來看
個人電腦在發動DNS查詢前,會先檢查本機的hosts,再查本機的DNS快取,都找不到才會向168或4個8查詢,根本不會動不動就向DNS查詢啦
感謝 窮嘶發發發、japhenchen 兩位大神,請問能底下留言嗎
我想要標記為最佳解答
收到用戶的查詢要求,先查看本身有沒有紀錄,若無則向 . 查詢:
由於 DNS 是階層式的架構,每部主機都會管理自己轄下的主機名稱解譯而已。因為 hinet 並沒有管理台灣學術網路的權力, 因此就無法直接回報給用戶端。此時 168.95.1.1 就會向最頂層,也就是 . (root) 的伺服器查詢相關 IP 資訊。
這樣不是代表hinet 底下的 domain 用戶每過 1-2 天 緩存過期,所有電腦都要最起碼向 root 發起請求一次?
==================================================
理解錯誤,所有電腦都要最起碼向 root 發起請求一次?
除非全世界每台電腦的primary dns都設定root dns
才會有你說的情況發生,但不會這樣設定
utopia iT邦新手 3 級 ‧ 2020-10-21 13:38:33 檢舉
給樓主追根究底,認真求知,勇於提問的精神按讚!!!

尚未有邦友回答

立即登入回答