1. 程式人生 > >Linux resolv.conf簡介

Linux resolv.conf簡介

1.簡介

resolv.conf是各種作業系統域名系統解析器(DNS Resolver)的配置檔案。每當一個程式需要通過域名來訪問Internet上面的其它主機時,需要利用Resolver庫函式將域名轉換成對應的IP,然後才可進行訪問。

注意,域名系統解析器(DNS Resolver)並非一個可執行程式,而是C語言的一系列庫函式,用於解析resolv.conf獲取域名對應的IP。關於Resolver的解釋,可以使用man 3 resolver檢視幫助手冊。

2.配置詳情

resolv.conf的配置主要包含如下幾項:
(1)nameserver x.x.x.x。用於配置DNS伺服器,可以使用多個nameserver指定多個DNS伺服器。
(2)search domain1 domain2

baidu.com。該選項可以用來指定多個域名,中間用空格或tab鍵隔開。其作用是當訪問的域名不能被DNS解析時,resolver會將該域名加上search指定的引數,重新請求DNS,直到被正確解析或試完search指定的域名列表為止。比如:

#ping news
PING news.baidu.com (74.125.128.101) 56(84) bytes of data.
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=1 ttl=47 time=78.9 ms
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=2 ttl=47 time=63.6 ms

(3)domain mydomain.com。用於定義本地域名。在沒有設定search的情況下,search預設為domain的值。
(4)sortlist IP/netmask IP。允許將得到的域名結果進行特定的排序。它的引數為IP或掩碼-IP對,掩碼是可選的,使用斜槓分隔。比如:

sortlist 130.155.160.0/255.255.240.0 130.155.0.0

(5)options。用於配置resolver的內建變數,不是resolv.conf的常見配置。語法格式如下:

options [option] ...

option部分取值如下:

ndots:[n]:設定呼叫res_query(
)解析域名時域名至少包含的點的數量 timeout:[n]:設定等待dns伺服器返回的超時時間,單位秒。預設值RES_TIMEOUT=5,參見<resolv.h> attempts:[n]:設定resolver向DNS伺服器發起域名解析的請求次數。預設值RES_DFLRETRY=2,參見<resolv.h> rotate:在_res.options中設定RES_ROTATE,採用輪詢方式訪問nameserver,實現負載均衡 no-check-names:在_res.options中設定RES_NOCHECKNAME,禁止對傳入的主機名和郵件地址進行無效字元檢查,比如下劃線(_),非ASCII字元或控制字元

3.注意事項

(1)search和domain不能共存,如果同時存在,以最後出現的為準。
(2)分號(;)或井號(#)開頭的行為註釋行;
(3)每一個配置項必須單獨成行,且以關鍵詞開頭,空格分隔配置值。

4.示例

下面是一個resolv.conf的內容。

nameserver 202.102.192.68
nameserver 202.102.192.69
search qq.com baidu.com
options  no-check-names
options  attempts:1
options  timeout:1

參考文件

[1]man 3 resolver
[2]man 5 resolv.conf
[3]resolv.conf:search、domain、nameserver解釋