前言

介紹一下 /etc/hosts/etc/resolv.conf 兩個設定檔,順便做個紀錄

/etc/hosts

敘述

搜尋 domain name 時,會先來 /etc/hosts 檢查,如果有找到 domain name 對應的 IP 就會直接使用,不會再去訪問 DNS Server。

測試

因為會優先檢查,所以如果在表單寫了 127.0.0.1 www.kkbox.com 的 mapping,本機端就永遠無法連接到真實的 kkbox.com 了,而是會先被導到 127.0.0.1

# 測試 ping www.kkbox.com 得到 ip 位址為 210.61.183.32
$ ping www.kkbox.com

PING 15169.www.kkcube.com (210.61.183.32) 56(84) bytes of data.
64 bytes from ip-210-61-183-32.kkcube.com (210.61.183.32): icmp_seq=1 ttl=37 time=35.3 ms
64 bytes from ip-210-61-183-32.kkcube.com (210.61.183.32): icmp_seq=2 ttl=37 time=35.6 ms

# 讓 www.kkbox.com mapping 到 127.0.0.1
$ echo "127.0.0.1 www.kkbox.com" >> /etc/hosts
$ ping www.kkbox.com

PING www.kkbox.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.219 ms

/etc/resolv.conf

Ubuntu manpages

敘述

搜尋 domain name 時會先來這邊查看設定的 DNS 網站有哪些,在透過這些 DNS 網站進行解析

參數介紹

  • nameserver 指定解析 domain name 時需要使用的 DNS
  • search 如果輸入的 domain name 不完整的時候,會補上 search 的內容再次搜尋
  • domain 作為 search 的 default 內容,如果設定 search 後就沒用了

測試

# news 為不合法的 hostname
$ ping news
ping: news: No address associated with hostname

# 在 resolv.conf 新增 search 條件
$ echo "search google.com" >> /etc/resolv.conf

# hostname 不完整時,會透過 search 自動補齊
$ ping news
PING news.google.com (142.251.43.14) 56(84) bytes of data.
64 bytes from tsa03s08-in-f14.1e100.net (142.251.43.14): icmp_seq=1 ttl=37 time=8.76 ms
64 bytes from tsa03s08-in-f14.1e100.net (142.251.43.14): icmp_seq=2 ttl=37 time=9.95 ms

注意事項

  • mac 上修改 /etc/resolv.conf 後並不會有任何改變,原因待查證