DNS 是域名系統 (Domain Name System) 的縮寫,它是由解析器和域名服務器組成的
要知道DNS是什麼,需要從域這個概念開始瞭解
這裏的域指並非平時我們所說的地理域之類,而指的是"名稱域"——"名稱空間"
名稱域/名稱空間可以"倒置的樹"來解釋
"倒置的樹"由根域開始,接着根的下一層是各個頂級域,每個頂級域之下又有多個二級域,每個二級域下又有子域,以此類推下去...最後到主機名
根域(.)
頂級域(Top Level Domain, TLD, tld)
組織域:標識域的組織結構;
com, net, org, gov, edu, mil, ...
地理域:標識域所在的地理範圍;
tw, hk, cn, jp, iq, ...
反向域:in-addr.arpa
二級域及下級子域:由企業,組織,團體或個人維護的域;
主機名:標識特定域中的特定主機名稱;
瞭解了域的概念後,就要說域的表示方法:
FQDN:Full Qualified Domain Name,完全合格域名;主機名的完整名稱;
從枝葉到根域的順序書寫——從主機名.最低級的子域.次級的子域.(以此類推到)子域.二級域.頂級域.(根)
其中最後的"."是根域的,其餘的"."表示域與域之間的連接符號
每個名稱域都對應着某個地址,而這時候就需要通過解析到某個的地址;
解析的方式有兩種:正向解析:FQDN --> IP
反向解析:IP --> FQDN
注意:正向解析和反向解析所使用的名稱屬於不同空間,不是同一棵樹,也不是同一個數據庫;
這裏的數據庫就存放在服務器中,而這裏的服務器就跟DNS有關係了。
DNS(Domain Name Server,域名服務器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器。
而這服務器中還存放了域名與IP地址之間轉換的數據內容,是用於完成名稱解析工作的,我們稱爲"資源記錄";即:Resource Record,簡稱爲"RR";
資源記錄我們又可以分爲下列幾種:
A,AAAA,PTR,SOA,NS,CNAME,MX
下面介紹各個資源類型:
SOA:Start Of Authority,起始授權記錄;
在任何一個區域數據庫中必須有且只能有一條SOA記錄,而且該記錄必須放在數據庫中的第一條;其中包括:
域名;
數據緩存的時間;
NS服務器的主機名;
管理員的郵箱地址;
序列號,刷新時間間隔,重試時間間隔,過期時間及否定答案的緩存時間;
A:Address,主機記錄;
標識從完全合格域名到IPv4地址的映射關係;
AAAA:Address,主機記錄;
標識從完全合格域名到IPv6地址的映射關係;
PTR:PoinTeR,反向指針記錄;
標識從IP地址到完全合格域名的映射關係;
NS:Name Server,名稱服務器記錄;
標識當前域中被授權的名稱服務器;
CNAME:Conanical Name,別名記錄;
標識從完全合格域名到完全合格域名的映射關係;
MX:Mail eXchange,郵件交換記錄;
標識域中的郵件服務器的主機名稱,標識從域名到完全合格域名的映射關係;
MX資源記錄包含了一個優先級,0-65535,數字越小優先級越高;
介紹完不同的資源記錄類型後,我們還需要熟悉這些資源記錄在數據庫(服務器)中是如何存在的,也就是它們是如何書寫的
格式:DN|FQDN [TTL] IN RR_TYPE VALUE
TTL:TTL是以秒爲默認時間單位的時間標識符號,如果省略,則從全局定義的宏中繼承,通常是$TTL;
RR_TYPE:資源記錄類型;
VALUE:變量(ip地址...)
接下來介紹的是不同的資源記錄根據格式的書寫及注意事項:
SOA:
DN|FQDN:當前域的域名,如:qhdlink.com.
或者使用"@"代替域名;@符號會使用主配置文件中定義的域名來代替;
VALUE:由以下幾個部分組成:
1.當前域中的主名稱服務器的FQDN;ns.qhdlink.com.
2.當前域的數據庫管理員的郵箱地址,需要使用"."來代替"@";root.qhdlink.com.
3.主名稱服務器進行區域傳送的相關時間參數的定義:
(Serial Refresh Retry Expeir TTL)
(Serial;
Refresh;
Retry;
Expeir;
TTL;)
示例:
qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. (
2018040601;
1H;
10M;
1W;
5M;)
@ 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com. (2018040601 1H 10M 1W 5M)
NS記錄:
name:當前域的域名;可以寫完全合格域名FQDN;可以寫@佔位;還可以省略不寫,如果省略不寫,則意味着該資源記錄的名稱與其上一條資源記錄的名稱相同;
value:當前區域內被授權的名稱服務器的FQDN;
注意:
1.一個域中有多少臺名稱服務器就需要寫多少個NS資源記錄;
2.每個NS資源記錄都必須要有一個A記錄與之對應;
示例:
qhdlink.com. IN NS ns1.qhdlink.com.
@ IN NS ns1
IN NS ns2
MX記錄:
name:當前域的域名;可以寫完全合格域名FQDN;可以寫@佔位;還可以省略不寫,如果省略不寫,則意味着該資源記錄的名稱與其上一條資源記錄的名稱相同;
RR_TYPE:MX priority
value:當前域中有效的郵件服務器的FQDN;
注意:
1.一個域中,可以有多條MX資源記錄,通過優先級的大小決定被使用的次序;
2.每個MX資源記錄都必須對應一條A記錄;
示例:
qhdlink.com. IN MX 10 mail.qhdlink.com.
@ IN MX 10 mail
A記錄:
name:域中指定主機的FQDN;
value:該主機上真實有效的IPv4地址;
示例:
www.qhdlink.com. 43200 IN A 192.168.1.100
www 43200 IN A 192.168.1.100
泛域名:
*.qhdlink.com. 43200 IN A 192.168.1.100
* 43200 IN A 192.168.1.100
直接域名解析:
qhdlink.com. 43200 IN A 192.168.1.100
通常,泛域名或直接域名都是爲了防止用戶寫錯名稱而導致無法給出正確的解析結果;
CNAME記錄:
name:域中指定主機的別名;
value:真正的主機的FQDN;
示例:
ftp.qhdlink.com [86400] IN CNAME www.qhdlink.com.
ftp [86400] IN CNAME www
PTR記錄:
name:將IP地址的四個八位組反過來,將IP地址中的主機部分加上反向域的域名後綴;
如果IP地址是:172.16.1.100/16,其對應的名稱的寫法:
100.1 IN PTR www.qhdlink.com.
100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com.
value:域中與指定的IP地址對應的FQDN;
注意:value部分必須寫FQDN,絕對不能省略域名後綴,最後必須以"."結尾;否則bind程序會將反向域的域名補在名稱之後