Linux 上的主機文件

所有支持網絡的操作系統都有一個 hosts 文件來將主機名轉換為 IP 地址。 每當您通過輸入主機名打開網站時,您的系統都會通讀主機文件以檢查相應的 IP,然後將其打開。 hosts 文件是一個簡單的文本文件,位於 Linux 和 Mac OS (/等等/主機)。 Windows 也有一個 hosts 文件,在 Windows 上你可以在 WindowsSystem32driversetc 中找到它

這是它的樣子:

從我們提到的內容來看,您可能希望這個文件有一個很長的 IP 列表和相應的主機名; 但事實並非如此。 hosts文件只包含幾行;

  • 默認情況下,第一部分包含本地主機和機器的主機名和 IP 地址。 這是您通常會修改以進行所需更改的部分。
  • 第二部分包含有關支持 IPv6 的主機的信息,您幾乎不會編輯這些行。

每當您鍵入地址時,您的系統都會檢查主機文件是否存在; 如果存在,您將被定向到相應的 IP。 如果主機名未在 hosts 文件中定義,您的系統將檢查您互聯網的 DNS 服務器以查找相應的 IP 並相應地重定向您。

為什麼要編輯 /etc/hosts 文件?

通過編輯主機文件,您可以實現以下目標:

  • 阻止網站
  • 處理攻擊或解決惡作劇
  • 為本地服務器上的位置創建別名
  • 覆蓋您的 DNS 服務器提供的地址
  • 控制對網絡流量的訪問

如何編輯 /etc/hosts 文件?

您只能以超級用戶身份編輯位於 /etc/hosts 的 hosts 文本文件。 您首先必須在 Linux 終端中的文本編輯器中打開它,例如 VI 編輯器、Nano 編輯器或 gedit 等。 然後,您將進行所需的更改並保存文件以使這些更改生效。

在本文中,我們將使用 Nano 編輯器來編輯文件。 請輸入以下命令:

$ sudo 納米 /etc/hosts

或者

$ sudo gedit /etc/hosts

(用於 gedit)

使用 nano 編輯器編輯 /etc/hosts 文件

如前所述,我們將編輯主機文件的第一部分,其中定義了 IP 地址和主機名。 我們將解釋以下兩種使用 hosts 文件的方法:

  • 阻止網站
  • 通過別名訪問遠程計算機

阻止網站

您可以通過將網站重定向到本地主機的 IP 或默認路由來阻止網站。

為了 example,如果我們想阻止 google.com,我們可以在我們的文件中添加以下文本:

127.0.0.1 www.google.com

現在,當我們打開 google 網站時,我們的系統將從 hosts 文件中獲取我們的 localhost (127.0.0.1) 的 IP,並將我們重定向到該 IP,而不是來自我們 DNS 服務器的 google IP。

或者

0.0.0.0 www.google.com

現在,當我們打開 google 網站時,我們的系統將從主機文件中獲取默認路由 (0.0.0.0) 的 IP,並將我們重定向到該 IP,而不是來自我們 DNS 服務器的 google IP。

這就是編輯後的文件的樣子。 請按 ctrl+X 保存更改。

編輯主機文件以阻止對域的訪問

現在,當您嘗試從瀏覽器打開 www.google.com 時,您將看到如下錯誤消息:

在桌面上成功阻止站點

請注意,我們在 hosts 文件中定義了完整的地址 www.google.com 而不僅僅是主機名 google.com 因為如果我們只定義後者,現代瀏覽器有時會繞過該塊。

您還可以在主機文件中使用一些預定義的阻止列表: https://github.com/StevenBlack/hosts

通過別名訪問遠程計算機

假設我們有一個位於我們想要訪問的本地網絡的服務器。 我們通常必須鍵入服務器的 IP 才能訪問它,除非它已在我們的本地 DNS 上定義。 避免反复輸入 IP 的一種方法是在主機文件中為服務器分配一個別名,如下所示:

192.168.1.10 我的服務器

IP 對應我們要訪問的服務器的位置,而 myserver 是我們要使用的新別名。

將域重定向到新 IP

現在,當我們保存文件並在地址欄中鍵入 myserver 時,我們將被重定向到我們的遠程服務器。

我們了解到,通過對主機文件進行非常簡單的更改,我們可以根據需要自定義並重定向網絡流量。 我們還可以通過將主機文件恢復為默認值來擺脫網絡攻擊或惡作劇。