DNS 服務器基礎

DNS 服務器基礎

 

1、DNS簡介

DNS(Domain Name System,域名系統)是因特網的一項服務;web

DNS 是將域名和IP地址相互映射的一個分佈式數據庫;數據庫

DNS 是一種應用層協議,使用UDP和TCP的53端口緩存

一、DNS域命名空間

DNS域命名空間是一種層次結構,通常可分爲根域、頂級域、二級域、子域以及主機名;服務器

 

1)根域
使用「.」表示,位於域命名空間層次結構的最高層;
目前分佈於全世界的根服務器只有13臺,所有由Internet網絡信息中心(InterNIC)管理,在根域服務器中只保存了其下層的頂級域的DNS服務器名稱和IP地址對應關係;
2)頂級域(TLD,Top Level Domain)
頂級域位於根域下層,能夠分爲兩類:組織域(.com,.net,.org,.gov,.edu,.mil等)和國家域(.iq,.tw,.hk,.jp,.cn等);
3)二級域
二級域位於頂級域下層,是指爲了在Internet上使用而註冊到我的或企事業單位的域名;
4)子域
子域是根據具體狀況從二級域中按部門或地理位置建立;
5)主機名
位於DNS域命名空間的最低層,主要指計算機的主機名;
注意:FQDN(Full Qualified Domain Name,徹底合格域名)包括域名和主機名網絡

二、DNS名稱解析方式

1)正向解析:由域名查找IP地址;
2)反向解析:由IP地址查找域名;
注意:兩者的命名空間不在同一個空間,不是同一棵樹,所以也不是同一個解析庫;dom

三、DNS查詢

1)遞歸查詢
當DNS服務器接收到查詢請求時,不論成功或失敗,都會作出對應的響應(發生在DNS客戶端與DNS服務器之間);
2)迭代查詢
DNS服務器根據本身的高速緩存或區域的數據,以最佳結果響應;若是服務器沒法解析,它可能返回一個指針;指針指向下級域名的DNS服務器,繼續該過程,直到找到擁有所查詢名字的DNS服務器,或知道出錯、超時爲止(發生在DNS服務器之間);分佈式

四、一次完整的DNS查詢過程

 


Client----->hosts文件----->DNS Local Cache----->DNS Server (recursion,遞歸)----->工具

  • 若爲本身負責解析的域:直接查詢數據庫並返回答案;
  • 若不是本身負責解析的域:Server Cache----->iteration(迭代)

五、解析答案

  • 確定答案
  • 否認答案:不存在查詢的鍵,所以,不存在與之對應的值;

 

  • 權威答案:由直接負責的DNS服務器返回的答案;
  • 非權威答案

 

2、DNS服務器的類型

負責解析至少一個域:oop

  • 主DNS服務器
  • 輔助DNS服務器

不負責域解析:測試

  • 緩存DNS服務器

1)主-輔DNS服務器

  • 主DNS服務器:維護所負責解析的域數據庫的那臺服務器,讀寫操做都可進行;
  • 輔助DNS服務器:從主DNS服務器或其餘的從DNS服務器那裏「複製」一份解析庫,但只能進行讀操做;

2)「複製」操做的實現方式

  • 序列號:serial,也便是數據庫的版本號;主服務器數據庫內容發生變化時,其版本號遞增;
  • 刷新時間間隔:refresh,從服務器每次到主服務器檢查序列號更新情況;
  • 重試時間間隔:retry,從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;
  • 過時時長:expire,從服務器始終聯繫不到主服務時,多久以後放棄從主服務器同步數據,並中止提供服務;
  • 否認答案的緩存時長:negative answer ttl;

注意:主服務器數據庫發生變化時,主服務器會「通知」從服務器隨時更新數據;

3)區域傳送

  • 全量傳送:axfr,傳送整個數據庫;
  • 增量傳送:ixfr,僅傳送變化的數據;

注意:區域(zone)和域(domain)的區別:
區域爲物理概念,域爲邏輯概念;
如bruce.com域包括正向解析庫(FQDN--->IP)和反向解析(IP--->FQDN),每一個解析庫即爲一個解析區域;

 

3、BIND 簡介

BIND(Berkeley Internet Name Domain)是由伯克利大學研發的,是當前互聯網上最長使用的DNS服務器軟件,如今由ISC(Internet Systems Consortium)負責開發與維護;

一、bind 程序包

  • bind:提供dns server程序以及幾個經常使用的測試程序;
  • bind-utils:bind客戶端程序集,例如dig,host,nslookup等;
  • bind-libs:被bind和bind-utils包中的程序共同用到的庫文件;
  • bind-chroot:選裝,讓named運行於jail模式下;

 注意: 

  • dns:協議;
  • bind:dns協議的一種軟件實現 ;
  • named:bind程序運行的進程名;

bind 程序安裝完成後,默認便可做爲緩存名稱服務器使用;

 

二、bind 配置文件

1)bind 的主配置文件 /etc/named.conf

主配置文件格式:

  • 全局配置段 options {...} 
  • 日誌配置段 logging {...}
  • 區域配置段 zone {...}:配置那些由本機負責解析的區域或轉發的區域;

注意:每一個配置語句必須以分號結尾;

2)bind 的區域解析庫文件

bind 的解析庫文件在 /var/named/ 目錄下,通常文件名 ZONE_NAME.zone

注意:

a. 一臺DNS服務器能夠同時爲多個區域提供解析;

b. 必需要有根區域解析庫文件 named.ca
c. 還應該有localhost和127.0.0.1兩個區域解析庫文件,正向的爲named.localhost,反向的爲named.loopback

 

3)資源記錄(Resource Record,簡稱RR)

資源記錄類型有:A、AAAA、PTR、SOA、NS、CNAME、MX;

  • SOA:Start Of Authority,起始受權記錄;一個區域解析庫有且只有一個SOA記錄,且必須放在第一條;
  • NS:Name Service,域名服務記錄;一個區域解析庫能夠有多個NS記錄,其中一個爲主記錄;
  • A:Address,地址記錄;FQDN--->IPv4;
  • AAAA:地址記錄;FQDN--->IPv6;
  • CNAME:Canonical Name,別名記錄;
  • PTR:Pointer;IP--->FQDN;
  • MX:Mail eXchanger,郵件交換器;有優先級,爲0~99,數字越小優先級越高;

 

資源記錄的定義格式:

name [TTL] IN RR_TYPE value

a. SOA

name:當前區域名稱,例如「bruce.com.」或「2.3.4.in-addr.arpa.」;
value:有多部分組成:

  • 當前區域的區域名稱,也可使用主DNS服務器名稱;
  • 當前區域管理員的郵箱地址,但地址中不能使用@符號,通常用.代替;
  • 主從服務協調屬性的定義以及否認答案的TTL;

示例:

1 bruce.com.  86400  IN  SOA  bruce.com. admin.bruce.com.(
2             2017010801    ;seial
3             2H                  ;refresh
4             10M                ;retry
5             1W                 ;expire
6             1D                  ;negative answer ttl
7 )    

 

b. NS

name:當前區域的區域名稱;
value:當前區域的某DNS服務器的名稱,如ns.bruce.com.;

示例:

1 bruce.com. 86400 IN NS ns1.bruce.com.
2 bruce.com. 86400 IN NS ns2.bruce.com.

注意:一個區域能夠有多個ns記錄;

 

c. MX

name:當前區域的區域名稱;
value:當前區域某郵件交換器的主機名;

示例:

1 bruce.com. IN MX 10 mx1.bruce.com.
2 bruce.com. IN MX 20 mx2.bruce.com.

注意:MX記錄能夠有多個,但每一個記錄的value以前應該有一個數字表示其優先級;

 

d. A

name:某FQDN,如www.bruce.com.;
value:某IPv4地址;

示例:

1 www.bruce.com. IN A 1.1.1.1
2 www.bruce.com. IN A 1.1.1.2
3 bbs.bruce.com. IN A 1.1.1.1

 

e. AAAA

name:FQDN;
value:IPv6;

 

f. PTR

name:IP地址,有特定格式,即IP地址反過來寫,並且需加特定後綴;如1.2.3.4的記錄應該寫爲4.3.2.1.in-addr.arpa.;
value:FQDN;

示例:

1 4.3.2.1.in-addr.arpa. IN PTR www.bruce.com.

 

g. CNAME

name:FQDN格式的別名;
value:FQDN格式的正式名稱;
示例:

1 web.bruce.com. IN CNAME www.bruce.com.

 

注意:

  • TTL能夠從全局繼承;
  • @表示當前區域的名稱;
  • 相鄰的兩條記錄其name相同時,後面的能夠省略;
  • 對於正向區域來講,各MX、NX等類型記錄的value爲FQDN,此FQDN應該有一個A記錄;

 

4、DNS 工具

一、DNS 排錯工具

1)rndc
rndc工做在TCP的953端口,默認監聽於127.0.0.1地址,所以僅容許本地使用;

1 rndc status
2 rndc flush
3 rndc reload

 

2)named-checkconf

1 named-checkconf [/etc/named.conf]

 

3)named-checkzone

1 named-checkzone [ZONE_NAME] [ZONE_FILE]

 

二、DNS 測試工具

1)dig

注意:dig用於測試DNS系統,所以不會查詢hosts文件;

 1 dig [query options] [-t RR_TYPE] name [@SERVER]
 2   query options:
 3         +[no]trace:跟蹤解析過程;
 4         +[no]recurse:進行遞歸解析;
 5 
 6 dig -x IP
 7     反向解析測試
 8 
 9 dig -t axfr DOMAIN [@server]
10     模擬徹底區域傳送    

 

2)host

1 host [-t RR_TYPE] name [server]

 

3)nslookup

1 nslookup [options] [name] [server]
2 
3 交互模式
4 nslookup>
5     server IP:以指定IP爲DNS服務器進行查詢;
6     set q=RR_TYPE:要查詢的資源記錄類型;
7     name:要查詢的名稱;
相關文章
相關標籤/搜索