1. 程式人生 > >Linux系統中的DNS服務一之 :快取記憶體DNS

Linux系統中的DNS服務一之 :快取記憶體DNS

DNS簡介:(IP地址太多我們不可能記住所有網站的IP,所以需要DNS來幫助我們簡化這個過程)

即 相當於@   DNS:姓名     IP:家庭住址

 

DNS(Domain Name System,域名系統),全球資訊網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議執行在UDP協議之上,使用埠號53

 

每個IP地址都可以有一個主機名,主機名由一個或多個字串組成,字串之間用小數點隔開。有了主機名,就不要死記硬背每臺IP裝置的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協議的功能。

主機名到IP地址的對映有兩種方式:

1)靜態對映,每臺裝置上都配置主機到IP地址的對映,各裝置獨立維護自己的對映表,而且只供本裝置使用;

2)動態對映,建立一套域名解析系統(DNS),只在專門的DNS伺服器上配置主機到IP地址的對映,網路上需要使用主機名通訊的裝置,首先需要到DNS伺服器查詢主機所對應的IP地址

通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。在解析域名時,可以首先採用靜態域名解析的方法,如果靜態域名解析不成功,再採用動態域名解析的方法。可以將一些常用的域名放入靜態域名解析表中,這樣可以大大提高域名解析效率。

 

DNS的一個 服務:  快取記憶體DNS

快取記憶體DNS:DNS伺服器可以快取記憶體從其他DNS伺服器收到的DNS記錄,也可以在DNS客戶服務中使用快取記憶體。

快取記憶體的作用:當我們訪問請求解析過一個域名以後,這個解析記錄就被放置在快取中記憶了,以後有相同的解析請求的話,就直接從快取中提供資訊,這樣會加快訪問者的訪問速度,應答速度!

 

讓我們用實驗來感受DNS快取記憶體吧!:

 

實驗環境:

虛擬機器(server)作為DNS伺服器

真機(Foundation148) 和 虛擬機器(desktop)作測試;

 

第一步開啟真機的路由功能:(使虛擬機器能夠通過真機來PING通其他網段的IP地址):

 

檢視防火牆是否開啟:(可以看到dead沒有開啟)

開啟防火牆:(systemctl start firewalld.service)

開啟真機路由功能:(firewall-cmd --add-masquerade)

將虛擬機器server的閘道器設定為真機172.25.254.148:(利用圖形介面nm-connection-editor 裡面新增gateway就行。)

可以ping通114.114.114.114了 :

 

第二步:

我們需要將真機裡面的/etc/resolve.conf 檔案裡面的域名解析伺服器遮蔽掉,以防干擾實驗結果!

遮蔽掉以後,加入我們的server虛擬機器IP作為新的域名解析伺服器!:

/etc/resolve.conf用來存放域名解析伺服器資訊:

可以看到之前的域名解析伺服器(192.168.1.1......)

遮蔽掉,並且新增最新的serverDNS伺服器:

可以看到此時,當我們使用dig命令查詢DNS的相關資訊:

(Dig是一個在類Unix命令列模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關資訊的工具):

可以看到dig不通!:

 

在虛擬機器中操作:

這是因為我們虛擬機器server上的DNS伺服器還有沒搭建好;

在server裡面搭建DNS伺服器:

首先得搭建好yum源,以便安裝相關軟體:(此處我們是用光碟機掛載到/messi 目錄上從而建立了一個本地yum源)

 

光碟機/dev/sr0 掛載到了 /messi上供我們使用:(df命令檢視裝置掛載資訊)

 

可以看到本地yum源配置完畢:

 

@關閉server的防火牆:

@給server虛擬機器安裝bind 軟體(DNS):

bind (全稱:The  Berkeley Internet Name Domain DNS),它是由伯克利大學實驗室開發出來的一款DNS服務被我們廣泛使用:

yum install bind -y #不提示資訊直接安裝bind

安裝完bind後,開啟named服務,並設定named服務為開機自啟:

注:開啟named的過程可能會出現,因為加密字元不夠導致無法正常開啟的情況(即卡在shell介面裡),出現這種情況,需要我們不關閉當前shell的情況下,再開啟一個shell隨便輸入一串字元,幫助系統獲得加密字元數量!

 

編寫配置檔案( /etc/named.conf )

可以看到檔案配置內容很多:

我們需要更改:以下資訊:

第11行   :Listen-on port 53 { any; }; #指定DNS監聽的埠和地址為任意

第17行   :allow-query   { any; };     #允許任意客戶端進行DNS查詢

第18行   :forwarders  { 114.114.114.114; };#向更高階的DNS伺服器 114.114.114.114詢問解析地址

第32行   :dnssec-validation no;   #關閉檢測(正規DNS需要檢測,我們需要改為no才能使用!)

更改完畢後,重啟named服務:

注:當檔案配置更改格式出現問題的時候重啟服務會報錯,需要我們通過系統日誌檢視錯誤問題,並且自行排錯!

cat /var/log/messages #檢視系統日誌

 

測試端:(真機Foundation148)進行操作:

檢視我們的DNS伺服器設定:

檢視是否DNS設定完畢,沒有的話就遮蔽原有的DNS伺服器,加入我們新建立的DNS伺服器(server):172.25.254.48:

 

利用dig命令檢視DNS資訊:

此處我們dig www.baidu.com看看結果:

結果如下:

最下面可以看到應答時間為624msec(第一次解析耗時長!), DNS伺服器為我們設定的server伺服器(172.25.254.48)

因為我們已經快取了www.baidu.com的DNS資訊,所以下次詢問時應答時間會顯著縮短!!!

再dig www.baidu.com看看效果:(由624msec 縮減為了 36msec)

在另一個測試端desktop:

設定好 IP,閘道器:

配置DNS伺服器檔案:(加入serverDNS伺服器)

dig www.baidu.com 檢視效果:用時32msec很快了

再次dig 可以發現應答時間為0:

怎麼樣! DNS快取記憶體速度還不錯吧!