手動設定網址與 IP 對應 — /etc/hosts

Unix Like 系統在向 DNS 查詢網址與 IP 對應前, 會先查詢檔案 /etc/hosts 的內容, 下文會介紹 Linux 的 /etc/hosts 檔案, 及手動設定網址與 IP 對應的方法。

方法同樣適用於 Mac OS X 及 Windows, 格式是一樣的, 只是檔案位置不同, 它們的位置在:

Linux: /etc/hosts
Mac OS X: /private/etc/hosts
Windows: C:\WINDOWS\system32\drivers\etc\hosts

首先是決定使用 /etc/hosts 的時機, 當架設網站時, 修改了 DNS 伺服器的 A records 或 CNAME records 後, 一般要一至幾個小時才會生效, 然後才可以進行測試及設定, 這個時候可以修改 /etc/hosts 檔案, 讓自己的機器將網址對應到新 IP 上, 那可以先進行測試, 測試沒有問題後才正式修改 DNS 伺服器的紀錄。

另一個常見的情況是, 將機構內重要的伺服器的 IP 放在 /etc/hosts 內, 這樣有兩個好處, 第一是當 DNS 伺服器當掉, 也可以用網址存取某些伺服器; 另一個好處是不會該外間知道某些伺服器的 IP 地址。


要加入網址到 /etc/hosts/ 很容易, 先看看以下例子, 用 nslookup 解析 linux.org 的 IP:

# ping -c 1 linux.org | grep PING
PING linux.org (192.243.104.10) 56(84) bytes of data.

看到 linux.org 解析的 IP 是 192.243.104.10, 現在加入一筆資料到 /etc/hosts, 開啟 /etc/hosts:

# vi /etc/hosts

加入以下內容:

192.168.1.10 www.linux.org linux.org

再執行一次上面的 ping 指令看看:

# ping -c 1 linux.org | grep PING
PING www.linux.org (192.168.1.10) 56(84) bytes of data.

會看到 www.linux.org 的對應 IP 變為 192.168.1.10, 以上只為了測試, 測試完後記得開啟 /etc/hosts 刪除剛剛加入的紀錄, 不然系統不能連接到真正的 linux.org 的。

請留意, 更改 /etc/hosts 後, 不可以用 host 或 nslookup 等 DNS 指令檢查, 因為這類工具會忽略 /etc/hosts 的設定, 而是直接從系統設定的 DNS 查詢。




Leave a Reply