iT邦幫忙

0

企業資料通訊Week5 (4) |DNS (網域名稱系統)[一]

甚麼是 DNS?

想知道更深:鳥哥的 Linux 私房菜|第十九章、主機名稱控制者: DNS 伺服器
Domain Name System (網域名稱系統,port 53), 可以將人類看的懂的網域名稱EX:www.amazon.com ,轉成機器看得懂的IP位址 EX:192.0.2.44。

https://ithelp.ithome.com.tw/upload/images/20211029/20135414QMWZTwSC4p.png

註: map 是映射,也是資料庫的意思
hostname = domainname

DNS架構與工作

DNS(Domain Name System) 是域名和IP位址相互對映的一個階層式的資料庫。DNS 系統的工作原理和電話簿很像,
https://ithelp.ithome.com.tw/upload/images/20211030/201354144yY6pz3MMM.png

Q:為何要分那麼多台?單一台就好啦

A: IPv4 可以存2^16個,但IP位址,但如果單一個Database系統要存那麼多真的很沒效率,既然一台沒效率,那就分很多台分散吧!

負責解析域名

不過想想前面學過的,IP 轉 Domain 理想中應該是網路七層的第三層router做的事情啊!但是router不僅要負責網路的連接、送封包還要選路徑,那我們就讓resolve(解析)的工作交給DNS吧!

  • Load Distribution: 一個IP 可以有多個domainname,一個domainname 也可以有多個IP。舉個例子,同樣是雅虎的domainname,在台灣與在日本可能會查到不同的IP,所以才會顯示不一樣的網站,用這個特性來達到 Load Balance(像是分散流量)。

階層式架構

https://ithelp.ithome.com.tw/upload/images/20211029/20135414swPH0noRSu.png

  • DNS 解析 domainname 是倒過來解的,愈後面愈高層級 =>EX:www.facebook.com 的 "com" 是頂級(TLD[top-level domains]);facebook 是次級。
    註:台灣常見的是 Country code top level domain EX:.tw
    可以查:List of Internet top-level domains

是從最高層級往下問到最低層級負責的DNS。
13台Root name server (當然,全世界散布著至少1000台這些Root name server的複製品)已經寫死在我們作業系統中了,剛開始會先挑其中一台問。

DNS查詢方式

名詞解釋:

  • authoritative DNS servers:

An authoritative name server provides actual answer to your DNS queries such as – mail server IP address or web site IP address (A resource record). (就是為你解答完整IP位址的 DNS servers)

  • local DNS server:
    有點像是 proxy (代理)的角色,它有自己的cache(也會過期),嚴格來說並不屬於階層式DNS 的一部分,client 在一開始會先問它。
    註:如果一開始問local DNS server就查到IP的話,此時它也扮演 authoritative DNS server 的角色。

DNS分為Client和Server,Client一開始先發出一個Request 封包 問Local DNS server 某個Domain Name的真正IP地址(圖片的例子是: gaia.cs.umass.edu),而Local的DNS server先會查自己的資料庫。如果自己的資料庫沒有,則會往root DNS server尋問。
Root name server

而之後的查詢有分兩種方式,分別是Iterative (迭代)與Recursive (遞迴):

  • Iterative (迭代):
    像在玩RPG:「我不知道這個的答案,但是我知道某某或許知道,你可以問它」,也就是告訴你另一台可能知道答案的DNS之IP。

因為每個上一層的 DNS 伺服器所記錄的資訊,其實只有其下一層的主機名稱而已!

https://ithelp.ithome.com.tw/upload/images/20211030/201354141iKuGX8jzr.png
1)接續上面local DNS server 資料庫沒有的情況,local DNS server 往 13台root DNS server中隨機一台 問。
2)root DNS 給它線索,要local DNS server去找負責 .edu 的 Top-Level Domain(TLD) server
3)找到 TLD server,TLD server 告訴 local DNS server 去找負責 umass.edu 的次級DNS server
4)local DNS server繼續又問又找的,直到找到最終完全解開該IP 位址之謎的 DNS server(authoritative DNS server),得到了答案,這才回傳給 client。
最累的是 local DNS server (幫QQ)
local DNS server 會用cache記一段時間

  • Recursive (遞迴):
    https://ithelp.ithome.com.tw/upload/images/20211030/201354143ONyKm3HoP.png
    1)接續上面local DNS server 資料庫沒有的情況,local DNS server 往 13台root DNS server中隨機一台 問。
    2)local DNS server 等待答案傳上來(或是找不到)

註:

  • 因為local DNS 有catche功能,會把之前問過的人的位址暫時記住,因此Iterative 方法的local DNS 雖然第一次很忙,但是之後問一樣的時候效率就很高了。
  • 因為很多TLD很常拜訪,所以已經寫入在local DNS中,反而是root DNS 少被問。

DNS Records

參見:cloudflare|DNS record

前面說DNS 有maping 功能,那麼它是怎麼記住這些紀錄呢?
這裡就要提到 Resource Record(RR)!

DNS records are used to map each website dns configuration so the DNS server knows which IP address is associated with each record.

RR 的內內容大致上有這些:
(name, value, type, ttl)
名詞解釋:

  • name 是指 Domainname
  • value 要看type 種類而定
  • type 是指RR的類型
  • TTL 是 Time-to-live(單位是秒),指出過的多久需要更新一次。
    不同階層的DNS 的TTL也不一樣,authoritive DNS 最久(因為就是負責該完整IP)

補充: 還有 IN 這樣的 Fieldclass(目前使用的也只有IN這種,會省略)

下圖是更明確的格式定義
https://ithelp.ithome.com.tw/upload/images/20211031/20135414anadMFOtdN.png
它說 TTL 與 Fieldclass 是可以沒有的

Resource Record(RR) 種類

DNS RR 有分很多種,課本只有教4種。網路上都可以查到,如圖:
https://ithelp.ithome.com.tw/upload/images/20211031/201354140E9hMRQphA.png
截自:賞月齋|DNS資源紀錄(Resource Record)介紹

這裡就課本來介紹幾個
https://ithelp.ithome.com.tw/upload/images/20211031/20135414GnTGAGCAMG.png

  • A :主要用來對應主機名稱與IP位址,它的value 是IPV4 32bit的IP。
    EX:

domain  / [ttl]  /  class    /   rr  /  ipv4
    joe                 IN      A      192.168.254.3 
    

或是這種


domain   /   rr    /    ipv4      /  ttl
    @	        A	   192.0.2.1	  14400
    
  • NS :它的 value 會是 authoritative DNS 的 domainname

  • CNAME :不給IP,給別名。也就是canonical-name,它的value 是該domainname的別名,拿下面的圖來解釋
    https://ithelp.ithome.com.tw/upload/images/20211031/20135414j0thGtVISZ.png
    bar.example.com.會對應到它的別名,foo.example.com.,
    並在foo.example.com重新啟動檢查,然後返回 192.0.2.23。
    使用CNAME的好處:若伺服器IP位址改變,則只需修改該域名的A記錄即可。

  • MX : 它的value 會是email server "@"後面的那一串
    EX:
    https://ithelp.ithome.com.tw/upload/images/20211031/20135414kw4wVs9S6l.png

注:圖中的 "preference" 是指優先偏好,數字愈小優先權愈高,0最優先。

所以可能會有這種情況:
nccu.edu.tw, 1.2.3.4, A 指的是 web server
nccu.edu.tw, 1.2.3.5, MX 指的是 mail server
兩個指的是不同的server

下一篇文章:阿沁的DNS(2)

參考資料:
域名系統
什麼是 DNS?
List of Internet top-level domains
Root name server
鳥哥的 Linux 私房菜|第十九章、主機名稱控制者: DNS 伺服器
cloudflare|DNS record
NIXCP|What is a DNS record? DNS Record Types Explained
DNS記錄類型列表|WIKI


尚未有邦友留言

立即登入留言