Dns

/etc/hosts 的目的是什麼?

  • February 8, 2018

據我了解,該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)。但是,在這種情況下,使用哪一個取決於為電腦設置的路由(及其優先級)。

一些較舊的作業系統無法報告給定名稱的地址列表。

引用自:https://unix.stackexchange.com/questions/421491