本文主要論述DNS基本原理,BIND正反向解析、主從同步、子域授權及view
1、DNS基本原理
DNS:Domain Name Service,域名服務器,基於udp和tcp完成名稱解析服務
C/S架構的協議--客戶端、服務端;監聽於53/udp,53/tcp兩個端口;屬於應用層協議
BIND:Bekerley Internat Name Domain-->ISC
BIND是DNS在互聯網上最著名的實現,提供DNS和DHCP服務
DNS查詢類型:
遞歸查詢:一般客戶機和服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會向另外的DNS服務器發出查詢請求,得到結果後轉交給客戶機;
迭代查詢:一般DNS服務器之間屬迭代查詢,如:若DNS2不能響應DNS1的請求,則它會將DNS3的IP給DNS2,以便其再向DNS3發出請求;
名稱服務器:域內負責解析本域內的名稱的主機,通常用ns#(name server)表示
根服務器:從A至M編號,其中:美國10個(1個主根和9個輔根)、歐洲2個(位於英國和瑞典)、亞洲1個(位於日本)。1個爲主根服務器,放置在美國弗吉尼亞州的杜勒斯,由美國VeriSign公司負責運營維護,其餘12個均爲輔根服務器。
因爲迭代查詢極耗資源,所以DNS服務器通常只爲自己組織內的客戶端做解析,通過在權限上加以限制來實現
DNS解析類型
FQDN-->IP(正向解析)
FQDN:Full Qualified Domain Name--完全限定域名
IP-->FQDN(反向解析)
反向解析難度極大,目前應用:郵件服務器根據反向解析,拒絕接收來自沒有域名的站點發來的信息以降低垃圾郵件的數量
注意:正、反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;各需要一個解析庫來分別負責本地域名的正向和反向解析
DNS服務器類型
主DNS服務器
從(輔助)DNS服務器
緩存DNS服務器
轉發器
主DNS服務器:維護所負責解析的域內的解析庫(解析庫由管理員維護)
序列號:解析庫的版本號;同步解析庫的前提:主服務器解析庫內容發生變化,其序列號遞增加1
刷新時長:從服務器向主服務器請求同步解析庫的時間間隔
重試時長:從服務器向主服務器請求同步解析庫失敗時,再次嘗試的時間間隔
過期時長:從服務器始終聯繫不到主服務器時,多久之後放棄從服務器角色,停止服務
否定應答的TTL:解析得到的否定答案的緩存時長
從DNS服務器:解析庫從主DNS服務器或其他DNS服務器“複製”(區域傳送)而來
區域傳送:全量傳送:傳送整個解析庫
增量傳送:傳送解析庫變化的那部分內容
緩存DNS服務器:不負責解析任何域,也不用註冊域名,用於幫助域內的客戶端向互聯網的DNS服務器發送請求,把結果返回給客戶端的同時在服務器上做一份緩存
2、BIND正反向解析
(1)基本概念
一次完整解析的流程
Client-->hosts文件-->DNS Service
Local Cache-->DNS Server(recursion)-->Server Cache-->iteration(迭代)
解析答案有兩種:
肯定答案 權威答案
否定答案 非權威答案
請求的條目不存在等原因導致無法返回結果
區域解析庫,由衆多RR組成
資源記錄:Resource Record--RR
記錄類型:A、AAAA、PTR、SOA、NS、CNAME、MX
資源記錄的類型標記了主機在域內處於什麼樣的角色上
SOA:Start OfAuthority,起始授權記錄;一個解析庫有且僅有一個SOA記錄,且必須爲解析庫的第一條記錄;定義了當前解析庫爲哪個區域所用,由誰負責;
A:internetAddress,FQDN-->IPv4
AAAA:internetAddress,FQDN-->IPv6
PTR:PoinTeR,IP-->FQDN
NS:NameServer,專用於標明當前區域的DNS服務器
CNAME:Canonical Name,別名記錄
MX:MaileXchanger,郵件交換器,標明該域實現郵件交換的主機是誰
資源記錄定義的格式
語法格式:name [TTL] IN rr_type value
TTL:解析得到結果在客戶端的緩存時長,在服務器端由管理員定義
注意:
(1)TTL可從全局繼承
(2)@可用於引用當前區域的名字
(3)相鄰的兩個資源記錄的name相同時,後續的可以省略
(4)同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以輪詢方式響應
(5)同一個值也可能定義多個不同的名字,僅表示通過多個不同的名字可以找到同一個主機
SOA:
name:當前區域的名字,例如“magedu.com.”;
value:有多部分組成
1、當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字
2、當前區域管理員的郵箱地址,但地址中不能使用@符號,一般用“.”替換
3、(主從服務協調屬性的定義以及否定答案的統一的TTL)
示例: [TTL]
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com.( 2015042301; 序列號(一般不要超過10位數字)
2H; 刷新時長
10M; 重試時長
1W; 過期時長
1D; 否定答案的TTL值
)
NS:
name:當前區域的名字
value:當前區域的某DNS服務器的名字,例如ns.magedu.com.
注意:
(1)一個區域可以有多個NS記錄
(2)對NS記錄而言,任何一個NS記錄後面的服務器名字,都應該在後續有一個A記錄
示例:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
MX:
name:當前區域的名字
value:當前區域的某郵件服務器(smtp服務器)的主機名
注意:
(1)一個區域內,MX記錄可以有多個,但是每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級,數字越小,優先級越高
(2)對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄
示例:
magedu.com. IN MX 10 mx1.magedu.com.
magedu.com. IN MX 10 mx2.magedu.com.
A:
name:某主機的FQDN,例如www.magedu.com.
value:主機名對應的主機地址
示例:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 1.1.1.2
同一個名字可以通過多條記錄個不同的值,DNS解析時會輪詢響應,即:第一次解析時解析爲1.1.1.1,第二次解析爲1.1.1.2,第三次1.1.1.1,第四次1.1.1.2。。。
mx1.magedu.com. IN A 1.1.1.3
mx2.magedu.com. IN A 1.1.1.3
同一個值有多個不同的名字
注意:
避免用戶寫錯名稱時給否定答案,可以通過泛域名解析進行解析至某特定地址
例如假設百度網址www.baidu.com對應的是1.1.1.4,若A記錄寫成“www.baidu.com IN A 1.1.1.4”,則用戶在輸入“ww.baidu.com”或“baidu.com”時會無法解析到1.1.1.4,得到否定答案,但如果在A記錄上加上兩條“*.baidu.com IN A 1.1.1.4”“baidu.com IN A 1.1.1.4”,就可以正確解析到1.1.1.4。這就是泛域名解析的應用
AAAA:
name: FQDN
value: IPv6
PTR:
name:IP,有特定格式,把IP反過來寫,例如1.2.3.4要寫作4.3.2.1;且有特定後綴:in-addr.arpa.,所以完整寫法爲4.3.2.1.in-addr.arpa.
value:FQDN
示例:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
簡寫成
4 IN PTR www.magedu.com.
注意:網絡地址及後綴可省略,主機地址仍然要反寫
CNAME:
name:別名的FQDN
value:正式名字的FQDN
示例:
web.magedu.com. IN CNAME www.magedu.com.
(2)正向解析
緩存名稱服務器的配置
dnssec:Domain Name System Security Extensions (DNSSEC)DNS安全擴展,是由IETF提供的一系列DNS安全認證的機制。它提供了一種來源鑑定和數據完整性的擴展,但不去保障可用性、加密性和證實域名不存在。
測試建議關閉dnssec,通過註釋下圖各選項來實現
除此之外,下圖選項也必須註釋掉或改爲any,否則服務器只允許本機查詢
(3)反向解析
反向解析測試
3、主從同步
6、主從服務器時間應該同步,可通過ntp進行
7、bind程序的版本應該保持一致,否則,應該從高,主低
4、子域授權
子域授權
分佈式數據庫的實現依賴於子域授權
正向解析區域的子域授權方法:
glue record:粘合記錄,將上級服務器和下級服務器建立起關聯
在父域的解析庫文件中定義一個子域的DNS:
ops.magedu.com. IN NS ns1.ops.magedu.com.
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A 1.1.1.1
ns2.ops.magedu.com. IN A 1.1.1.2
fin.magedu.com. IN NS ns1.fin.magedu.com.
fin.magedu.com. IN NS ns2.fin.magedu.com.
ns1.fin.magedu.com. IN A 3.1.1.1
ns2.fin.magedu.com. IN A 3.1.1.2
注意:子域和父域的服務器無須在一個網絡內,只要通過互聯網彼此間能通信即可
5、BIND view(視圖)
一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone;
每個view匹配一組客戶端;
多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件;
定義格式:
view VIEW_NAME {
match-clients { };
}
注意:
(1) 一旦啓用了view,所有的zone都只能定義在view中;
(2) 僅需在允許遞歸請求的客戶所在的view中定義根區域;
(3) 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表;