1. TLD:Top Level Domain 頂級域名
組織域:.com, .net, .org, .gov, .edu, .mil
國家域:.iq, .tw, .hk, .jp, .cn, …
2. 域名分級
根域名: .
頂級域名:.com .edu .gov .int .net .cn .us .jp ……..
二級域名:baidu.com microsoft.com jd.com qq.com aliyun.com edu.cn
三級域名:map.baidu.com nankai.edu.cn
四級域名:www.nankai.edu.cn cs.nankai.edu.cn
3. DNS查詢類型
DNS查詢類型分為遞歸查詢和迭代查詢;
遞歸查詢的意思是找了誰誰就一定要給出答案。那么允許遞歸的意思就是幫忙去找位置,如A對B允許遞歸,那么B詢問A時,A就去幫忙找答案;
迭代查詢的意思是如果A不允許對B遞歸,那么A就會告訴B的下一層域的地址讓B自己去找,如果迭代查詢最終得出了答案,那一定是權(quán)威答案;
4. DNS名稱解析方式
正向解析: hostname —> IP
訪問示例:
A客戶端請求www.linuxidc.com --> 由DNS服務(wù)器完成(1、查詢本地緩存記錄和hosts文件,如果有直接返回,2、向root"."發(fā)起查詢查詢,查詢.com的NS記錄返回其.com的NS服務(wù)器))--->再向.com的NS服務(wù)器查詢"linuxidc.com"域的NS服務(wù)器,并返回其結(jié)果值---->根據(jù)linuxidc的NS服務(wù)器記錄地址,---> NS服務(wù)器查詢其所對應(yīng)的www主機(jī)所對應(yīng)的IP地址,并返回給服務(wù)器。 正向解析的層級如下: . com linuxidc www 由于緩存是多層次緩存的,所以真正的查詢可能并沒有那么多步驟,上圖的步驟是完全沒有所需緩存的查詢情況。假如某主機(jī)曾經(jīng)向DNS服務(wù)器提交了www.linuxidc.com的查詢,那么在DNS服務(wù)器上除了緩存了www.linuxidc.com的記錄,還緩存了".com"和"linuxidc.com"的記錄,如果再有主機(jī)向該DNS服務(wù)器提交ftp.linuxidc.com的查詢,那么將跳過"."和".com"的查詢過程直接向linuxidc.com發(fā)出查詢請求。
反向解析: IP —> hostname
訪問示例:
A客戶端想查詢IP地址4.2.3.1反解記錄 ---> 由DNS發(fā)起請求查詢"."域,由"."返回其ip-addr.arpa的NS記錄,--> 服務(wù)器查詢ip-addr.arpa的NS服務(wù)器,由NS服務(wù)器返回"1"區(qū)域的NS服務(wù)器地址,并將結(jié)果返回到服務(wù)器--->服務(wù)器查詢"1"區(qū)域中的記錄,由"1"區(qū)域返回"2"區(qū)域中的NS記錄--->服務(wù)器向"2"區(qū)域查詢"3"區(qū)域,由2區(qū)域返回3區(qū)域中的NS記錄--->服務(wù)器再讓3區(qū)域中的NS記錄,3區(qū)域查詢并返回4的主機(jī)所對應(yīng)的主機(jī)地址。 反向解析的層級如下: . ip-addr.arpa 1 2 3 4
5. 反向解析的作用
DNS服務(wù)器里面有兩個區(qū)域,即“正向查找區(qū)域”和“反向查找區(qū)域”,正向查找區(qū)域就是通常所說的域名解析,反向查找區(qū)域即是IP反向解析,它得到作用是通過查找IP地址的PTR記錄來得到該IP地址指向的域名。要成功得到域名就必須有該IP地址的PTR記錄。PTR及記錄是郵件交換記錄的一種,郵件交換記錄中有A記錄和PTR記錄,A記錄解析名字到地址,PTR記錄解析地址到名字。
反向域名解析系統(tǒng)(Reverse DNS)的功能確保適當(dāng)?shù)泥]件交換記錄是生效的。反向域名解析與通常的正向域名解析相反,提供IP地址到域名的對應(yīng)。IP反向解析主要應(yīng)用到郵件服務(wù)器中來阻攔垃圾郵件。多數(shù)垃圾郵件發(fā)送者使用動態(tài)分配或者沒有注冊域名的IP地址來發(fā)送垃圾郵件,以避免追蹤,使用域名反向解析后,就可以大大降低垃圾郵件的數(shù)量。
比如用xxx@name.com這個郵箱給kasum@lwork.com發(fā)一封信,lwork郵件服務(wù)器接到這封信會查看這封信的信頭文件,這封信的信頭文件會顯示這封信是由哪個IP地址發(fā)出來的。然后根據(jù)這個IP地址進(jìn)行反向解析,如果反向解析到這個IP對應(yīng)的域名是name.com就接收這封郵件,如果反向解析這個IP沒有對應(yīng)到name.com,那么就拒絕這封郵件。
由于在域名系統(tǒng)中,一個IP地址可以對應(yīng)多個域名,因此從IP出發(fā)去找域名,理論上應(yīng)該遍歷整個域名樹,但是這在internet上是不現(xiàn)實的。為了完成逆向域名解析,系統(tǒng)提供一個特別域,該特別域稱為逆向解析域in-addr.arpa.這樣欲解析的IP地址就會被表達(dá)城一種像域名一樣的可顯示串形式,后綴以逆向解析域域名“in-addr.arpa”結(jié)尾。
測試反解(Windows方法)
C:UsersAdministrator>nslookup -qt=ptr 111.204.53.64 服務(wù)器: xd-cache-1.bjtelecom.net Address: 219.141.136.10 非權(quán)威應(yīng)答: 64.53.204.111.in-addr.arpa name = mail.ybjt.net [c:~]$ nslookup -qt=ptr 123.59.246.200 非權(quán)威應(yīng)答: 服務(wù)器: xd-cache-1.bjtelecom.net Address: 219.141.136.10 200.246.59.123.in-addr.arpa name = mail.ehousechina.com
測試反解(Linux方法)
[Allen@master ~]$ dig -x 123.59.246.200 | grep -A1 "ANSWER SECTION" ;; ANSWER SECTION: 200.246.59.123.in-addr.arpa. 21599 IN PTR mail.ehousechina.com. [Allen@master ~]$ dig -x 111.204.53.64 | grep -A1 "ANSWER SECTION" ;; ANSWER SECTION: 64.53.204.111.in-addr.arpa. 37 IN PTR mail.ybjt.net.
6. 權(quán)威答案與非權(quán)威答案
- 權(quán)威答案:直接負(fù)責(zé)這個域的NS服務(wù)器返回的答案;
- 非權(quán)威答案:服務(wù)器不負(fù)責(zé)這個域,只是因為之前解析過,所以緩存中有,返回緩存中的答案;將這種答案叫做非權(quán)威答案是因為,上級DNS可能隨時會更新,而所查詢的DNS服務(wù)器本地緩存不一定及時更新了,所以這時客戶端得到的答案可能是無效的;
7. 主/從DNS服務(wù)器
- 主DNS服務(wù)器:維護(hù)所負(fù)責(zé)解析的域的數(shù)據(jù)庫的服務(wù)器;讀寫操作均可進(jìn)行;主服務(wù)器的數(shù)據(jù)會不斷發(fā)生改變;
- 從DNS服務(wù)器:從主DNS服務(wù)器那里或其它的從DNS服務(wù)器那里“復(fù)制”一份解析庫;但只能進(jìn)行讀操作不能修改;從服務(wù)器的數(shù)據(jù)庫要隨時同步主服務(wù)器的數(shù)據(jù);
8. 主/從之間的同步方式
在主DNS服務(wù)器上定義數(shù)據(jù)庫的序號,當(dāng)要改變數(shù)據(jù)庫時,手動將序號增加,從DNS服務(wù)器每隔一段時間去同步時,根據(jù)這個序號判斷是否更新自己的數(shù)據(jù)庫(如果主DNS服務(wù)器的序號大,就要更新數(shù)據(jù));
配置文件中要需要定義一下幾個計時器:
- 刷新時間間隔refresh:表示從服務(wù)器多長時間去同步一次;
- 重試時間間隔retry:表示同步不到時等待多長時間以后再嘗試同步,重試時間要短于刷新時間;
- 過期時長expire:表示從服務(wù)器始終聯(lián)系不到主服務(wù)器時,多久之后放棄從主服務(wù)器同步數(shù)據(jù);停止提供服務(wù);
- negative answer ttl: 否定答案的緩存時長;
假如在刷新時間為5分鐘,從服務(wù)器剛刷新完數(shù)據(jù)庫,過1分鐘后,主服務(wù)器就更新了數(shù)據(jù)庫,那么在后面的4分鐘之內(nèi),從服務(wù)器與主服務(wù)器的數(shù)據(jù)庫是不同步的,如果在這段時間主服務(wù)器掛了,從服務(wù)器將沒辦法得到數(shù)據(jù),也沒辦法向客戶端提供最新數(shù)據(jù)服務(wù),所以用刷新時間解決數(shù)據(jù)庫更新同步是不完美的;
9. 主實時的通知從更新數(shù)據(jù)
主服務(wù)器數(shù)據(jù)庫有變化,會立即通知從服務(wù)器更新數(shù)據(jù)庫;這樣數(shù)據(jù)庫同步就有了兩種叫法:一種站在從服務(wù)器角度是拉取,一種是站在主服務(wù)器角度描述推送;
10. 區(qū)域傳送
當(dāng)主服務(wù)器數(shù)據(jù)庫量很大,有上萬個域名解析,從服務(wù)器來來取數(shù)據(jù)庫時,主服務(wù)器數(shù)據(jù)庫只更新了一條信息,從服務(wù)器則不用把整個數(shù)據(jù)庫同步一遍,而只需同步變化的數(shù)據(jù)即可;當(dāng)從服務(wù)器是新數(shù)據(jù)庫時才同步整個數(shù)據(jù)庫;這個同步的過程也叫區(qū)域傳送,有兩種方式,一種是全量傳送axfr,一種是增量傳送ixfr;
11. 創(chuàng)建主/從DNS,實現(xiàn)智能解析實驗
11.1. 基礎(chǔ)信息說明
- 二級域名:linuxidc.com、linuxmi.com
- linuxidc.com主DNS服務(wù)器:10.207.51.40:master.linuxidc.com
- linuxidc.com從DNS服務(wù)器:10.207.51.30; 10.207.51.31:slave.linuxidc.com
- linuxmi.com主DNS服務(wù)器:10.207.51.32:master.linuxmi.com
- web服務(wù)器:10.207.51.41:www.linuxidc.com—>www.a.linuxmi.com
- web服務(wù)器:10.207.51.42:www.linuxidc.com—>www.b.linuxmi.com
- client1:10.207.51.61
- client2:10.207.51.81
實現(xiàn)效果:當(dāng)client1訪問www.linuxidc.com時解析到10.207.51.41;當(dāng)client2訪問www.linuxidc.com是解析到10.207.51.42;
11.2. 配置主DNS服務(wù)器
[root@master ~]# yum install -y bind
11.2.1. 修改主配置文件
[root@master ~]# vim /etc/named.conf ##區(qū)域配置保持默認(rèn)即可 options { listen-on port 53 { 10.207.51.40; }; allow-query { any; }; forward first; forwarders { 10.207.51.32; }; recursion yes; allow-recursion { 10.0.0.0/8;172.16.0.0/15;192.168.0.0/16; }; dnssec-enable no; dnssec-validation no; forward first; forwarders { 8.8.8.8; }; //zone "." IN { // type hint; // file "named.ca"; //}; [root@master ~]# vim /etc/named.rfc1912.zones acl client1 { 10.207.51.61;10.207.51.30; }; acl client2 { 10.207.51.81;10.207.51.31; }; view "client1" { match-clients { "client1"; }; zone "." IN { type hint; file "named.ca"; }; zone "linuxidc.com" IN { type master; file "linuxidc.com.zone.c1"; allow-transfer { 10.207.51.30; }; allow-update { none; }; }; zone "51.207.10.in-addr.arpa" IN { type master; file "10.207.51.zone.c1"; allow-transfer { 10.207.51.30; }; allow-update { none; }; }; zone "linuxmi.com" IN { type forward; forward only; forwarders { 10.207.51.32; }; }; }; view "client2" { match-clients { "client2"; }; zone "." IN { type hint; file "named.ca"; }; zone "linuxidc.com" IN { type master; file "linuxidc.com.zone.c2"; allow-transfer { 10.207.51.31; }; allow-update { none; }; }; zone "51.207.10.in-addr.arpa" IN { type master; file "10.207.51.zone.c2"; allow-transfer { 10.207.51.31; }; allow-update { none; }; }; zone "linuxmi.com" IN { type forward; forward only; forwarders { 10.207.51.32; }; }; };
11.2.2. 創(chuàng)建zonefile
[root@master ~]# vim /var/named/linuxidc.com.zone.c1 $TTL 3600 $ORIGIN linuxidc.com. @ IN SOA master.linuxidc.com. admin.linuxidc.com. ( 2018111601 1H 30M 5H 1H ) IN NS master IN NS slave master IN A 10.207.51.40 slave IN A 10.207.51.31 www IN CNAME www.a.linuxmi.com. [root@master ~]# vim /var/named/linuxidc.com.zone.c2 $TTL 3600 $ORIGIN linuxidc.com. @ IN SOA master.linuxidc.com. admin.linuxidc.com. ( 2018111601 1H 30M 5H 1H ) IN NS master IN NS slave master IN A 10.207.51.40 slave IN A 10.207.51.31 www IN CNAME www.b.linuxmi.com. [root@master ~]# vim /var/named/10.207.51.zone.c1 $TTL 3600 $ORIGIN 51.207.10.in-addr.arpa. @ IN SOA master.linuxidc.com. admin.linuxidc.com. ( 2018111601 1H 30M 5H 1H ) IN NS master.linuxidc.com. IN NS slave.linuxidc.com. 40 IN PTR master.linuxidc.com. 31 IN PTR slave.linuxidc.com. 41 IN PTR www.linuxidc.com. [root@master ~]# vim /var/named/10.207.51.zone.c2 $TTL 3600 $ORIGIN 51.207.10.in-addr.arpa. @ IN SOA master.linuxidc.com. admin.linuxidc.com. ( 2018111601 1H 30M 5H 1H ) IN NS master.linuxidc.com. IN NS slave.linuxidc.com. 40 IN PTR master.linuxidc.com. 31 IN PTR slave.linuxidc.com. 42 IN PTR www.linuxidc.com.
11.2.3. 修改權(quán)限
[root@master ~]# cd /var/named/ [root@master named]# chown :named linuxidc.com.zone.c1 linuxidc.com.zone.c2 10.207.51.zone.c1 10.207.51.zone.c2 [root@master named]# chmod 640 linuxidc.com.zone.c1 linuxidc.com.zone.c2 10.207.51.zone.c1 10.207.51.zone.c2
11.2.4. 啟動服務(wù)
[root@master named]# systemctl start named [root@master named]# ss -antu | grep "<53" udp UNCONN 0 0 10.207.51.40:53 *:* tcp LISTEN 0 10 10.207.51.40:53 *:*
11.3. 配置備DNS服務(wù)器
[root@slave ~]# yum install -y bind
10.3.1. 修改主配置文件
[root@slave ~]# vim /etc/named.conf ##區(qū)域配置保持默認(rèn)即可 options { listen-on port 53 { 10.207.51.31; }; allow-query { any; }; forward first; forwarders { 10.207.51.32; }; recursion yes; allow-recursion { 10.0.0.0/8;172.16.0.0/8;192.168.0.0/8; }; dnssec-enable no; dnssec-validation no; forward first; forwarders { 8.8.8.8; }; //zone "." IN { // type hint; // file "named.ca"; //}; [root@slave ~]# vim /etc/named.rfc1912.zones acl client1 { 10.207.51.61; }; acl client2 { 10.207.51.81; }; view "client1" { match-clients { "client1"; }; zone "linuxidc.com" IN { type slave; file "slaves/linuxidc.com.zone.c1"; masters { 10.207.51.40; }; transfer-source 10.207.51.31; }; zone "51.207.10.in-addr.arpa" IN { type slave; file "slaves/10.207.51.zone.c1"; masters { 10.207.51.40; }; transfer-source 10.207.51.31; }; zone "linuxmi.com" IN { type forward; forward only; forwarders { 10.207.51.32; }; }; }; view "client2" { match-clients { "client2"; }; zone "." IN { type hint; file "named.ca"; }; zone "linuxidc.com" IN { type slave; file "slaves/linuxidc.com.zone.c2"; masters { 10.207.51.40; }; transfer-source 10.207.51.31; }; zone "51.207.10.in-addr.arpa" IN { type slave; file "slaves/10.207.51.zone.c2"; masters { 10.207.51.40; }; transfer-source 10.207.51.31; }; zone "linuxmi.com" IN { type forward; forward only; forwarders { 10.207.51.32; }; }; };
11.3.2. 修改權(quán)限
[root@slave ~]# cd /var/named/ [root@slave named]# chown named:named slaves [root@slave named]# chmod 770 slaves
11.3.3. 啟動服務(wù)
[root@slave ~]# systemctl start named [root@slaves ~]# ss -antu | grep "<53" udp UNCONN 0 0 10.207.51.31:53 *:* tcp LISTEN 0 10 10.207.51.30:53 *:*
11.4. 測試效果
[root@client ~]# dig -b 10.207.51.61 www.linuxidc.com @10.207.51.40 ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> -b 10.207.51.61 www.linuxidc.com @10.207.51.40 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18485 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.linuxidc.com. IN A ;; ANSWER SECTION: www.linuxidc.com. 3600 IN CNAME www.a.linuxmi.com. www.a.linuxmi.com. 3600 IN A 10.207.51.41 ##測試主DNS,客戶端10.207.51.61解析www.linuxidc.com,IP地址為10.207.51.41,解析成功; ;; AUTHORITY SECTION: linuxmi.com. 3600 IN NS master.linuxmi.com. ;; ADDITIONAL SECTION: master.linuxmi.com. 3600 IN A 10.207.51.32 ;; Query time: 5 msec ;; SERVER: 10.207.51.40#53(10.207.51.40) ;; WHEN: Fri Nov 16 18:28:07 CST 2018 ;; MSG SIZE rcvd: 122 [root@client ~]# dig -b 10.207.51.81 www.linuxidc.com @10.207.51.40 ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> -b 10.207.51.81 www.linuxidc.com @10.207.51.40 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21173 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.linuxidc.com. IN A ;; ANSWER SECTION: www.linuxidc.com. 3600 IN CNAME www.b.linuxmi.com. www.b.linuxmi.com. 3600 IN A 10.207.51.42 ##測試主DNS,客戶端10.207.51.81解析www.linuxidc.com,IP地址為10.207.51.42,解析成功; ;; AUTHORITY SECTION: linuxmi.com. 3600 IN NS master.linuxmi.com. ;; ADDITIONAL SECTION: master.linuxmi.com. 3600 IN A 10.207.51.32 ;; Query time: 5 msec ;; SERVER: 10.207.51.40#53(10.207.51.40) ;; WHEN: Fri Nov 16 18:28:32 CST 2018 ;; MSG SIZE rcvd: 122 [root@client ~]# dig -b 10.207.51.61 www.linuxidc.com @10.207.51.31 ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> -b 10.207.51.61 www.linuxidc.com @10.207.51.31 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36254 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.linuxidc.com. IN A ;; ANSWER SECTION: www.linuxidc.com. 3600 IN CNAME www.a.linuxmi.com. www.a.linuxmi.com. 3600 IN A 10.207.51.41 ##測試從DNS,客戶端10.207.51.61解析www.linuxidc.com,IP地址為10.207.51.41,解析成功; ;; AUTHORITY SECTION: linuxmi.com. 3600 IN NS master.linuxmi.com. ;; ADDITIONAL SECTION: master.linuxmi.com. 3600 IN A 10.207.51.32 ;; Query time: 1 msec ;; SERVER: 10.207.51.31#53(10.207.51.31) ;; WHEN: Sun Nov 18 20:40:35 CST 2018 ;; MSG SIZE rcvd: 122 [root@client ~]# dig -b 10.207.51.81 www.linuxidc.com @10.207.51.31 ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7_5.1 <<>> -b 10.207.51.81 www.linuxidc.com @10.207.51.31 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4116 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.linuxidc.com. IN A ;; ANSWER SECTION: www.linuxidc.com. 3600 IN CNAME www.b.linuxmi.com. www.b.linuxmi.com. 2921 IN A 10.207.51.42 ##測試從DNS,客戶端10.207.51.81解析www.linuxidc.com,IP地址為10.207.51.42,解析成功; ;; AUTHORITY SECTION: linuxmi.com. 2921 IN NS master.linuxmi.com. ;; ADDITIONAL SECTION: master.linuxmi.com. 2921 IN A 10.207.51.32 ;; Query time: 0 msec ;; SERVER: 10.207.51.31#53(10.207.51.31) ;; WHEN: Sun Nov 18 20:40:50 CST 2018 ;; MSG SIZE rcvd: 122