DNS服務

    www.baidu.com的全稱域名FQDN實際上是www.baidu.com.即後面實際上省略了點,其中,www往往是某主機的別名,.baidu.com.是域名的全路徑,路徑中列出了各級域。

    域名的分層結構如圖:

wKiom1nHu-7RftN4AABxjph0lYo105.jpg       DNS服務器能夠將域名解析爲ip,以實現主機間通信。下面將介紹各級服務器的搭建,並模擬客戶端查詢某域名的完整解析過程:

wKiom1nHt3qwHEjtAACUHiGrVZo593.png


根域的DNS服務器:172.18.0.107 centos7.3   綠色提示符

com域的DNS服務器:172.18.0.109 centos7.3   紫色提示符

magedu.com域的主DNS服務器:172.18.250.110   centos7.4   白色提示符root@localhost

magedu.com域的從DNS服務器:172.18.22.200   centos7.3      藍色提示符

運營商的DNS服務器:172.18.0.106 centos6   ×××提示符 ,用作轉發服務器

客戶端:172.18.18.5 rhel5   白色提示符root@rhel5

一 搭建magedu.com域的主DNS服務器(172.18.250.110

1 檢查SELINUX

wKioL1nHlhzTCPD9AAAQOHVZVUQ136.jpg

    當前SELINUX的狀態爲Enforcing

wKioL1nHlhyyI6kjAAARJLjsZ5A636.jpg

    打開SELINUX配置文件

wKioL1nHlhzhO2fFAAFllXoaN8M565.jpg

    將其修改爲disabled或permissive,即禁用SELINUX,保存退出

wKiom1nHllegCekbAABadMmALAE047.png

    但是上面對配置文件的修改需重啓後才能生效,可以用setenforce 0臨時禁用SELINUX

2 檢查防火牆

wKiom1nHlleidWNtAAANlq-zT6w437.jpg

    查看防火牆狀態

wKioL1nHlh2zJAxWAAFbmPrwZOw854.jpg

    當前防火牆的狀態爲開啓

wKiom1nHllfDo8BsAABiAfd_CnI599.jpg

    systemctl  disable firewalld.service開機時禁用防火牆   

    systemctl  stop firewalld.service臨時禁用防火牆

3 開啓DNS服務

wKioL1nHlh3hlpFUAAARBIpbxQI756.jpg

    臨時啓用DNS服務

wKiom1nHmVjjKrUXAABKTiB7AoM401.jpg

    將DNS服務設爲開機啓用

4 配置DNS

wKiom1nHmVjzti73AAA2fCNpOYE850.png

   打開DNS總配置文件

wKioL1nHmR7Sc4edAABjYFt6GMg530.jpg

    假設本機ip爲127.0.0.1 192.168.25.107  172.18.0.107

  •   listen-on定義當前DNS服務器監聽的端口,選項有

     本機某個ip:只監聽本機某個ip的3306端口

     localhost:本機所有ip,即監聽本機所有ip的3306端口

     any:監聽所有網段的ip的3306端口,實際上這個選項對listen-on來說,相當於localhost,註釋listen-on時相當於any

  •   allow-query定義當前DNS服務器爲哪些主機提供查詢服務,選項有

     本機某個ip:本機某個ip,即只允許本機的某個ip查詢,只爲本機某個ip提供查詢服務。此時本機既是客戶端又是服務器。

     某個網段ip:某個網段ip,即只允許某個網段ip查詢,只爲某個網段ip提供查詢服務,例如172.18.0.0/16

     localhost:本機所有ip,即只允許本機的所有ip查詢,只爲本機所有ip提供查詢服務,此時本機既是客戶端又是服務器。

     any:所有網段的ip,即允許所有網段的ip查詢,爲所有網段的ip提供查詢服務,註釋allow-query時相當於any

     圖中表示監聽本機所有ip,爲所有網段的ip提供查詢服務

wKioL1nHmR7SGZWbAAARX0oFynU356.jpg

    之所以所有的DNS服務器都知道根,是因爲在每個DNS服務器上都默認定義了一個根域,根域的數據庫文件/var/named/named.ca中指定了根域的DNS服務器,即互聯網上的13組DNS服務器。DNS服務器上對根域的定義與其他域的定義不同,其他域在其數據庫文件中將DNS服務器指向當前DNS服務器。

wKiom1nHmVmxLV1MAABSUsmLeoo702.png

    打開根域的數據庫文件/var/named/named.ca

wKiom1nHmVry-kiaAAUHOmuVYaM953.png


wKioL1nHmSHBjf4VAAGDN85uArc473.jpg

    NS記錄表示出了爲本域及本域的子域提供名字解析服務的所有DNS服務器,NS記錄定義了DNS服務器的名稱,A記錄定義了與某個DNS服務器相對應的ip

wKiom1nHp_6y2oFGAAAtuiF4yoA008.png

wKioL1nHp8Pwp-BIAABQYcUzNmM333.png

    如圖表示互聯網上的根域有一一臺DNS服務器的ip爲199.7.91.3

wKioL1nHmSHgLS-hAAARRK9mYmU745.jpg


wKiom1nHmVviGZrpAAAfebagIaY148.jpg

     所以,將/var/named/named.ca的內容改成上圖所示後,172.18.250.110就會認爲根是172.18.0.107

wKioL1nHmz-xQmpCAAC6GYRomlE591.jpg

    實驗中除了客戶端和72.18.0.107之外的所有主機都需要將根指向172.18.0.107,可以用scp命令將改好的/var/named/named.ca文件拷貝到各主機,也可直接修改相應主機上的/var/named/named.ca,

172.18.22.200將根指向172.18.0.107

wKiom1nHm3rS8c2RAAC2E_dtlb4596.jpg

    172.18.0.106將根指向172.18.0.107

wKioL1nHm0DS2LvJAAA83OrZ9Ag923.png

    打開172.18.0.108上根域的數據庫文件,將根指向172.18.0.107

wKiom1nHm3uidVfbAALZwmIwqZE358.png


wKioL1nHm0KCxQ45AABTGH_muFs108.png

    打開區域數據庫配置文件

wKiom1nHm3zhZMSUAAAL4Wx7lBc355.png

    建立magedu.com域:

    雙引號內爲域名;

    類型爲master,表示主DNS服務器;

    file指定區域解析數據庫文件的相對路徑(相對於/var/named)和名稱,即爲/var/named/magedu.com.zone

wKiom1nHm33QBwNMAAEoQYxYaiM708.png

     打開並建立區域解析數據庫文件/var/named/magedu.com.zone

wKioL1nHm0OBAhuJAAHrh0idx8w440.png

    區域解析庫:由衆多資源記錄組成,記錄類型包括A、 SOA、NS、CNAME等

    資源記錄定義的格式:

    語法:name        [TTL]        IN                   rr_type          value

          名字       生命期     關鍵字             記錄類型          值

    下面以上圖爲例介紹區域解析庫的使用:

    (1)

wKioL1nHnP_RXVIOAAAgNxmjsBc609.png

    TTL是記錄緩存的有效期, 默認以s爲單位

    圖中$TTKL爲全局TTL,對下面的每條記錄都有效,每條記錄也可以單獨定義局部TTL,只對當前記錄有效。

   (2)SOA記錄:

wKioL1nHnP-xAiZbAABR4Fi7Umk647.png

  •   @即名字,表示本域的域名,也可以寫成magedu.com.

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •   關鍵字IN

  •   記錄類型爲SOA  

  •   SOA記錄的第一個值是主DNS服務器(有且僅有一個)的名稱,不一定與DNS服務器的主機名保持一致,只要與下面的A記錄匹配,即能夠將該名稱解析成ip地址即可

wKiom1nHnTqiF9apAAAdgM2216U615.png

  •    SOA記錄的第二個值是DNS服務器管理員的郵箱地址,郵箱地址本來應該寫成[email protected].但@有特殊含義,所以將@換成點

wKiom1nHnTqisBeJAAAJPpAqPlk023.jpg

  •   SOA記錄的第三個值由一系列定義組成

wKioL1nHnQDCtXQZAAC_Raa5aTM559.png

      其中,

wKiom1nHnTuQQLbaAAAer5_PKqE535.png

    區域數據庫的版本號,一旦數據庫發生更改,就需要手動增大該序列號。

    主從複製時,系統判斷區域數據庫文件的內容是否發生變化時並不是真正去檢查區域數據庫文件的內容,而是看序列號是否增大,也就是說即使區域數據庫文件的內容未發生變化,只要序列號增大,系統就認爲區域數據庫文件的內容發生了變化。

    每個域可能有多臺DNS服務器,其中有且僅有一臺主DNS服務器,主DNS服務器的數據庫可讀可寫,從DNS服務器的數據庫只能讀,即只能供用戶查詢。從DNS服務器數據庫的內容來自於主DNS服務器數據庫, 主從DNS服務器數據庫的同步(即主從複製)機制有pull和push兩種:

    push:主DNS數據庫重啓服務時,會檢查序列號。當序列號變化,即區域數據庫文件的內容發生變化,主DNS數據庫就會將新版數據庫push至從DNS數據庫,否則不執行push動作。

    pull:從DNS數據庫會週期性的到主DNS數據庫檢查序列號。當序列號變化,即區域數據庫文件的內容發生變化,從DNS數據庫就會將新版數據庫pull至自己的數據庫,否則不執行pull動作。

wKioL1nHnQDi01hxAAAIBtg6tVI564.jpg

     refresh定義了主從複製時每個週期的長度,默認以秒爲單位

wKiom1nHnTvymtXhAAAF1k7QMUg383.jpg

     若因爲網絡原因,導致pull動作失敗,則從DNS服務器過一段時間後會再去嘗試。retry定義了這段時間的長度,默認以秒爲單位

wKioL1nHnQHjovPQAAAG6gIDwic777.jpg

     若主從DNS服務器的數據庫超過expire時間仍未同步,則從DNS服務器數據庫中的內容將過期

wKioL1nHnQGRKtwhAAAHXDSxAXo979.jpg

    若用戶查詢DNS服務器時輸入錯誤,如寫成wwwwww.magedu.com,DNS服務器查不到該條記錄,用戶的機器上就會緩存該錯誤查詢結果,下次再輸成該錯誤結果時,就不用到DNS服務器上再去查詢。miminum定義錯誤查詢結果的緩存時間

   (3)NS記錄

    NS記錄表示出了爲本域及本域的子域提供名字解析服務的所有DNS服務器

wKiom1nHnTvQG-7GAAAetl8DgrA428.png

  •   NS記錄的名字爲空時,會默認其名字爲本域的域名,即magedu.com

也可以寫成magedu.com.或@

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •   關鍵字IN

  •   記錄類型爲NS  

  •   在本例中,NS記錄的值是當前域DNS服務器的名稱,不一定與DNS服務器的主機名保持一致,只要與下面的A記錄匹配,即能夠將該名稱解析成ip地址即可

  (4)A記錄

   DNS服務器的A記錄

wKiom1nHnTuTDCVEAAAnT_s0ciM428.png

  •   在本例中,A記錄的名字爲dns1,系統會默認將其補全爲dns1.magedu.com.

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •    關鍵字IN

  •   記錄類型爲A

  •   值爲192.168.25.107,與上面的NS記錄匹配,將DNS服務器名稱解析成ip地址,即當前域DNS服務器的ip爲192.168.25.107

    主機的A記錄

wKioL1nHnQHiVQ9pAAAo3AyHdhw646.png

  •   在本例中,A記錄的名字爲websrv,系統會默認將其補全爲websrv.magedu.com.

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •   關鍵字IN

  •   記錄類型爲A

  •   值爲192.168.25.66,即主機websrv.magedu.com.的ip爲192.168.25.66

   (5)別名記錄

wKiom1nHnTyzQEW8AAAc1JpHvcw354.png

  •   在本例中,別名記錄的名字爲www,系統會默認將其補全爲www.magedu.com.

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •    關鍵字IN

  •   記錄類型爲A

  •   值爲websrv,系統會默認將其補全爲websrv.magedu.com.  即www.magedu.com.是主機websrv.magedu.com.的別名,然後配合上面的A記錄,可知ip爲192.168.25.66。當客戶端請求解析www.magedu.com這個別名對應的ip時,首先由別名記錄得到websrv.magedu.com. 然後由A記錄得到ip

wKioL1nHnQLDzgUdAAEG-Oy6aVU753.jpg

    172.18.18.5客戶端直接請求172.18.250.110解析www.magedu.com,因爲172.18.250.110有magedu.com域,在該域的數據庫文件中有www.magedu.com的主機記錄,即可解析爲ip

二 搭建magedu.com域的從DNS服務器(172.18.22.200)

1 檢查SELINUX

wKiom1nHn36ySFNXAAALjwgXV6w031.png

    當前SELINUX的狀態爲Permissive,即已禁用

2 檢查防火牆

wKiom1nHn03gm0nUAABtuNmfIFE066.png

    當前防火牆的狀態爲已禁用

3 配置DNS

wKioL1nHnrrhTh9pAACNIktoQRE777.png

    打開總配置文件

wKiom1nHnvSBOEUPAAG4my2mt38652.png

    圖中表示監聽本機所有ip,爲所有網段的ip提供查詢服務

wKiom1nHnvTT3mZvAAASw3piabM479.png

   建立magedu.com域:

   雙引號內爲域名,注意從服務器的域名仍爲magedu.com;

   類型爲slave,表示從DNS服務器;

    file指定區域解析數據庫文件的相對路徑(相對於/var/named)和名稱,即爲/var/named/slaves/magedu.com.zone,從DNS服務器的區域解析數據庫文件放在/var/named/slaves下

wKioL1nHnr6gRoDmAAArthr-szk009.jpg

   重啓服務後主從DNS服務器的數據庫文件自動同步

wKiom1nHnvjAJLOXAAEJUICkuSI969.jpg

     172.18.18.5客戶端直接請求172.18.22.200解析www.magedu.com,因爲172.18.22.200是172.18.250.110的從DNS服務器,所以其數據庫文件與主DNS服務器上數據庫文件的內容相同,雖然沒有magedu.com域,但有該域的數據庫文件,即有www.magedu.com的主機記錄,就可解析爲ip


三 搭建com域的DNS服務器(172.18.0.109 )

1 檢查SELINUX和防火牆

    檢查設置方式可以參考上面,此處不再贅述

2 DNS設置

wKioL1nHoNDx9SYpAABOakAC9B8246.png

    打開區域數據庫配置文件

wKiom1nHoQuggqomAAAUHRvOWPs050.jpg

    建立com域:

    雙引號內爲域名;

    類型爲master,表示主DNS服務器;

    file指定區域解析數據庫文件的相對路徑(相對於/var/named)和名稱,即爲/var/named/com.zone

wKioL1nHoNCAsudOAAAtm_aQavY020.jpg

    進入/var/named目錄

wKiom1nHoQvxaSlEAAANoOZneSo578.jpg

    打開並建立區域解析數據庫文件com.zone

wKioL1nHoNGR76eGAAIFNx3aY9s518.png

     NS記錄表示出了爲本域及本域的子域提供名字解析服務的所有DNS服務器

wKioL1nHoNGhNx_OAAAYFLeAmpE831.png

  •   NS記錄的名字爲magedu,系統會默認補上本域的域名,即magedu.com.表示爲本域的子域magedu.com提供名字解析服務的DNS服務器

      不可以寫成@,因爲@表示本域域名

  •   TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •   關鍵字IN

  •   記錄類型爲NS  

  •   在本例中,NS記錄的值是本域的子域的DNS服務器的名稱,不一定與DNS服務器的主機名保持一致,只要與下面的A記錄匹配,即能夠將該名稱解析成ip地址即可

   

    DNS服務器的A記錄

wKiom1nHoQyBgzS5AAAnT_s0ciM069.png

  •   在本例中,A記錄的名字爲dns1,系統會默認將其補全爲dns1.magedu.com.

  •    TTL爲空,表示繼承全局TTL,即生命期爲86400s

  •   關鍵字IN

  •   記錄類型爲A

  •   值爲172.18.250.46,與上面的NS記錄匹配,將DNS服務器名稱解析成ip地址,即本域的子域的DNS服務器的ip爲192.168.25.107

    本例中,com域將其子域magedu.com的DNS服務器委派給172.18.250.46

wKioL1nHoNHQElCCAAAWmjPZ2_0984.jpg

    重啓服務

wKiom1nHoQzgdfQ0AAD6oSLsvsQ988.jpg

    客戶端請求172.18.0.109將www.magedu.com解析成ip地址,172.18.0.109只有com域,而com域的子域是magedu.com域,根據區域數據庫文件得到magedu.com域的DNS服務器爲172.18.250.46,172.18.250.46就有www.magedu.com的主機記錄,即可解析爲ip

四 搭建根域的DNS服務器(172.18.0.107)

1 檢查SELINUX和防火牆

    檢查設置方式可以參考上面,此處不再贅

2 DNS設置

wKiom1nHoz2Skt1UAABXnWGfl_k502.png

     打開區域數據庫配置文件

wKiom1nHoz7xljr_AAATXlBaJzI124.jpg

    建立根域:

    雙引號內爲域名;

    類型爲master,表示主DNS服務器;

    file指定區域解析數據庫文件的相對路徑(相對於/var/named)和名稱,即爲/var/named/root.zone

wKioL1nHowPQdti_AAA7nIVV0SY850.png

    打開總配置文件

wKiom1nHoz6gTKtHAAISrvLxA6E049.png

    圖中表示監聽本機所有ip,爲所有網段的ip提供查詢服務

wKioL1nHowSAizw5AAAXtqKOR_g912.jpg

    因爲172.18.0.107要當根,刪掉真正的根的定義

wKiom1nHoz7RG5qtAABjJoZ3GNM885.jpg

    打開並建立區域解析數據庫文件/var/named/root.zone

wKioL1nHowXQPqQFAAG3llEgBLo548.png

    根域將其子域com的DNS服務器委派給172.18.0.109

wKiom1nHoz-w2-bEAAAaBbUeyGo413.jpg

    重啓服務

wKioL1nHowWTOEK5AAB_3x0aAhQ204.png

    客戶端請求172.18.0.107將www.magedu.com解析成ip地址,172.18.0.107只有根域,根域的子域是com域,根據區域數據庫文件得到com域的DNS服務器爲172.18.0.109,172.18.0.109只有com域,com域的子域是magedu.com域,根據區域數據庫文件得到magedu.com域的DNS服務器爲172.18.250.110,172.18.250.110就有www.magedu.com的主機記錄,即可解析爲ip

五 搭建運營商的DNS服務器(172.18.0.106 )

     172.18.0.106用作轉發服務器

     當DNS服務器上沒有某域,且未專門設置轉發時,默認將請求轉發至根域DNS服務器;當DNS服務器上沒有某域,且專門設置了轉發時,轉發方式有全局轉發和特定區域轉發兩種類型:

     全局轉發:

     將轉發語句寫在option中,表示全局轉發,即客戶端向DNS服務器A提出解析請求後,

  •   若DNS服務器A上有相應的域,則由DNS服務器A進行解析,並將解析後的結果返回給客戶端;

  •   若DNS服務器A上沒有相應的域,則全部轉發到option中指定的DNS服務器B上:

      (1)若設置轉發規則爲first,則將請求轉發給DNS服務器B後,B未找到,則DNS服務器A會採用默認的轉發路徑,即將請求轉發至根域DNS服務器

      (2)若設置轉發規則爲only,則將請求轉發給DNS服務器B後,B未找到),則DNS服務器A直接將解析失敗的結果返回給客戶端

示例:

wKioL1nHpGLDJJQvAACNyTA4Gmo171.jpg

     圖中表示若當前DNS服務器上沒有相應的域,則全部轉發到option中指定的DNS服務器:192.168.25.108

     特定區域轉發:

     將轉發語句寫在zone中,表示特定區域轉發,即客戶端向DNS服務器A提出解析請求後,

  •  若DNS服務器A上有相應的域,則由DNS服務器A進行解析,並將解析後的結果返回給客戶端;

  •  若DNS服務器A上沒有相應的域,且該域未設置轉發,則DNS服務器A會採用默認的轉發路徑,即將請求轉發至根域DNS服務器

  •   若DNS服務器A上沒有相應的域,且該域設置了轉發(即存在一個類型爲forward、域名與要解析的域相同的域)則轉發到zone中指定的DNS服務器B上:

    (1)若設置轉發規則爲first,則將請求轉發給DNS服務器B後,B未找到,則DNS服務器A會採用默認的轉發路徑,即將請求轉發至根域DNS服務器

    (2)若設置轉發規則爲only,則將請求轉發給DNS服務器B後,B未找到,則DNS服務器A直接將解析失敗的結果返回給客戶端

     示例:

     vim /etc/named/rfc1912.zones

wKioL1nHpGKBVF9DAAAdfpIt_80615.jpg

     圖中表示若當前DNS服務器上沒有wang.com域,且爲wang.com設置了轉發,即將請求轉發到192.168.25.108

    在本實驗中,172.18.0.106用作轉發服務器,並未專門設置轉發,直接採用的是默認的轉發路徑,即將請求轉發至根域DNS服務器:

    vim /etc/named.conf

wKiom1nHpJ2DUxNwAAARX0oFynU206.jpg

    實際上定義了一種特殊的特定區域轉發,即當前DNS服務器要查詢根域時,會讀該語句塊,將請求轉發至該語句塊中定義的DNS服務器:在/var/named/named.ca中定義了該DNS服務器的ip

wKioL1nHpGOR8jhvAAMVdcEFkrk178.png

     172.18.0.106已將根指向172.18.0.107

wKiom1nHpJ6BtZS9AAAg5qn5Ono806.jpg

     重啓服務

wKioL1nHpGTz5AcmAACar66ylTQ584.jpg

    客戶端請求172.18.0.106將www.magedu.com解析成ip地址失敗

wKiom1nHpJ6iB_VNAAASHHw0q6c378.jpg

    打開總配置文件wKiom1nHpZjhrvLKAADUKb8rI68383.jpg

    將這兩項改爲no即可wKioL1nHpGWQfZnhAAEC-h4vzM4989.jpg

    客戶端請求172.18.0.106將www.magedu.com解析成ip地址,172.18.0.106上沒有與該主機相關的任何信息,則會將請求轉發到根,即172.18.0.107。172.18.0.107只有根域,根域的子域是com域,根據區域數據庫文件得到com域的DNS服務器爲172.18.0.109,172.18.0.109只有com域,com域的子域是magedu.com域,根據區域數據庫文件得到magedu.com域的DNS服務器爲172.18.250.110,172.18.250.110就有www.magedu.com的主機記錄,即可解析爲ip

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章