DNS(Domain Name System,域名系統)是因特網的一項服務;web
DNS 是將域名和IP地址相互映射的一個分佈式數據庫;數據庫
DNS 是一種應用層協議,使用UDP和TCP的53端口;緩存
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,徹底合格域名)包括域名和主機名;網絡
1)正向解析:由域名查找IP地址;
2)反向解析:由IP地址查找域名;
注意:兩者的命名空間不在同一個空間,不是同一棵樹,所以也不是同一個解析庫;dom
1)遞歸查詢
當DNS服務器接收到查詢請求時,不論成功或失敗,都會作出對應的響應(發生在DNS客戶端與DNS服務器之間);
2)迭代查詢
DNS服務器根據本身的高速緩存或區域的數據,以最佳結果響應;若是服務器沒法解析,它可能返回一個指針;指針指向下級域名的DNS服務器,繼續該過程,直到找到擁有所查詢名字的DNS服務器,或知道出錯、超時爲止(發生在DNS服務器之間);分佈式
Client----->hosts文件----->DNS Local Cache----->DNS Server (recursion,遞歸)----->工具
負責解析至少一個域:oop
不負責域解析:測試
1)主-輔DNS服務器
2)「複製」操做的實現方式
注意:主服務器數據庫發生變化時,主服務器會「通知」從服務器隨時更新數據;
3)區域傳送
注意:區域(zone)和域(domain)的區別:
區域爲物理概念,域爲邏輯概念;
如bruce.com域包括正向解析庫(FQDN--->IP)和反向解析(IP--->FQDN),每一個解析庫即爲一個解析區域;
BIND(Berkeley Internet Name Domain)是由伯克利大學研發的,是當前互聯網上最長使用的DNS服務器軟件,如今由ISC(Internet Systems Consortium)負責開發與維護;
注意:
bind 程序安裝完成後,默認便可做爲緩存名稱服務器使用;
主配置文件格式:
注意:每一個配置語句必須以分號結尾;
bind 的解析庫文件在 /var/named/ 目錄下,通常文件名 ZONE_NAME.zone
注意:
a. 一臺DNS服務器能夠同時爲多個區域提供解析;
b. 必需要有根區域解析庫文件 named.ca;
c. 還應該有localhost和127.0.0.1兩個區域解析庫文件,正向的爲named.localhost,反向的爲named.loopback;
資源記錄類型有:A、AAAA、PTR、SOA、NS、CNAME、MX;
資源記錄的定義格式:
name [TTL] IN RR_TYPE value
a. SOA
name:當前區域名稱,例如「bruce.com.」或「2.3.4.in-addr.arpa.」;
value:有多部分組成:
示例:
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.
注意:
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]
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:要查詢的名稱;