/etc/hosts 的目的是什麼?
據我了解,該
hosts
文件是幫助解決電腦網路中的網路節點的幾個系統工具之一。但是裡面應該是什麼?當我預設安裝 Ubuntu 時127.0.0.1 localhost
將在那裡。為什麼?
/etc/hosts
在像 Cassandra 這樣的 JVM 系統中如何工作?- 什麼時候是 DNS 替代方案,我猜不是在一台電腦上?
該文件
/etc/hosts
始於 DARPA 的舊時代,作為連接到 Internet 的所有主機的解析文件(在 DNS 存在之前)。它具有最高優先級,這意味著此文件優先於任何其他名稱系統。1但是,作為單個文件,它不能很好地擴展:文件的大小很快就會變得太大。這就是開發 DNS 系統的原因,這是一個分層的分佈式名稱系統。它允許任何主機有效地找到其他主機的數字地址。
很老的文件概念很
/etc/hosts
簡單,就是一個地址和一個主機名:127.0.0.1 localhost
對於每一行。這是地址主機對的簡單列表。2
它目前的主要用途是繞過 DNS 解析。在文件中找到的匹配項
/etc/hosts
將在任何 DNS 條目之前使用。事實上,如果localhost
在文件中找到搜尋的名稱(如 ),則根本不會執行 DNS 解析。1嗯,名字解析的順序其實是定義在裡面的
/etc/nsswitch.conf
,裡面一般都有這個入口:hosts: files dns
這意味著“嘗試文件(
/etc/hosts
);如果失敗,請嘗試 DNS。”但這個順序可以改變或擴大。
2(現在)hosts 文件包含的文本行由第一個文本欄位中的 IP 地址和一個或多個主機名組成。每個欄位都由空格分隔 - 由於歷史原因,通常首選製表符,但也使用空格。可能包括註釋行;它們由位於此類行的第一個位置的八字形 (#) 表示。文件中的完全空白行將被忽略。例如,典型的 hosts 文件可能包含以下內容:
127.0.0.1 localhost loopback ::1 localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local 192.168.0.8 mycomputer.lan 10.0.0.27 mycomputer.lan
此範例包含系統環回地址及其主機名的條目,第一行是 hosts 文件的典型預設內容。第二行有幾個額外的(可能只在本地系統中有效)名稱。該範例說明一個 IP 地址可能有多個主機名(localhost 和 loopback),並且一個主機名可以映射到 IPv4 和 IPv6 IP 地址,分別如第一行和第二行所示。一個名稱 (
mycomputer.lan
) 可以解析為多個地址 (192.168.0.8 10.0.0.27
)。但是,在這種情況下,使用哪一個取決於為電腦設置的路由(及其優先級)。