通過 hosts檔案配置本地域名

Librarookie 發表於 2022-06-29

通過 hosts檔案配置本地域名



概念

  1. DNS: 域名系統(Domain Name System),是網際網路的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。

    • 將域名對映到對應的IP地址。
    • 網際網路通過IP定位瀏覽器建立連線,但是我們不易區別IP,為了方便使用者辨識IP所代表的意義,作業系統會將IP和域名進行轉換
    • DNS伺服器可以看作登錄檔,記錄域名及對應的IP。瀏覽器訪問網址時會根據域名在此伺服器獲得IP.
  2. hosts檔案: 作業系統操作的 IP域名 本地對映檔案。

    • 可以視為DNS server的重寫,一旦查到了指定的域名,就不會繼續查詢DNS server, 所以可以節省時間
    • hosts設定的IP地址是靜態的,如果web app的宿主機地址發生改變,對應的hosts也要改寫。

域名查詢順序

瀏覽器快取 > 本地作業系統快取 > DNS伺服器(路由快取 > 網際網路DNS快取伺服器) > 遞迴搜尋

  • 瀏覽器快取: 只存下瀏覽器自己訪問過的域名.

    • 為了加快訪問速度,Google Chrome瀏覽器採用了預提DNS記錄,在本地建立DNS快取的方法,加快網站的連線速度。
    • chrome://net-internals/#dns 這裡可以看各域名的DNS 快取時間。
    • chrome對每個域名會預設快取60s。
  • 本地作業系統快取: 電腦訪問過的, 具體可通過hosts檔案設定

    • Windows檢視快取: ipconfig /displaydns
    • Windows重新整理快取: ipconfig /flushdns
  • DNS伺服器: 包括路由快取和網際網路DNS伺服器, 以及13臺根伺服器


hosts檔案配置

通過上面介紹可知域名查詢順序,所以我們可以通過修改作業系統的hosts檔案,來配置本地域名。

Windows

  1. 配置

    # 開啟 hosts檔案,檔案路徑如下:
    C:\Windows\System32\drivers\etc\hosts
    
    # 新增域名配置
    192.168.1.1     www.test.com
    

    tips

    • 檔案修改時,注意域名後不要有空格
    • 如果是用第三方工具編輯hosts,儲存檔案時注意編碼格式,必須是ANSI
  2. 重新整理與檢視

    # 進入 cmd終端視窗(小黑窗)
    win + r  >  cmd  >  回車
    
    # 檢視 DNS快取
    ipconfig /displaydns
    
    # 如果沒生效, 則重新整理 DNS快取
    ipconfig /flushdns
    

Linux

  1. 配置

    # 開啟 hosts檔案,檔案路徑如下:
    sudo vim /etc/hosts
    
    # 新增域名資訊
    192.168.1.1     www.test.com
    
  2. 重新整理

    如果域名未生效,則可以重啟網路來重新整理,下面是centos操作
    service network restart


測試

直接ping域名即可,如:

ping www.test.com

Windows還可以檢視DNS快取。


常見問題

  1. Windows中的 hosts檔案編輯後無法儲存

    • 原因: hosts檔案只有可讀許可權
      • 處理: 去掉hosts屬性中的“可讀”即可,如圖所示:

        20220629171821

  2. 修改了hosts檔案,新增了域名對映資訊,但是不生效,試過了重新啟動和重新整理DNS都不行

    • 原因1: 域名資訊配置不規範; 或者域名、ip拼寫錯誤;
    • 原因2: 使用第三方工具編輯 hosts檔案,儲存後hosts檔案的編碼格式變了,而windows對於hosts檔案只能讀取ASCII編碼,所以hosts檔案的編碼必須是 ANSI
      • 處理: 將hosts檔案的域名資訊填寫好,然後另存為,在編碼處選擇“ANSI”,最後確定。

        20220629171956
        hosts_faq