Linux本地dns配置文件詳解
我們在linux下設置dns時,一般都是在/etc/resolv.conf文件進行設置,一般也就設置幾條nameserver而已,其實該文件還是可以根據選項進行優化的。
www.2cto.com
resolv.conf文件中包含的信息,在他們第一次被調用的過程中被解析器例程所讀取。該文件是人們可讀的,包含的關鍵字列表值提供了不同類型的解析器信息。如果該文件不存在,name server將會查詢本機的域名解析配置。
nameserver Name server IP address
name server應該是一個可以被解析的互聯網地址,也就是你設置的dns服務器地址,最大應該有MAXNS (currently 3, see<resolv.h>)個name server可以被列出來,每個name server都有nameserver關鍵字。如果列出多個name servers, 解析器會按照順序解析他們,如果沒有name server,則默認使用本地的配置。如果查詢失敗,算法會查詢接下來的name server, 直到查詢完所有的name server。
domain Local domain name.
設置本地域名,查詢在這個domain中的names可以相對於本地domain使用短名稱, 如果沒有設置domain,則會使用主機名來決定domain
search Search list for host-name lookup.
定義域名的搜索列表,搜索列表通常是本地域名,默認僅包含本地域名,不過可以通過在search關鍵子後面跟隨你希望域名來改變默認情況。如果解析器查詢不到他們的點,則會查詢每一個搜索路徑中的設置,直到匹配為止。 如果查詢的服務器不是在本地的,可能會有些慢並且會產生一些網絡流量, 如果在domain中的服務器不可用,查詢則會超時。search現在限制可以有6個domains,總共256個字符。
options
以下選項允許你對某些解析變量進行修改,語法類似:options xxx ...,其中xxx可以是如下選項:
debug sets RES_DEBUG in _res.options.
ndots:n
sets a threshold for the number of dots which must appear in a name given to res_query(3) before an initial absolute query will be made. The default for n is 1, meaning that if there are any dots in a name, the name will be tried first as an absolute name before any search list elements are appended to it. The value for this option is silently capped to 15. 這一段看的腦殘了....
timeout:n
解析器在查詢遠程name server時的超時時間,默認是5秒。
attempts:n
設置解析器在查詢name server失敗幾次後放棄該name server,默認上限是5。
rotate
這會導致在查詢時循環選擇nameserver中列出的服務器,從而負載均衡所有的nameserver,而不是讓所有的客戶端嘗試第一個列出的服務器
no-check-names
禁止現代BIND檢查輸入的主機名和電子郵件中的無效字符
edns0 (since glibc 2.6)
使支持RFC 2671Z中的dns擴展
single-request (since glibc 2.10)
自從版本2.9之後,glibc在執行查找IPV4和IPV6時是並行執行的,但是一些DNS服務器不能很好的處理這種情況,並顯示請求超時,次選項禁止glibc的並行查找,從而執行順序查找
domain和search關鍵字是互相排斥的,如果同時設置了這兩個關鍵字,則最後設置的生效。resolv.conf文件中的search關鍵字的值可以被LOCALDOMAIN環境變量鎖改變, options關鍵字則可以被環境變量RES_OPTIONS所改變。