手動設定網址與 IP 對應的 hosts 檔教學,適用 Windows、Mac OS X 與 Linux 系統

透過 hosts 設定檔手動設定主機名稱與 IP 位址是系統與網站管理者常用的除錯技巧,以下我們將介紹這個好用小功能該怎麼使用。

在架設網站時,除了伺服主機的網路設定之外,還要配合 DNS 伺服器才能讓網站正常運作,而 DNS 上面的記錄在變更之後,通常都會需要幾個小時才會生效,所以很多人在架設網站初期都會浪費許多時間在等待 DNS 生效,才進行後續的設定,其實我們可以在 DNS 生效之前,以動的方式自行先設定自己電腦上的 hosts 檔,加速網站的建置工作。


另外在轉移網站的過程中,也可以利用 hosts 設定檔來測試新主機空間是否有正常運作,確保在網站轉移之後不會出問題,維持不中斷的網站服務。

hosts 設定檔是什麼?

對於網際網路的基礎知識有了解的人應該都清楚網址與 IP 的對應關係,每個網站的網址都會對應一個或多個 IP 位址,當使用者要連上一個網站之前,要先知道網站的網址(如 blog.gtwang.org),接著連線至 DNS 伺服器,查詢該網址所對應的 IP 位址,獲得網站的實際 IP 位址之後,才能連上該網站瀏覽上面的內容。

windows-hosts-file-configuration-9

DNS 的作用

DNS 伺服器的作用就是負責將網址轉換成 IP 位址,而 hosts 設定檔的作用跟 DNS 伺服器相同,這個檔案裡面紀錄了一些網址與 IP 位址的對應表,一般的電腦在需要查詢網址與 IP 位址的時候,會先開啟這個檔案來查詢,如果這個檔案裡面剛好有電腦需要查詢的對應記錄,就可以直接連上網站來瀏覽;如果從 hosts 設定檔裡面查不到,才會連線至 DNS 伺服器來查詢。

windows-hosts-file-configuration-8

這個 hosts 設定檔在台電腦中都有,只是一般人可能沒注意到它的存在,也沒有在這個檔案加入任何對應的內容,當這個檔案沒有任何內容時,就等於沒有任何作用,所有的網址與 IP 位址的對應還是會依賴 DNS 伺服起來處理,絕大部分的電腦應該都是處於這樣的狀況。

如何設定 hosts 檔?

hosts 設定檔在 Windows 與 Linux 系統上都有,而且裡面的資料格式完全一樣,只是放置檔案的目錄有差異而已,以下我們說明在這兩種系統該怎麼修改裡面的內容。

Windows 系統

Windows 系統的 hosts 設定檔路徑是:

C:\WINDOWS\system32\drivers\etc\hosts
windows-hosts-file-configuration-1

Windows 系統 hosts 設定檔

由於 hosts 設定檔沒有任何副檔名,所以在開啟時要自行選擇編輯器,如果沒有特別喜好的編輯器的話,用記事本開啟就可以了。

windows-hosts-file-configuration-2

用記事本開啟 hosts 設定檔

這個 hosts 設定檔的內容預設應該都只有註解(# 開頭的就是註解),沒有什麼特別的內容,我們可以在檔案的最後加上自己的設定,第一個欄位是 IP 位址,然後使用空白或 Tab 分隔,第二個欄位就放主機的 FQDN(也就是網址)。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

45.118.135.69	blog.gtwang.org		# G.T.Wang 部落格

這裡我拿我的部落格網址 blog.gtwang.org 做示範。

windows-hosts-file-configuration-3

hosts 設定檔

由於這個設定檔是屬於系統的檔案,一般的使用者沒有權限修改,如果直接存檔的話會出現這樣的訊息。

windows-hosts-file-configuration-4

另存新檔

我們可以將新的 hosts 檔另存新檔,儲存在別的目錄中,然後在用滑鼠拖進系統的 etc 目錄。

windows-hosts-file-configuration-7

用將 hosts 檔滑鼠拖進 etc 目錄

然後選擇「取代目的地中的檔案」。

windows-hosts-file-configuration-5

取代或略過檔案

選擇「繼續」提供系統管理員權限,讓 hosts 檔放進該資料夾。

windows-hosts-file-configuration-6

提供系統管理員權限

這樣就完成 Windows 系統的 hosts 設定檔的修改了。

Linux 系統

在 Linux 系統上 hosts 設定檔放在

/etc/hosts

如果要修改它,要使用 root 管理者權限修改:

sudo vi /etc/hosts

其內容與資料的格式都跟 Windows 的 hosts 檔相同:

linux-hosts-file-configuration-1

Linux 系統 hosts 設定檔

Mac OS X 系統

在 Mac OS X 系統上的撮作方式也跟 Linux 類似,編輯 hosts 設定檔:

sudo vi /etc/hosts

其中的格式也跟 Linux 的 hosts 一樣。

編輯完 hosts 之後,要清除 DNS 快取,讓新設設定生效。

# Yosemite (10.10)
discoveryutil mdnsflushcache
# Mavericks, Mountain Lion, and Lion (10.7 - 10.9)
killall -HUP mDNSResponder
# Snow Leopard (10.6 and older)
dscacheutil -flushcache

hosts 設定檔用途

大部分的使用者可能不會需要使用到 hosts 設定檔,反而是有些惡意程式(病毒)會竄改 hosts 設定檔,讓使用者連線至某些特定的網頁主機(俗稱綁架網頁),遇到這樣的狀況就可以去檢查一下 hosts 設定檔,看看有沒有什麼異常的記錄在裡面。

舉例來說,如果您發現您電腦中的 hosts 記錄檔裡面有類似這樣的記錄:

12.34.67.78   tw.yahoo.com
45.32.83.18   www.google.com.tw
192.94.57.8   www.pchome.com.tw

那就表示您的電腦可能已經中毒了,因為通常網路上公開的網站都是透過 DNS 伺服器來查詢網址與 IP 的對應關係,不會使用 hosts 設定檔,會寫在 hosts 檔中的大部分都是內部網路的主機,也就是說這裡通常只會有私人的主機,如果出現公開的網站的話,就有點不太正常。

除了惡意程式的問題之外,網站的管理者也時常有機會使用 hosts 設定檔來測試自己網站,以我個人的經驗來說,當架設新網站或是轉移網站的過程都會需要藉由修改 hosts 設定檔,在網站正式公開之前,對網站做一些測試,避免公開網站後才發現問題,影響訪客的瀏覽。

在更換網頁主機(網站搬家)時,如果 hosts 設定檔運用得當,甚至可以讓網站維持 100% 的 uptime,網頁主機更換的過程中,完全不會影像使用者的瀏覽。

參考資料:The Will Will WebLinode

Windows

5 留言

  1. Vt

    很详细,感谢。

  2. 寫的很不錯,感謝。

  3. RK

    你好,我想請問如果我想封鎖一個網站包含所有子網域,我要怎麼設定這樣的條件呢?
    因為我沒辦法知道所有子網域,加上設定效率問題,我不太可能把所有子網域列出來,像是
    api.example.com
    test.example.com
    我嘗試用 *.example.com 但並沒有成功

    • G. T. Wang

      Windows 的 hosts 檔不支援萬用字元(wildcards),可能要改用類似 Acrylic DNS Proxy 的方式。

      參考資料:superuserstackoverflowAcrylic DNS Proxy

      • RK

        那請問Mac有支援萬用字元嗎?
        或是Mac上有沒有類似的方法可以代替?

Comments are Closed