1. 程式人生 > >Linux下是如何配置解析主機名的(包括DNS服務)

Linux下是如何配置解析主機名的(包括DNS服務)

我們要訪問DNS服務,必需知道DNS伺服器的IP地址,Linux使用/etc/resolv.conf檔案來存放DNS伺服器的IP地址。下面我們來了解下/etc/resolv.conf檔案

它的格式很簡單,每行以一個關鍵字開頭,後接一個或多個由空格隔開的引數。
resolv.conf的關鍵字主要有四個,分別是:
nameserver //定義DNS伺服器的IP地址
domain //定義本地域名
search //定義域名的搜尋列表
sortlist //對返回的域名進行排序

下面我們給出一個/etc/resolv.conf的示例:

domain  51osos.com
search www.51osos.com 51osos.com nameserver 202.102.192.68 nameserver 202.102.192.69

最主要是nameserver關鍵字,如果沒指定nameserver就找不到DNS伺服器,其它關鍵字是可選的。

nameserver:表示解析域名時使用該地址指定的主機為域名伺服器。其中域名伺服器是按照檔案中出現的順序來查詢的,且只有當第一個nameserver沒有反應時才查詢下面的nameserver。

domain:宣告主機的域名。很多程式用到它,如郵件系統;當為沒有域名的主機進行DNS查詢時,也要用到。如果沒有域名,主機名將被使用,刪除所有在第一個點( .)前面的內容。

search:它的多個引數指明域名查詢順序。當要查詢沒有域名的主機,主機將在由search宣告的域中分別查詢。
domain和search不能共存,如果同時存在,後面出現的將會被使用

sortlist:允許將得到域名結果進行特定的排序。它的引數為網路/掩碼對,允許任意的排列順序。

一般情況下,使用DNS服務來訪問Internet上的某臺主機,但如果我們通過主機名來訪問本地區域網上的機器,則可以通過本地的靜態檔案來獲得該機器的IP地址了。

Linux將目標目標主機名及對應的IP地址儲存在/etc/hosts配置檔案中。當需要查詢某個主機名對應的IP地址時,程式首先檢查這個檔案。如我的機器上的/etc/hosts檔案的內容如下:

127.0.0.1   localhost
127.0.1.1   Erazer

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

關於IPV6,暫時不去了解,目前我還沒用過,其中第一項指出本地迴路之地127.0.0.1的名稱是localhost,第二項則描述了我的膝上型電腦的本地IP地址127.0.1.1對應的主機名是Erazer,這樣我就可以通過ping Erazer訪問到我的主機了。

如果程式在/etc/hosts中未找到目標主機名對應的IP地址,它將動用前面說到的DNS解析服務,使用者可以通過修改/etc/host.conf檔案來自定義系統解析主機名的方法和順序(一般是先訪問本地檔案/etc/hosts,再訪問DNS服務),我的電腦上的該檔案內容如下:

order hosts,bind
multi on

其中第一行表示優先使用/etc/hosts檔案來解析主機名,失敗後再使用DNS服務(bind)。第二行表示如果/etc/hosts檔案中一個主機名對應多個IP地址,那麼解析的結果就包含多個IP地址。/etc/host.conf通常僅包含這兩行,但它支援更多選項,具體的使用可以參考其man手冊。