在 Linux/CentOS上配置 DNS服務器(使用Bind提供域名解析服務)

DNS域名解析服務

相較於由數字構成的IP地址,域名更容易被理解和記憶,所以我們通常更習慣通過域名的方式來
訪問網絡中的資源。但是,網絡中的計算機之間只能基於IP地址來相互識別對方的身份,而且要想在互聯網中傳輸數據,也必須基於外網的IP地址來完成。

爲了降低用戶訪問網絡資源的門檻,DNS(Domain Name System,域名系統)技術應運而生。這是一項用於管理和解析域名與IP地址對應關係的技術,簡單來說,就是能夠接受用戶輸入的域名或IP地址,然後自動查找與之匹配(或者說具有映射關係)的IP地址或域名,即將域名解析爲IP地址(正向解析),或將IP地址解析爲域名(反向解析)。這樣一來,我們只需要在瀏覽器中輸入域名就能打開想要訪問的網站了。DNS域名解析技術的正向解析也是我們最常使用的一種工作模式。

鑑於互聯網中的域名和IP地址對應關係數據庫太過龐大,DNS域名解析服務採用了類似目錄樹的層次結構來記錄域名與IP地址之間的對應關係,從而形成了一個分佈式的數據庫系統,如圖所示。
在這裏插入圖片描述

域名後綴一般分爲國際域名和國內域名。原則上來講,域名後綴都有嚴格的定義,但在實際使用時可以不必嚴格遵守。目前最常見的域名後綴有.com(商業組織)、.org(非營利組織)、.gov(政府部門)、.net(網絡服務商)、.edu(教研機構)、.pub(公共大衆)、.cn(中國國家頂級域名)等。

當今世界的信息化程度越來越高,大數據、雲計算、物聯網、人工智能等新技術不斷涌現,全球網民的數量據說也超過了35億,而且每年還在以10%的速度迅速增長。這些因素導致互聯網中的域名數量進一步激增,被訪問的頻率也進一步加大。假設全球網民每人每天只訪問一個網站域名,而且只訪問一次,也會產生35億次的查詢請求,如此龐大的請求數量肯定無法被某一臺服務器全部處理掉。DNS技術作爲互聯網基礎設施中重要的一環,爲了爲網民提供不間斷、穩定且快速的域名查詢服務,保證互聯網的正常運轉,提供了下面三種類型的服務器。

主服務器:在特定區域內具有唯一性,負責維護該區域內的域名與IP地址之間的對應關係。

從服務器:從主服務器中獲得域名與IP地址的對應關係並進行維護,以防主服務器宕機等情況。

緩存服務器:通過向其他域名解析服務器查詢獲得域名與IP地址的對應關係,並將經常查詢的域名信息保存到服務器本地,以此來提高重複查詢時的效率。

簡單來說,主服務器是用於管理域名和IP地址對應關係的真正服務器,從服務器幫助主服務器“打下手”,分散部署在各個國家、省市或地區,以便讓用戶就近查詢域名,從而減輕主服務器的負載壓力。緩存服務器不太常用,一般部署在企業內網的網關位置,用於加速用戶的域名查詢請求。

DNS域名解析服務採用分佈式的數據結構來存放海量的“區域數據”信息,在執行用戶發起的域名查詢請求時,具有遞歸查詢和迭代查詢兩種方式。所謂遞歸查詢,是指DNS服務器在收到用戶發起的請求時,必須向用戶返回一個準確的查詢結果。如果DNS服務器本地沒有存儲與之對應的信息,則該服務器需要詢問其他服務器,並將返回的查詢結果提交給用戶。而迭代查詢則是指,DNS服務器在收到用戶發起的請求時,並不直接回複查詢結果,而是告訴另一臺DNS服務器的地址,用戶再向這臺DNS服務器提交請求,這樣依次反覆,直到返回查詢結果。

由此可見,當用戶向就近的一臺DNS服務器發起對某個域名的查詢請求之後(這裏以www.linuxprobe.com爲例),其查詢流程大致如圖所示。

                     向DNS服務器發起域名查詢請求的流程

在這裏插入圖片描述
當用戶向網絡指定的DNS服務器發起一個域名請求時,通常情況下會有本地由此DNS服務器向上級的DNS服務器發送迭代查詢請求;如果該DNS服務器沒有要查詢的信息,則會進一步向上級DNS服務器發送迭代查詢請求,直到獲得準確的查詢結果爲止。其中最高級、最權威的根DNS服務器總共有13臺,分佈在世界各地,其管理單位、具體的地理位置,以及IP地址如所示。

                              13臺根DNS服務器的具體信息
名稱	管理單位	        地理位置	        IP地址
A	INTERNIC.NET	美國-弗吉尼亞州	198.41.0.4
B	美國信息科學研究所	美國-加利弗尼亞州	128.9.0.107
C	PSINet公司	    美國-弗吉尼亞州	192.33.4.12
D	馬里蘭大學	    美國-馬里蘭州	    128.8.10.90
E	美國航空航天管理局	美國加利弗尼亞州	192.203.230.10
F	因特網軟件聯盟	美國加利弗尼亞州	192.5.5.241
G	美國國防部網絡信息中心	美國弗吉尼亞州	192.112.36.4
H	美國陸軍研究所	美國-馬里蘭州	    128.63.2.53
I	Autonomica公司	瑞典-斯德哥爾摩	192.36.148.17
J	VeriSign公司	   美國-弗吉尼亞州	192.58.128.30
K	RIPE NCC	   英國-倫敦	       193.0.14.129
L	IANA	       美國-弗吉尼亞州	199.7.83.42
M	WIDE Project   日本-東京	       202.12.27.33

安裝Bind服務程序

BIND(Berkeley Internet Name Domain,伯克利因特網名稱域)服務是全球範圍內使用最廣泛、最安全可靠且高效的域名解析服務程序。DNS域名解析服務作爲互聯網基礎設施服務,其責任之重可想而知,因此建議大家在生產環境中安裝部署bind服務程序時加上chroot(俗稱牢籠機制)擴展包,以便有效地限制bind服務程序僅能對自身的配置文件進行操作,以確保整個服務器的安全。

yum install bind-chroot -y
在這裏插入圖片描述
bind服務程序的配置並不簡單,因爲要想爲用戶提供健全的DNS查詢服務,要在本地保存相關的域名數據庫,而如果把所有域名和IP地址的對應關係都寫入到某個配置文件中,估計要有上千萬條的參數,這樣既不利於程序的執行效率,也不方便日後的修改和維護。因此在bind服務程序中有下面這三個比較關鍵的文件:

主配置文件(/etc/named.conf):只有58行,而且在去除註釋信息和空行之後,實際有效的參數僅有30行左右,這些參數用來定義bind服務程序的運行。

區域配置文件(/etc/named.rfc1912.zones):用來保存域名和IP地址對應關係的所在位置。類似於圖書的目錄,對應着每個域和相應IP地址所在的具體位置,當需要查看或修改時,可根據這個位置找到相關文件。

數據配置文件目錄(/var/named):該目錄用來保存域名和IP地址真實對應關係的數據配置文件。

在Linux系統中,bind服務程序的名稱爲named。首先需要在/etc目錄中找到該服務程序的主配置文件,然後把第11行和第17行的地址均修改爲any,分別表示服務器上的所有IP地址均可提供DNS域名解析服務,以及允許所有人對本服務器發送DNS查詢請求。這兩個地方一定要修改準確。
在這裏插入圖片描述

在這裏插入圖片描述

如前所述,bind服務程序的區域配置文件(/etc/named.rfc1912.zones)用來保存域名和IP地址對應關係的所在位置。在這個文件中,定義了域名與IP地址解析規則保存的文件位置以及服務類型等內容,而沒有包含具體的域名、IP地址對應關係等信息。服務類型有三種,分別爲hint(根區域)、master(主區域)、slave(輔助區域),其中常用的master和slave指的就是主服務器和從服務器。將域名解析爲IP地址的正向解析參數和將IP地址解析爲域名的反向解析參數分別如圖所示。

                             正向解析參數

在這裏插入圖片描述
反向解析參數
在這裏插入圖片描述

下面的實驗中會分別修改bind服務程序的主配置文件、區域配置文件與數據配置文件。如果在實驗中遇到了bind服務程序啓動失敗的情況,而您認爲這是由於參數寫錯而導致的,則可以執行named-checkconf命令和named-checkzone命令,分別檢查主配置文件與數據配置文件中語法或參數的錯誤。

**

正向解析實驗

**
在DNS域名解析服務中,正向解析是指根據域名(主機名)查找到對應的IP地址。也就是說,當用戶輸入了一個域名後,bind服務程序會自動進行查找,並將匹配到的IP地址返給用戶。這也是最常用的DNS工作模式。
準備主機名
在這裏插入圖片描述

在這裏插入圖片描述
第1步:編輯區域配置文件。該文件中默認已經有了一些無關緊要的解析參數,旨在讓用戶有一個參考。我們可以將下面的參數添加到區域配置文件的最下面,當然,也可以將該文件中的原有信息全部清空,而只保留自己的域名解析信息:
在這裏插入圖片描述
第2步:編輯數據配置文件。我們可以從/var/named目錄中複製一份正向解析的模板文件(named.localhost),然後把域名和IP地址的對應數據填寫數據配置文件中並保存。在複製時記得加上-a參數,這可以保留原始文件的所有者、所屬組、權限屬性等信息,以便讓bind服務程序順利讀取文件內容:
在這裏插入圖片描述
在這裏插入圖片描述
編輯數據配置文件。在保存並退出後文件後記得重啓named服務程序,讓新的解析數據生效。考慮到正向解析文件中的參數較多,而且相對都比較重要, 在每個參數後面都作了簡要的說明。
在這裏插入圖片描述
$TTL 1D #生存週期爲1天
@ IN SOA shiyan1.example.com. root.shiyan1.example.com. (
#授權信息開始: #DNS區域的地址 #域名管理員的郵箱(不要用@符號)
0;serial #更新序列號
1D;refresh #更新時間
1H;retry #重試延時
1W;expire #失效時間
3H;)minimum #無效解析記錄的緩存時間
NS ns.shiyan1.example.com. #域名服務器記錄
ns IN A 192.168.23.131 #地址記錄(ns.shiyan1.example.com.)
IN MX 10 mail.shiyan1.example.com. #郵箱交換記錄
mail IN A 192.168.23.131 #地址記錄(mail.shiyan1.example.com.)
www IN A 192.168.23.131 #地址記錄(www.shiyan1.example.com.)
bbs IN A 192.168.23.133 #地址記錄(bbs.shiyan1.example.com.)

在這裏插入圖片描述
$TTL 1D
@ IN SOA shiyan1.com root.shiyan1.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.shiyan1.com.
ns IN A 192.168.23.131
IN MX 23 mail.shiyan1.com.
mail IN A 192.168.23.131
www IN A 192.168.23.131
bbs IN A 192.168.23.133

在這裏插入圖片描述
第3步:檢驗解析結果。爲了檢驗解析結果,一定要先把Linux系統網卡中的DNS地址參數修改成本機IP地址,這樣就可以使用由本機提供的DNS查詢服務了。nslookup命令用於檢測能否從DNS服務器中查詢到域名與IP地址的解析記錄,進而更準確地檢驗DNS服務器是否已經能夠爲用戶提供服務。
因爲沒有nslookup命令 所以安裝相關包
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

反向解析實驗

在DNS域名解析服務中,反向解析的作用是將用戶提交的IP地址解析爲對應的域名信息,它一般用於對某個IP地址上綁定的所有域名進行整體屏蔽,屏蔽由某些域名發送的垃圾郵件。它也可以針對某個IP地址進行反向解析,大致判斷出有多少個網站運行在上面。當購買虛擬主機時,可以使用這一功能驗證虛擬主機提供商是否有嚴重的超售問題。

第1步:編輯區域配置文件。在編輯該文件時,除了不要寫錯格式之外,還需要記住此處定義的數據配置文件名稱,因爲一會兒還需要在/var/named目錄中建立與其對應的同名文件。反向解析是把IP地址解析成域名格式,因此在定義zone(區域)時應該要把IP地址反寫,比如原來是192.168.10.0,反寫後應該就是10.168.192,而且只需寫出IP地址的網絡位即可。把下列參數添加至正向解析參數的後面。

在這裏插入圖片描述
第2步:編輯數據配置文件。首先從/var/named目錄中複製一份反向解析的模板文件(named.loopback),然後把下面的參數填寫到文件中。其中,IP地址僅需要寫主機位,如圖所示。
在這裏插入圖片描述

在這裏插入圖片描述

$TTL 1D
@ IN SOA shiyan1.com root.shiyan1.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.linuxprobe.com.
ns A 192.168.23.131
10 PTR ns.linuxprobe.com.
10 PTR mail.linuxprobe.com.
10 PTR www.linuxprobe.com.
20 PTR bbs.linuxprobe.com.

在這裏插入圖片描述
提示報錯查看日誌
在這裏插入圖片描述

在這裏插入圖片描述
查看/etc/resolv.conf
在這裏插入圖片描述
查看區域文件
在這裏插入圖片描述
重啓測試
在這裏插入圖片描述

安全的加密傳輸
前文反覆提及,域名解析服務是互聯網基礎設施中重要的一環,幾乎所有的網絡應用都依賴於DNS才能正常運行。如果DNS服務發生故障,那麼即便Web網站或電子郵件系統服務等都正常運行,用戶也無法找到並使用它們了。

互聯網中的絕大多數DNS服務器(超過95%)都是基於BIND域名解析服務搭建的,而bind服務程序爲了提供安全的解析服務,已經對TSIG(RFC 2845)加密機制提供了支持。TSIG主要是利用了密碼編碼的方式來保護區域信息的傳輸(Zone Transfer),即TSIG加密機制保證了DNS服務器之間傳輸域名區域信息的安全性。

接下來的實驗依然使用了表13-2中的兩臺服務器。

書接上回。前面在從服務器上配妥bind服務程序並重啓後,即可看到從主服務器中獲取到的數據配置文件。

主機名稱 操作系統 IP地址
實驗1主服務器 CentOS 7 192.168.23.131
實驗2從服務器 CentOS 7 192.168.23.133

在這裏插入圖片描述

第1步:在主服務器中生成密鑰。dnssec-keygen命令用於生成安全的DNS服務密鑰,其格式爲“dnssec-keygen [參數]”,常用的參數以及作用如下所示。

                        dnssec-keygen命令的常用參數

參數 作用
-a 指定加密算法,包括RSAMD5(RSA)、RSASHA1、DSA、NSEC3RSASHA1、NSEC3DSA等
-b 密鑰長度(HMAC-MD5的密鑰長度在1~512位之間)
-n 密鑰的類型(HOST表示與主機相關)

使用下述命令生成一個主機名稱爲master-slave的128位HMAC-MD5算法的密鑰文件。在執行該命令後默認會在當前目錄中生成公鑰和私鑰文件,我們需要把私鑰文件中Key參數後面的值記錄下來,一會兒要將其寫入傳輸配置文件中。

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave

在這裏插入圖片描述

在這裏插入圖片描述

第2步:在主服務器中創建密鑰驗證文件。進入bind服務程序用於保存配置文件的目錄,把剛剛生成的密鑰名稱、加密算法和私鑰加密字符串按照下面格式寫入到tansfer.key傳輸配置文件中。爲了安全起見,我們需要將文件的所屬組修改成named,並將文件權限設置得要小一點,然後把該文件做一個硬鏈接到/etc目錄中。

在這裏插入圖片描述

第3步:開啓並加載Bind服務的密鑰驗證功能。首先需要在主服務器的主配置文件中加載密鑰驗證文件,然後進行設置,使得只允許帶有master-slave密鑰認證的DNS服務器同步數據配置文件:

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

至此,DNS主服務器的TSIG密鑰加密傳輸功能就已經配置完成。此時清空DNS從服務器同步目錄中所有的數據配置文件,然後再次重啓bind服務程序,這時就已經不能像剛纔那樣自動獲取到數據配置文件了。

在這裏插入圖片描述

第4步:配置從服務器,使其支持密鑰驗證。配置DNS從服務器和主服務器的方法大致相同,都需要在bind服務程序的配置文件目錄中創建密鑰認證文件,並設置相應的權限,然後把該文件做一個硬鏈接到/etc目錄中。
準備yum包

在這裏插入圖片描述

在這裏插入圖片描述

第5步:開啓並加載從服務器的密鑰驗證功能。這一步的操作步驟也同樣是在主配置文件中加載密鑰認證文件,然後按照指定格式寫上主服務器的IP地址和密鑰名稱。注意,密鑰名稱等參數位置不要太靠前,大約在第43行比較合適,否則bind服務程序會因爲沒有加載完預設參數而報錯:
在這裏插入圖片描述

在這裏插入圖片描述

第6步:DNS從服務器同步域名區域數據。現在,兩臺服務器的bind服務程序都已經配置妥當,並匹配到了相同的密鑰認證文件。接下來在從服務器上重啓bind服務程序,可以發現又能順利地同步到數據配置文件了。

在這裏插入圖片描述

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