Linux網絡服務——DNS全攻略

DNS(Domain Name System)域名系統,在TCP/IP網絡中有非常重要的地位,能夠提供域名與IP地址的解析服務。

DNS域名解析工作原理

<1> 客戶機提交域名解析請求,並將該請求發送給本地的域名服務器。
<2> 當本地的域名服務器收到請求後,就先查詢本地的緩存。如果有查詢的DNS信息記錄,則直接返回查詢的結果。如果沒有該記錄,本地域名服務器就把請求發給根域名服務器。
<3> 根域名服務器再返回給本地域名服務器一個所查詢域的頂級域名服務器的地址。
<4> 本地服務器再向返回的域名服務器發送請求。
<5> 接收到該查詢請求的域名服務器查詢其緩存和記錄,如果有相關信息則返回客戶機查詢結果,否則通知客戶機下級的域名服務器的地址。
<6> 本地域名服務器將查詢請求發送給返回的DNS服務器。
<7> 域名服務器返回本地服務器查詢結果(如果該域名服務器不包含查詢的DNS信息,查詢過程將重複<6>、<7>步驟,直到返回解析信息或解析失敗的迴應)。
<8> 本地域名服務器將返回的結果保存到緩存,並且將結果返回給客戶機。


正向解析與反向解析
1)正向解析
正向解析是指域名到IP地址的解析過程。
2)反向解析
反向解析是從IP地址到域名的解析過程。反向解析的作用爲服務器的身份驗證。

DNS查詢類型

1.遞歸查詢: 簡單的理解就是以最終結果查詢,就是返回最終的結果給客戶機,而客戶機在此階段是處於等待的狀態!(就好比,你在家裏地位最高,你都是衣來伸手飯來張口的,最什麼事情就只要一句話不用自己親自動手)



2.迭代查詢:簡單的理解就是以最佳的結果查詢,意思就是如果DNS服務器能解析就直接以最終結果返回給客戶機,如果無法解析則就返回上一級DNS服務器的IP給客戶機,由客戶機完成查詢工作直到得到最終結果!(舉個例子就是什麼事情你去問別人,別人只是告訴你怎麼做,你知道後要自己親自去做)


 

 

資源記錄
爲了將名字解析爲IP地址,服務器查詢它們的區(又叫DNS數據庫文件或簡單數據庫文件)。區中包含組成相關DNS域資源信息的資源記錄(RR)。例如,某些資源記錄把友好名字映射成IP地址,另一些則把IP地址映射到友好名字。
某些資源記錄不僅包括DNS域中服務器的信息,還可以用於定義域,即指定每臺服務器授權了哪些域,這些資源記錄就是SOA和NS資源記錄。
1)SOA資源記錄
每個區在區的開始處都包含了一個起始授權記錄(Start of Authority Record),簡稱SOA記錄。SOA定義了域的全局參數,進行整個域的管理設置。一個區域文件只允許存在唯一的SOA記錄。區域以服務器授權機構的概念爲基礎。當DNS服務器配置成加載區域時,其使用SOA和NS兩種資源記錄來確定區域的授權屬性。
SOA和NS資源記錄在區域配置中具有特殊作用,它們是任何區域都需要的記錄並且一般是文件中列出的第一個資源記錄。
起始授權機構SOA資源記錄總是處於任何標準區域中的第一位。它表示最初創建它的DNS服務器或現在是該區域的主服務器的DNS服務器。它還用於存儲會影響區域更新或過期的其他屬性,比如版本信息和計時。這些屬性會影響在該區域的域名服務器之間進行同步數據的頻繁程度。
SOA資源記錄語法格式:
區域名(當前) 記錄類型 SOA 主域名服務器(FQDN) 管理員郵件地址 (序列號 刷新間隔 重試間隔 過期間隔 TTL)

SOA資源記錄字段:
主域名服務器:區域的主DNS服務器的FQDN
管理員:管理區域的負責人的電子郵件。在該電子郵件名稱中使用英文句號“.”代替at符號“@”。
序列號:該區域文件的修訂版本號。每次區域中的資源記錄改變時,這個數字便會增加,每次區域改變時增加這個值非常重要,它使部分區域改動或完全修改的區域都可以在後續傳輸中複製到其他輔助DNS服務器上。
刷新間隔:以秒計算的時間,輔助DNS服務器請求與源服務器同步的等待時間。當刷新間隔到期時,輔助DNS服務器請求源服務器的SOA記錄副本,然後輔助DNS服務器將源服務器的SOA記錄的序列號與其本地SOA記錄的序列號相比較,如果二者不同,則輔助DNS服務器從主DNS服務器請求區域傳輸。這個域的默認時間是900秒(15分鐘)。
重試間隔:以秒計算時間,輔助DNS服務器在請求區域傳輸失敗後,等待多長時間再次請求區域傳輸時間。通常,這個時間短於刷新間隔。默認值爲600秒(10分鐘)。
過期間隔:以秒計算時間,當這個時間到期時,如果輔助DNS服務器還無法與源服務器進行區域傳輸,則輔助DNS服務器會把它的本地數據當作不可靠數據。默認值爲86400秒(24小時)。
最小(默認)TTL:區域的默認生存時間(TTL)和緩存否定應答名稱查詢的最大間隔。默認值爲3600秒(1小時)

2)NS資源記錄
名稱服務器(NS)資源記錄表示該區的授權服務器,它們表示SOA資源記錄中指定的該區的主和輔助服務器,也表示了任何授權區的服務器。每個區在區根處至少包含一個NS記錄。

用於指定一個區域的權威DNS服務器,通過在NS資源記錄中列出服務器的名字,其他主機就認爲它是該區域的權威服務器。這意味着在NS資源記錄中指定的任何服務器都被其他服務器當作權威的來源並且能應答區域內所含名稱的查詢。
NS資源記錄語法格式:
區域名 IN NS 完整主機名(FQDN)

3)A資源記錄
地址(A)資源記錄把FQDN映射到IP地址,因而解析器能查詢FQDN對應的IP地址。

A資源記錄語法格式:
完整主機名(FQDN) IN A IP地址

4)PTR資源記錄
相對於A資源記錄,該記錄與A記錄相反,用於查詢IP地址與主機名的對應關係。
PTR資源記錄語法格式:
IP地址 IN PTR 主機名(FQDN)

5)CNAME資源記錄
規範名字(CNAME)資源記錄創建特定FQDN的別名。用戶可以使用CNAME記錄來隱藏用戶網絡的實現細節,使連接的客戶機無法知道。別名(CNAME)資源記錄用於爲某個主機指定一個別名。例如管理員告知公司的首頁爲
www.abc.com,而實際在訪問時訪問的是www1.abc.com主機。該資源記錄經常用於在同一區域的A資源記錄中的主機需要重命名時或者爲多臺主機(例如一組WWW服務器)提供相同的別名。
CNAME資源記錄語法格式:
別名 IN CNAME 主機名

6)MX資源記錄
郵件交換(MX)資源記錄爲DNS域名指定郵件交換服務器。郵件交換服務器是爲DNS域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者。轉發郵件指把郵件發送到最終目的服務器,用簡單郵件傳輸協議SMTP把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件經過一定時間的排隊。

MX資源記錄語法格式:
區域名 IN MX 優先級(數字) 郵件服務器名稱(FQDN)

type字段指定區域的類型

type字段指定區域的類型,對於區域的管理至關重要,一共分爲六種:
Master:主DNS服務器:擁有區域數據文件,並對此區域提供管理數據
Slave:輔助DNS服務器:擁有主DNS服務器的區域數據文件的副本,輔助DNS服務器會從主DNS服務器同步所有區域數據。
Stub:stub區域和slave類似,但其只複製主DNS服務器上的NS記錄而不像輔助DNS服務器會複製所有區域數據。
Forward:一個forward zone是每個域的配置轉發的主要部分。一個zone語句中的type forward可以包括一個forward和/或forwarders子句,它會在區域名稱給定的域中查詢。如果沒有forwarders語句或者forwarders是空表,那麼這個域就不會有轉發,消除了options語句中有關轉發的配置。
Hint:根域名服務器的初始化組指定使用線索區域hint zone,當服務器啓動時,它使用根線索來查找根域名服務器,並找到最近的根域名服務器列表。如果沒有指定class IN的線索區域,服務器使用編譯時默認的根服務器線索。不是IN的類別沒有內置的默認線索服務器。
Delegation-only:用於強制區域的delegation .ly狀態。

應用案例

【實例1】技術部所在域爲“tech.org”,部門內有三臺主機,主機名分別是client1.tech.org,client2.tech.org,client3.tech.org。現要求DNS服務器dns.tech.org可以解析3臺主機名和IP地址的對應關係。


當前的目錄爲/var/named/chroot/etc

vim named.conf

options {
directory "/var/named" ;
};


zone "." {
type hint ;
file "named.ca" ;

};

zone "tech.org" {

type master ;
file "tech.org.zone" ;
};

zone "31.168.192.in-addr.arpa" {

type master ;
file "192.168.31.zone" ;

};

當前的目錄爲/var/named/chroot/var/named

vim tech.org.zone

$TTL 86400
@ IN SOA dns.tech.org. root (
2009070900
1H
15M
1W
1D
)

@ IN NS dns.tech.org.
dns IN A 192.168.31.134
client1 IN A 192.168.31.135
client2 IN A 192.168.31.136
client3 IN A 192.168.31.137


當前的目錄爲/var/named/chroot/var/named

vim 192.168.31.zone

@ IN SOA dns.tech.org. root.tech.org. (
2009070900
1H
15M
1W
1D
)
@ IN NS dns.tech.org.
134 IN PTR dns.tech.org.
135 IN PTR cilent1.tech.org.
136 IN PTR client2.tech.org.
137 IN PTR client3.tech.org.


隨後就是自行測試了!

【實例2】企業採用多個區域管理各部門網絡,技術部屬於“tech.boobooke”域,市場部屬於“mart.boobooke”域,其他人員屬於“freedom.boobooke”域。技術部門共有100人,採用的IP地址爲192.168.31.1-192.168.31.100。市場部門共有100人,採用IP地址爲192.168.32.1-192.168.32.100。其他人員只有50人,採用IP地址爲192.168.33.1-192.168.33.50。現採用一臺主機搭建DNS服務器,其IP地址爲192.168.31.134,要求這臺DNS服務器可以完成內網所有區域的正/反向解析,並且所有員工均可以訪問外網地址。


vim etc/named.conf

options {
directory "/var/named" ;
};

zone "." {
type hint ;
file "named.ca" ;
};

zone "tech.boobooke" {

type master ;
file "tech.boobooke.zone" ;
};

zone "31.168.192.in-addr.arpa" {
type master;
file "192.168.31.zone";
};

zone "mart.boobooke" {
type master;
file "mart.boobooke.zone";
};


zone "32.168.192.in-addr.arpa" {
type master;
file "192.168.32.zone";
};

zone "freedom.boobooke" {
type master;
file "freedom.boobooke.zone";
};

zone "33.168.192.in-addr.arpa" {
type master;
file "192.168.33.zone";
};

vim var/named/tech.boobooke.zone

$TTL 86400
@ IN SOA dns.tech.boobooke. root (
2009070900
1H
15M
1W
1D
)

@ IN NS dns.tech.boobooke.
dns IN A 192.168.31.134
client1 IN A 192.168.31.1
client2 IN A 192.168.31.2
client3 IN A 192.168.31.3
client4 IN A 192.168.31.4
client5 IN A 192.168.31.5
client6 IN A 192.168.31.6
client7 IN A 192.168.31.7
client100 IN A 192.168.31.100

vim mart.boobooke.zone
$TTL 86400
@ IN SOA dns.mart.boobooke. root (
2009070900
1H
15M
1W
1D
)

@ IN NS dns.mart.boobooke.
dns IN A 192.168.31.134
client1 IN A 192.168.32.1
client2 IN A 192.168.32.2
client3 IN A 192.168.32.3
client4 IN A 192.168.32.4
client5 IN A 192.168.32.5
client6 IN A 192.168.32.6
client7 IN A 192.168.32.7
client100 IN A 192.168.32.100

vim freedom.boobooke.zone
$TTL 86400
@ IN SOA dns.freedom.boobooke. root (
2009070900
1H
15M
1W
1D
)

@ IN NS dns.freedom.boobooke.
dns IN A 192.168.31.134
client1 IN A 192.168.33.1
client2 IN A 192.168.33.2
client3 IN A 192.168.33.3
client4 IN A 192.168.33.4
client5 IN A 192.168.33.5
client6 IN A 192.168.33.6
client7 IN A 192.168.33.7
client50 IN A 192.168.33.50


vim 192.168.31.zone
@ IN SOA 31.168.192.in-addr.arpa. root.tech.boobooke. (
2009070900
1H
15M
1W
1D
)
@ IN NS dns.tech.boobooke.
134 IN PTR dns.tech.boobooke.
1 IN PTR cilent1.tech.boobooke.
2 IN PTR client2.tech.boobooke.
3 IN PTR client3.tech.boobooke.
4 IN PTR client4.tech.boobooke.
5 IN PTR client5.tech.boobooke.
6 IN PTR client6.tech.boobooke.
7 IN PTR client7.tech.boobooke.
100 IN PTR client100.tech.boobooke.


vim 192.168.32.zone
@ IN SOA 31.168.192.in-addr.arpa. root.mart.boobooke. (
2009070900
1H
15M
1W
1D
)
@ IN NS dns.mart.boobooke.
134 IN PTR dns.mart.boobooke.
1 IN PTR cilent1.mart.boobooke.
2 IN PTR client2.mart.boobooke.
3 IN PTR client3.mart.boobooke.
4 IN PTR client4.mart.boobooke.
5 IN PTR client5.mart.boobooke.
6 IN PTR client6.mart.boobooke.
7 IN PTR client7.mart.boobooke.
100 IN PTR client100.mart.boobooke.


vim 192.168.33.zone
@ IN SOA 31.168.192.in-addr.arpa. root.freedom.boobooke. (
2009070900
1H
15M
1W
1D
)
@ IN NS dns.freedom.boobooke.
134 IN PTR dns.freedom.boobooke.
1 IN PTR cilent1.freedom.boobooke.
2 IN PTR client2.freedom.boobooke.
3 IN PTR client3.freedom.boobooke.
4 IN PTR client4.freedom.boobooke.
5 IN PTR client5.freedom.boobooke.
6 IN PTR client6.freedom.boobooke.
7 IN PTR client7.freedom.boobooke.
50 IN PTR client50.freedom.boobooke.


chown root:named 192.168.31.zone
chown root:named 192.168.32.zone
chown root:named 192.168.33.zone
chown root:named tech.boobooke.zone
chown root:named mart.boobooke.zone
chown root:named freedom.boobooke.zone


【實例3】安裝基於chroot的DNS服務器,並將其配置成緩存Cache-only服務器,然後將客戶機的查詢轉發到202.100.138.68和202.100.128.68的DNS服務器上。

options {
directory "/var/named" ;
forwarders {202.100.138.68;
202.100.128.68;
};
forward only;
};


【實例4】安裝基於chroot的DNS服務器,並根據以下要求配置主要名稱服務器。
(1)定義服務器的版本信息爲“9.3.4”。
(2)設置根區域,以便DNS服務器在本地區域文件不能進行查詢的解析時,能轉到根DNS服務器查詢。
(3)建立xyz.org主區域,設置允許區域複製的輔域名服務器的地址爲192.168.31.134。
(4)建立以下A資源記錄。
dns.xyz.org. IN A 192.168.31.1
www.xyz.org. IN A 192.168.31.2
mail.xyz.org. IN A 192.168.31.3
(5)建立以下別名CNAME資源記錄。
bbs IN CNAME www
(6)建立以下郵件交換器MX資源記錄
Xyz.org. IN MX 10 mail.xyz.org.
(7)建立反向解析區域31.168.192.in-addr.arpa,併爲以上A資源記錄建立對應的指針PTR資源記錄。


vim etc/named.conf
options {
directory "/var/named" ;
version "9.3.4";
allow-transfer {192.168.31.132;};
};

zone "." {
type hint;
file "named.ca";
};

zone "xyz.org" {
type master;
file "xyz.org.zone";
};

zone "31.168.192.in-addr.arpa" {
type master;
file "192.168.31.zone";
};


vim var/named/xyz.org.zone
$TTL 86400
@ IN SOA dns.xyz.org. root (
2009071000
3H
1H
1W
0

)

@ IN NS dns
dns IN A 192.168.31.1
www IN A 192.168.31.2
mail IN A 192.168.31.3
bbs IN CNAME www
xyz.org. IN MX 10 mail.xyz.org.

vim var/named/192.168.31.zone
@ IN SOA 31.168.192.in-addr.arpa. root.xyz.org. (
2009071000
1H
15M
1W
0
)
@ IN NS dns.xyz.org.
1 IN PTR dns.xyz.org.
2 IN PTR
www.xyz.org.
3 IN PTR mail.xyz.org.

【實例5】安裝基於chroot的DNS服務器,並根據以下要求配置輔助名稱服務器。
(1)建立xyz.org從區域,設置主要名稱服務器的地址爲192.168.31.134。
(2)建立反向解析從區域31.168.192.in-addr.arpa,設置主要名稱服務器的地址爲192.168.31.134。


options {
directory "/var/named";
};

zone "xyz.org" {
type slave;
masters { 192.168.31.134; };
file "slaves/xyz.org.zone";
};

zone "31.168.192.in-addr.arpa" {
type slave;
masters { 192.168.31.134; };
file "slaves/192.168.31.zone";
};

 

發佈了37 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章