--- tags: Other --- # Domain Name System, DNS 出了社會之後被同事推坑用 Richart,現在~~轉帳都超方便~~,試想一下轉帳如果每次都要打帳號是不是非常不友善,~~到底誰會記得~~。此時我們就會把常用的帳號記在通訊錄裡,下次我只要知道我要轉給誰,Richart 就會很聰明地幫我直接轉帳到對的人。 同理,我們去連其他網站也是相同的。 > 好友名稱透過通訊錄轉成帳號 == Domain Name 透過 DNS 轉成 IP 以 Google 大大為例,我們在網址列打上 https://www.google.com/ 時,其實就是送一個 request 給 Google,https://www.google.com/ 其實是為了大家能夠比較好記憶,就像是通訊錄上的名字,而他會經過 Domain Name System 轉換成一個 IP,就像是轉帳的帳號本身,本身非常之難記。 ```shell $ host www.google.com www.google.com has address 216.58.200.228 ``` 當然你也可以直接透過 IP 來連線,就不用透過 DNS,就像是你轉帳時也能夠直接輸入帳號一樣。 - 利用類似**樹狀目錄**的架構,將主機名稱的管理分配在不同層級的 DNS 伺服器,做階層式管理 ![](https://i.imgur.com/EmgHjO1.png) ![](https://i.imgur.com/wds5xw8.png) DNS 沒這麼笨每次都要重查,他會做 cache。 - 需要 Domain 時,除非主機量龐大、Domain 常變動,才需要自架 DNS,否則交給 ISP 託管就好。 ## `/etc/hosts` 常用的 [localhost](https://zh.wikipedia.org/wiki/Localhost) 其實是對應到 `127.0.0.1`,這個其實是透過 `/etc/hosts` 來做設定的,電腦上用這個檔案來去 mapping 一些 IP。 最好將所有的私有 IP 與主機名稱對應都寫入這個檔案中。 ```shell $ cat /etc/hosts ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost # End of section ``` 這個方法只適合用在自己的私網,試想若全世界的 Domain 都要記在這個檔案,要瘋狂的 sync 才能確保連到正確的 IP,~~絕對不可能這樣搞,但遠古時代的確是這樣~~。 ![](https://i.imgur.com/PnXVoaS.png) ## 名詞解釋 - **BIND**, Berkeley Internet Name Domain:提供 DNS 服務的軟體 - **FQDN**, Fully Qualified Domain Name:如有一部伺服器的本地主機名為`myhost`,而其母域名為 `example.com`,那指向該伺服器的完整網域名稱就是 `myhost.example.com` - **ISP**, Internet Service Provider ## 參考資料 - [主機名稱控制者:DNS 伺服器 / 鳥哥的 Linux 私房菜](http://linux.vbird.org/linux_server/0350dns.php)