Linux 網路/配置您的名稱解析器
`名稱解析器` 是 Linux 標準庫的一部分。它的主要功能是提供將人類友好的主機名(如 `ftp.funet.fi`)轉換為機器友好的 IP 地址(如 128.214.248.6)的服務。
您可能熟悉網際網路主機名的外觀,但可能不理解它們是如何構造或分解的。網際網路域名本質上是分層的,即它們具有樹狀結構。 `域名` 是一個家族或一組名稱。 `域名` 可以分解為 `子域名`。 `頂級域名` 是不是子域名的域名。頂級域名在 RFC-920 中指定。一些最常見的頂級域名的例子是
COM
Commercial Organizations
EDU
Educational Organizations
GOV
Government Organizations
MIL
Military Organizations
ORG
Other organizations
NET
Internet-Related Organizations
Country Designator
these are two letters codes that represent a particular country.
出於歷史原因,大多數屬於非國家頂級域名的域名都由美國境內的組織使用,儘管美國也有自己的國家程式碼 `.us`。這對於 .com 和 .org 域名來說已經不再是事實,它們通常由非美國公司使用。
這些頂級域名中的每一個都有子域名。基於國家名稱的頂級域名通常會進一步分解為基於 com、edu、gov、mil 和 org 域名的子域名。因此,例如您最終會得到:com.au 和 gov.au 用於澳大利亞的商業和政府組織;請注意,這不是普遍規律,因為實際策略取決於每個域名的命名機構。
下一級劃分通常代表組織的名稱。進一步的子域名在性質上有所不同,通常下一級子域名是基於組織的部門結構,但它可以基於組織的網路管理員認為合理和有意義的任何標準。
最左邊的名稱部分始終是分配給主機機的唯一名稱,稱為 `主機名`,主機名右側的名稱部分稱為 `域名`,完整名稱稱為 `完全限定域名`。
以 Terry 的主機為例,完全限定域名是 `perf.no.itg.telstra.com.au`。這意味著主機名是 `perf`,域名是 `no.itg.telstra.com.au`。域名基於他所在的國家澳大利亞的頂級域名,並且由於他的電子郵件地址屬於商業組織,因此 `.com` 作為下一級域名存在。公司名稱是(曾經是)`telstra`,他們的內部命名結構基於組織結構,在這種情況下,該機器屬於資訊科技部門網路運營部門。
通常,名稱相當短;例如,我的 ISP 叫做 ``systemy.it 和我的非盈利組織叫做 ``linux.it,沒有任何 com 和 org 子域名,因此我自己的主機只叫做 ``morgana.systemy.it,rubini@linux.it 是一個有效的電子郵件地址。請注意,域名所有者有權註冊主機名以及子域名;例如,我所屬的 LUG 使用域名 pluto.linux.it,因為 linux.it 的所有者同意為 LUG 開放一個 子域名。
您需要知道您的主機名將屬於哪個域名。名稱解析器軟體透過向 `域名伺服器` 傳送請求來提供此名稱轉換服務,因此您需要知道可以使用的本地名稱伺服器的 IP 地址。
您需要編輯三個檔案,我將依次介紹每個檔案。
/etc/resolv.conf 是名稱解析器程式碼的主要配置檔案。它的格式非常簡單。它是一個文字檔案,每行一個關鍵字。通常使用三個關鍵字,它們是
domain
this keyword specifies the local domain name.
search
this keyword specifies a list of alternate domain names to
search for a hostname
nameserver
this keyword, which may be used many times, specifies an IP
address of a domain name server to query when resolving names
一個示例 /etc/resolv.conf 可能如下所示
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
此示例指定要附加到未限定名稱(即不帶域名的主機名)的預設域名是 maths.wu.edu.au,如果在該域名中找不到主機,也要嘗試直接使用 wu.edu.au 域名。提供了兩個名稱伺服器條目,名稱解析器程式碼可以呼叫每個條目來解析名稱。
/etc/host.conf 檔案用於配置控制名稱解析器程式碼行為的一些專案。此檔案的格式在 `resolv+'` 手冊頁中詳細描述。在幾乎所有情況下,以下示例都適合您
order hosts,bind
multi on
此配置告訴名稱解析器在嘗試查詢名稱伺服器之前檢查 /etc/hosts 檔案,並返回在 /etc/hosts 檔案中找到的主機的所有有效地址,而不僅僅是第一個地址。
/etc/hosts 檔案用於放置本地主機的名稱和 IP 地址。如果將主機放在此檔案中,則無需查詢域名伺服器即可獲取其 IP 地址。這樣做的缺點是,如果該主機 IP 地址發生更改,您必須自己維護此檔案。在大多數系統中,此檔案中通常只包含環回介面的條目和本地主機名。一些系統,主要是開發人員使用的工作站,使用 /etc/hosts 指定本地網路上沒有完全限定域名的測試伺服器的地址。其他工作站可能會將其用作全球資訊網內容過濾機制,透過將其對映到 0.0.0.0 來阻止解析傳播惡意軟體或提供跨不同網站跟蹤使用者操作指令碼的伺服器。
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 this.host.name
Linux 允許在每行中指定多個主機名,如第一個條目所示,它是環回介面的標準條目。
如果您想執行本地名稱伺服器,您可以輕鬆做到。請參考 DNS-HOWTO 和您 BIND(Berkeley Internet Name Domain)版本中包含的任何文件。