hosts 文件:適用於用戶和開發人員的強大工具

已發表: 2020-09-23

您之前可能聽說過 hosts 文件,但不確定它是什麼或它的作用。 在本文中,我們將澄清這一點並準確解釋主機文件是什麼以及它是如何工作的。 我們還將查看一些您可以使用它實現的目標的示例。 讓我們開始吧!

什麼是主機文件?

在您的計算機上找到一個 hosts 文件(無論是 Mac 還是 Windows,都會有一個)。 主機文件是所謂的“純文本”,它們起源於幾十年前,最初被用作“名稱解析”的早期形式,早期的互聯網活動通過這些文件定向到目標服務器。 這種使用被今天仍在使用的域名系統(或 DNS)的發明所取代。

今天的互聯網流量依賴於 DNS 系統來“告訴它去哪裡”。 當您在瀏覽器中輸入網站地址時,瀏覽器會使用 DNS 系統“查找”託管該網站的服務器的位置。

該請求從您本地計算機的主機文件開始。 如果在那裡找不到所需的詳細信息(即所需服務器的位置或 IP 地址),則繼續向外部 DNS 服務器請求,直到找到該地址。 然後,這允許瀏覽器連接到網站並顯示您正在尋找的內容。 所有這一切都在幾毫秒內發生,這確實是了不起的。

快速瀏覽一下上圖。 如您所見,您的計算機發送的請求首先通過您計算機的主機文件進行路由。 如果 hosts 文件中保存了您請求的網站的 IP 地址,那麼它將直接將您的瀏覽器發送給它。 如果沒有,它會將您的瀏覽器定向到應具有所需信息的 DNS 服務器。

以此為基礎,可以合理地得出結論,通過編輯 hosts 文件,我們可以繞過 DNS 並在使用瀏覽器時將任何域解析為任何 IP 地址。 這樣做的能力可以帶來許多好處,我們將拭​​目以待。

注意:在進一步查看主機文件以及如何對其進行編輯之前,值得注意的是主機文件可能成為惡意攻擊的目標。 因此,當您完成任何修改後,值得將其屬性更改為“只讀”。

修改主機文件

在您的計算機上修改主機文件非常容易,並且有時非常有用。 讓我們看看如何在 Windows、Linux 和 Mac 上輕鬆修改 hosts 文件。

如何在 Windows 10 上修改主機文件

該文件可以位於“C:\Windows\System32\drivers\etc”

主機文件位置 - Windows

使用記事本等文本編輯器打開 hosts 文件時,您會看到類似這樣的內容(提示時不要忘記“以管理員身份運行”)。

託管文件內容

在現有內容下方(在我們上面的示例中,第 24 行附近)您可以輸入您想要訪問的目標 IP 地址,然後是空格,然後是域名。 這看起來大概是這樣的:

請注意,“#”符號用於註釋。 同一行中“#”之後的任何內容都將被忽略。 您可以將其用作標籤來標記對主機文件的編輯,例如:

 # my router's alias 192.168.1.1 myrouter.com

如何在 Linux 發行版上修改 hosts 文件

例如,在 Ubuntu 上,hosts 文件的完整路徑是 /etc/hosts。 你可以用你的編輯器打開文件(我們在這個例子中使用了 Nano 編輯器)。 出現提示時輸入您的 sudo 密碼。

主機文件位置 - Linux 發行版

完成後,您可以像我們為 Windows 所做的那樣添加行。

如何在 MacOS 上修改 hosts 文件

在 MacOS 上,文件的完整路徑是 /etc/hosts。 啟動終端窗口後,使用文本編輯器打開主機文件。

  1. 鍵入 sudo nano /private/etc/hosts 並按回車鍵。
  2. 輸入請求的密碼。 您現在將在 Nano 編輯器中打開 hosts 文件。
  3. 在 hosts 文件中的原始內容下方導航,然後按照 Windows 和 Linux 的描述編輯該文件。 > 目標 IP 地址 > 一個空格 > 域名
  4. 按 Control-O 保存文件。
  5. 如果未顯示更改,請使用 > dscacheutil -flushcache 刷新緩存

現在我們了解瞭如何在本地計算機上編輯 hosts 文件,讓我們看一下可以用它做的一些有用的事情。

編輯主機文件的主要原因

您可能想要編輯主機文件的原因有很多。 我們將在下面介紹其中的一些。

在測試網站的開發時

假設您是一名 WordPress 開發人員,正在開發您客戶​​網站的新版本,該網站當前位於“mycompany.com”域下。 您正在更改網站的本地版本(已保存在您的計算機上)。

您將遇到的問題是代碼中對域“mycompany.com”的任何引用都會看到您的瀏覽器將您帶到該站點的實時版本而不是該站點的本地版本,這意味著幾乎不可能測試您所做的更改。 在這種情況下,您有幾個選擇:

  1. 購買一個臨時域名,指向正在開發的版本所在的IP。
  2. 將實時站點部署到登台服務器。
  3. 使用 hosts 文件臨時將“mycompany.com”指向本地不同的 IP 地址/服務器。

因此,除非您喜歡在臨時域上浪費金錢,否則解決此問題的一個很好的方法是使用 hosts 文件並使域解析到您正在進行或將要進行的工作。

為此,您所要做的就是輸入您正在使用的服務器的域名和 IP(如前所述)。 例如,如果 IP 地址是 138.201.141.25,您將編輯 hosts 文件以讀取:

如果要添加 www 域,同樣適用。 你可以通過像這樣添加第二行來做到這一點:

或者將兩者結合在同一行中,如下所示:

另請注意,使用 hosts 文件指向您的本地文件也將略微提高您的瀏覽速度,因為您的計算機可以直接“請求”本地文件並跳過從 DNS 服務器請求 IP 地址和等待接收它的回應。

像這樣編輯 hosts 文件對於開發人員測試他們正在開發的網站或進行其他類型的工作非常有用,這些工作有助於覆蓋 DNS 服務器並控制對網站和網絡流量的訪問。

阻止網站

那裡有很多網站,其中許多並不是特別令人愉快。 因此,您可能希望阻止對這些的訪問(例如,如果您有孩子使用您的計算機)。 這可以通過將特定網站的請求路由到您的本地主機 IP 地址(通常為 127.0.0.1)來完成。

我們應該指出:

  • 除非您在其地址中包含 www,否則 HTTPS 站點不會被阻止。
  • 在這些修改期間,請記住,您需要清除瀏覽器緩存才能看到這些更改生效。

例如,假設您想阻止訪問名為 www.badwebsite.com 的網站。 為此,您將在主機文件中輸入以下內容:

 127.0.0.1 badwebsite.com www.badwebsite.com

這樣做的結果是您的計算機將無法訪問該網站。

您還可以使用 hosts 文件來阻止間諜軟件/廣告網絡。 為此,請列出您要阻止的所有間諜軟件站點和廣告網絡域名,並將它們添加到您的主機文件中,將它們映射到 IP 地址 127.0.0.1,該地址將始終指向您的計算機。 這樣您的瀏覽器將無法訪問這些域。

這樣做的一個好處是,在阻止此類不需要的站點後,您的瀏覽將更加安全,因為您將無法訪問已知的惡意站點。 它還可以加快您的瀏覽速度,因為您在從廣告網絡站點下載廣告時不再需要等待。

結論

總之,編輯 hosts 文件可以讓您完全控制在您的機器上本地解析到哪個 IP 地址的域。 這有許多可能的用途和好處。 擁有控制權總是很好的,並且了解您的計算機主機文件的方式為您提供了……控制權。 確實是一個強大的工具!