DNS(Domain Name System)域名系統,在TCP/IP網絡中有很是重要的地位,可以提供域名與IP地址的解析服務。web
DNS域名解析工做原理
<1> 客戶機提交域名解析請求,並將該請求發送給本地的域名服務器。
<2> 當本地的域名服務器收到請求後,就先查詢本地的緩存。若是有查詢的DNS信息記錄,則直接返回查詢的結果。若是沒有該記錄,本地域名服務器就把請求發給根域名服務器。
<3> 根域名服務器再返回給本地域名服務器一個所查詢域的頂級域名服務器的地址。
<4> 本地服務器再向返回的域名服務器發送請求。
<5> 接收到該查詢請求的域名服務器查詢其緩存和記錄,若是有相關信息則返回客戶機查詢結果,不然通知客戶機下級的域名服務器的地址。
vim
<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狀態。
應用案例
一 技術部所在域爲「tech.org」,部門內有三臺主機,主機名分別是client1.tech.org,client2.tech.org,client3.tech.org。對應ip爲192.168.10.1,192.168.10.2,192.168.10.3 現要求DNS服務器(192.168.10.254) dns.tech.org能夠解析3臺主機名和IP地址的對應關係。
確保yum可以使用,而後安裝所須要的軟件包和主從域名服務器的參考配置文件
yum install bind caching-nameserver
vim /etc/named.conf
options {
directory "/var/named" ;
};
zone "." IN { //設置根區域
type hint ; //設置區域類型(hint表示根域,master表示主域,
//slave表示從域
file "named.ca" ; //設置對應的根域地址數據庫文件
};
zone "tech.org" IN { //設置正向DNS區域名稱
type master ;
file "tech.org.zone" ; //設置正向區域地址數據庫文件
allow-transfer { 192.168.10.253 ; } ; //設置容許下載區域數據庫的從域名服務器 地址,爲下面作從域名服務器作準備
};
zone "10.168.192.in-addr.arpa" IN { //設置反向DNS區域
type master ;
file "192.168.10.zone" ; //設置對應的反向區域地址數據庫文件
allow-transfer { 192.168.10.253; }
};
vim /var/named/tech.org.zone
$TTL 86400
@ IN SOA dns.tech.org. root (
2009070900
1H
1W
1D
)
@ IN NS dns.tech.org.
dns IN A 192.168.10.254
client1 IN A 192.168.10.1
client2 IN A 192.168.10.2
client3 IN A 192.168.10.3
vim /var/named/192.168.10.zone
@ IN SOA dns.tech.org. root.tech.org. (
2009070900
1H
1W
1D
)
@ IN NS dns.tech.org.
254 IN PTR dns.tech.org.
1 IN PTR client1.tech.org.
2 IN PTR client2.tech.org.
3 IN PTR client3.tech.org.
配置完成後重啓服務,使用nslookup client1.tech.org 測試是否可以正向解析
nslookup 192.168.10.1 測試是否可以反向解析
二 構建從域名服務器
從域名服務器做爲主服務器的冗餘備份,能夠與主域名服務器一塊兒,同時提供本域內主機名與ip地址的解析,從域名服務器的地址數據庫文件須要從主域名服務器中按期更新。
從域名服務器的ip爲192.168.10.253 主機名爲dns2.tech.org
客戶端將DNS指向192.168.10.254 192.168.10.253 當主域名服務器中斷服務時,由從域名服務器繼續處理客戶端的DNS請求
配置過程:
vim /etc/named.conf
options {
directory "/var/named" ;
};
zone "tech.org" IN { //設置正向DNS區域名稱
type slave; //使用slave輔助的區域類型
masters { 192.168.10.254; }; //指向主服務器的ip
file "slaves/tech.org.zone" ; //下載的地址數據庫文件保存到slaves/子目錄中,從服務器上的區域文件名能夠和服務器上的該區域文件名不一樣。
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
master { 192.168.10.254; };
file "slaves/192.168.10.zone" ;
};
測試,讓客戶端的DNS指向從域名服務器,能夠解析主域名服務器的記錄
三 受權子域或稱子域委派
當DNS區域層次較多時,域名數量巨大時,就可使用子域受權,將某一個子域的各域名解析工做交給另一臺服務器來完成。
配置過程:
主域名服務器上的配置文件/etc/named.conf保持不變
vim /var/named/tech.org.zone //解析庫文件增長子域記錄
IN NS dns2.zyp.com. //子域域名服務器記錄
bj IN A 192.168.0.23 //子域名主機記錄
配置子域的主配置文件
vim /etc/named.conf
option { directory "/var/named"; };
zone 「bj.tech.org" IN
type master;
file bj.tech.org.zone";}
zone "tech.org" IN
type forward;
fordwarders { 192.168.0.254; }; //轉發主域名服務器的請求
vim /var/named/bj.tech.org.zone
@ IN NS ns2.zyp.com.
dns2 IN A 192.168.10.252
www IN A 192.168.0.252
配置完成後能夠解析www.bj.tech.org也能夠解析dns.tech.org
server named configtest 測試dns文件
4、構建分離解析的域名服務器
分離解析的域名服務器實際上仍是主域名服務器,這裏所說的分離解析主要針對不一樣的客戶端提供不一樣的解析記錄,如當dns同時爲internet和內網提供服務時,可能須要內網用戶訪問公司的web服務和mail服務直接發往位於內網的web和mail服務器上,減輕服務器地址轉換的負擔
域名服務器架設在網關服務器上,服務器有二塊網卡一個地址爲公網地址173.0.0.1 一個爲私網地址192.168.10.254
負責域名爲tech.org,當公網用戶訪問時直接解析爲173.0.0.1 當內網用戶訪問時直接解析爲web服務器192.168.0.5地址和mail服務器192.168.0.6的地址
配置過程:
vim /etc/named.conf
options { directory "/var/named";};
view "LAN" {
match-clients { 192.168.10.0/24; };
zone "tech.org" IN {
type master;
file "tech.org.zone.lan";};
}
view "WAN" {
match-clients { any; };
zone "tech.org" IN {
type master;
file "tech.org.wan";};
};
vim /var/named/tech.org.lan
$TTL 36400
@ IN SOA tech.org. root.tech.org (
2011012801
1H
10M
7D
1D)
IN NS dns.tech.org.
IN MX 10 mail.tech.org.
ns IN A 192.168.10.254
www IN A 192.168.10.5
mail IN A 192.168.10.6
vim /var/named/tech.org.wan
$TTL 36400
@ IN SOA tech.org root.tech.org.(
2011012801
1H
10M
7D
1D)
IN NS dns.tech.org.
IN MX 10 mail.tech.org.
ns IN A 173.0.0.1
www IN A 173.0.0.1
mail IN A 173.0.0.1
配置完成後重啓服務,當公網公網用戶訪問web和mai服務器時,解析爲173.0.0.1
當內網用戶訪問web或者mail時解析爲實際的服務器地址