DNS 是一門很容易卻又很容易弄錯的領域,筆者想分享多年來協助客戶處理 DNS 的一些經驗,所以撰寫了這個系列文章。
DNS 系列文章目錄
DNS 除錯教學系列文章(1) – DNS 入門
DNS 除錯教學系列文章(2) – DNS 架構
DNS 除錯教學系列文章(3) – DNS 紀錄
DNS 除錯教學系列文章(4) – dig 指令
DNS 除錯教學系列文章(5) – 常見 DNS 問題與 dig 除錯方法
DNS – 網域名稱系統
DNS 是全球最大的分散式系統,主要就是處理網域名稱的解析,在我們輸入網址的時候,首先就是對網域名稱進行查詢,使用者才能連到目的端的主機。
主機名稱、網域名稱、網址
進入 DNS 之前,要先了解這幾個名詞,主機名稱、網域名稱與網址,我們直接用本文章的網址來說:
https://haway.30cm.gg/dns-1-basic
首先、網址最好理解,就是上面整個部分,我們叫做網址,從 https 開始一直到 -basic 整串就稱為網址。
主機名稱,就是範例中的 blog 部份,然後網域名稱是 rsync.tw,所以網址是由主機名稱加上網域名稱與路徑 (dns-1-basic) 所組合而成的。主機名稱與網域名稱是相對的,我們再來看幾個範例:
https://www.google.com
https://www.blog.rsync.tw
https://rsync.tw/path-example
第一個範例:主機名稱 www,網域名稱 google.com
第二個範例:主機名稱 www,網域名稱 blog.rsync.tw
第三個範例:主機名稱 rsync,網域名稱 tw,路徑 path-example
關於 path-example 在英文上稱為 slug,但為什麼叫做路徑呢?因為早期的網頁伺服器在網域名稱之後,其實指的就是主機上面的目錄內的檔案,例如你在根目錄內放一個資料夾並且放置一個 HTML 檔: path1/hello.html,這時候存取的路徑就是 https://haway.30cm.gg/path1/hello.html。但後來動態程式語言 (PHP) 的功能越來越多,而路徑的部分也可以使用路由 (router) 的方式來連結到別的程式,所以路徑的部分就不像過去是真實代表檔案的位置了。
主機名稱其實很好理解,就是最前面一個名稱,而網域名稱就是扣除主機名稱之後到路徑之前的名稱,再來一個範例,能了解嗎?
https://hostname.subdomain.blog.yourname.com/path-example
hostname 是 subdomain.blog.yourname.com 這個網域內的主機
subdomain 是 blog.yourname.com 這個網域內的子網域
yourname 是 com 這個網域內裡面的子網域
所以為什麼講的是購買 “網域名稱”,因為在這個網域之下,你可以設定無數的主機名稱,甚至是其他子網域。當我們在輸入上述網址的時候,系統會幫我們找出 subdomain.blog.yourname.com 內的 hostname 主機,透過 DNS 解析之後找到 IP 位址,就可以連線到伺服器。
主機名稱與子網域的不同
主機名稱是網域中最後一層,例如上述的 hostname,你還可以增加其他 abc123 等等的主機,並且透過 A 紀錄或是 CNAME 指到伺服器。
但是 subdomain.blog.yourname.com 是一個子網域,因為下一層才是實際的主機位置。你沒有辦法同時設定為子網域又是主機名稱,也就是說你不能設定 subdomain.blog.yourname.com 是 A 紀錄,然後又設定了 hostname.subdomain.blog.yourname.com 的 A 紀錄。
但是你可以設定 www.blog.yourname.com 的 A 紀錄,然後又設定 pc1.w3.blog.yourname.com,因為是不同的子網域了。
FQDN (完整網域名稱)
FQDN 在整個 DNS 設定裡面很重要,很容易造成設定錯誤。但因為 ICANN 對此沒有強制規定,所以各家廠商作法都不同導致使用者常常會因為轉換平台而設定錯誤,但又因為大多數的業者都會做一些防呆,但其實又導致了大家忽略了 FQDN 的重要性。
以本站的網域名稱當作範例,正確的 FQDN 表示法應該是: blog.rsync.tw.
最後有一個 “.“,這是正確的 FQDN 表示的方法,這有什麼作用呢? 其實這是在告訴電腦,這是一個完整的位址,不需要做任何其他處理,因為在 DNS 裡面,有一種簡寫的方法,就是只需要打主機名稱,然後系統會自動附加網域名稱在後面,所以當你在修改區域檔紀錄的時候,其實你只要打 www,系統會自動幫你附加你的網域名稱在後面,若是你打 www.rsync.tw.,系統會知道這筆資料不需要附加網域名稱。
“.” 還有另一個意思就是根網域。就是在整個網域名稱中,最初始的位置。這個根網域是由 ICANN 所管理,所有的 DNS 查詢都會由根網域開始。
一般來說最後這個 “.” 在實際使用的時候都會忽略,因為系統會幫你加。你試試看在網址列輸入 www.google.com.,是一樣可以使用的。至於什麼時候會用到 FQDN,我們會在後續的文章中介紹。
DNS 系列文章目錄
DNS 除錯教學系列文章(1) – DNS 入門
DNS 除錯教學系列文章(2) – DNS 架構
DNS 除錯教學系列文章(3) – DNS 紀錄
DNS 除錯教學系列文章(4) – dig 指令
DNS 除錯教學系列文章(5) – 常見 DNS 問題與 dig 除錯方法
在〈DNS 除錯教學系列文章(1) – DNS 入門〉中有 1 則留言
寫的很棒,有講到FQDN 那個 . 的細節
希望後續可以繼續出相關系列文章