天天看點

linux系統DNS之主從、子域授權、acl與轉發(第二步)

正反解析

我們知道現在要通路一個網站,隻要輸入一個網址就可以擷取到對應的頁面資訊,而不是用輸入IP位址通路,能夠完成這一功能的過程(将FQDN轉換成IP位址)這就是正向解析,有了正向解析,那麼反向解析又有什麼用呢,正向可以将域名轉換成IP地;反向解析的作用是将IP位址轉換成域名。正向解析是通過正向查找區域(即資料檔案中的A記錄來查找)反向解析是通過反向查找區域(即資料檔案中的PTR來查找),PTR記錄是郵件交換記錄的一種,郵件交換記錄中有A記錄和PTR記錄,A記錄解析名字到位址,而PTR記錄解析位址到名字。位址是指一個用戶端的IP位址,名字是指一個客戶的完全合格域名。通過對PTR記錄的查詢,達到反查的目的.

下面将圖解正反解析:

一、本機環境與軟體包

1

2

3

4

5

6

7

<code>#本機環境</code>

<code>[root@localhost etc]</code><code># lsb_release -a</code>

<code>LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch</code>

<code>Distributor ID: CentOS</code>

<code>Description:    CentOS release 6.5 (Final)</code>

<code>Release:    6.5</code>

<code>Codename:   Final</code>

bind軟體包版本

BIND 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6

正向區域

essun.com

反向區域

1.168.192.in-addr.arpa

二、主配置檔案(/etc/named.conf)

<a href="http://s3.51cto.com/wyfs02/M02/22/86/wKiom1Mf-NWzjjWrAAHyiTe4v5Y264.jpg" target="_blank"></a>

在/var/named下預設的資料檔案

<a href="http://s3.51cto.com/wyfs02/M02/22/7F/wKiom1MfMSyiAC7WAAD6UTv0M0E048.jpg" target="_blank"></a>

檢查文法

<a href="http://s3.51cto.com/wyfs02/M02/22/86/wKiom1Mf_dDi2r9XAAAtJ9fkNZw073.jpg" target="_blank"></a>

在/var/named目錄下新增兩個資料檔案,一個是正向的essun.com.zone資料檔案,一個是essun.com的反向資料檔案192.168.114.zone

正向資料檔案(essun.com.zone)

<a href="http://s3.51cto.com/wyfs02/M00/22/86/wKiom1Mf---gm5dWAAGmRhoFeRg471.jpg" target="_blank"></a>

資料檔案文法檢查(named-checkzone)

<a href="http://s3.51cto.com/wyfs02/M02/22/80/wKiom1MfOmzDvNEWAADrV7UxEKA129.jpg" target="_blank"></a>

反向資料檔案(192.168.1.zone)

<a href="http://s3.51cto.com/wyfs02/M00/22/86/wKiom1Mf_U7A03WKAAFWhviSAOE850.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/22/86/wKiom1Mf_pLTdGPpAADTI-xX8tA775.jpg" target="_blank"></a>

測試正向區域

<a href="http://s3.51cto.com/wyfs02/M00/22/86/wKiom1MgAe2Q4ytEAALVUCxdvLY584.jpg" target="_blank"></a>

反向解析

<a href="http://s3.51cto.com/wyfs02/M01/22/87/wKioL1MgAtbzJc5WAALJfPV5rV8890.jpg" target="_blank"></a>

經過以上的解析,都成功了,如想了解dig的詳細的使用請自覺man或google,也可以使用簡單的host指令:

<a href="http://s3.51cto.com/wyfs02/M02/22/88/wKioL1MgD_zAluTsAAIuN78ClMc448.jpg" target="_blank"></a>

===================DNS正反解析完成=========================================

DNS主從

原理:

主從DNS伺服器資料同步的過程:

①、主 DNS伺服器每次修改完成并重新開機服務後,将傳送notify給所有的Slave DNS伺服器。           ②、Slave DNS伺服器将查詢主伺服器的SOA記錄,主DNS伺服器收到請求後将SOA記錄發送給Slave DNS伺服器。

③、Slave DNS伺服器收到後同時對比查詢結果中的serial值,如果serial值不大于本機的話将結束資料同步過程;但是如果serial值大于本機的話,slave DNS将發送zone transfer請求要求(AXFR/IXFR)。

④、主DNS響應zone transfer請求并傳送結果,直到整個slave更新完成。

注:

當新增一台輔助域伺服器,第一次複制主伺服器時為完全區域傳送(axfr),以後主伺服器每一次修改都是增量傳送(infr)

主DNS的bind版本可以低于從DNS的bind版本;

向區域中添加從伺服器的關鍵兩步:

在上級獲得授權

在區域資料檔案中為從伺服器添加一條NS記錄和對應的A或PTR記錄;

主DNS的主配置檔案(/etc/named.conf)如下:

<a href="http://s3.51cto.com/wyfs02/M02/22/89/wKiom1MgHeqQL7HKAAE3eWVg6U0291.jpg" target="_blank"></a>

主的正向資料檔案内容如下:

<a href="http://s3.51cto.com/wyfs02/M00/22/8B/wKiom1MgHyziuRxDAAEyEeiwA-U718.jpg" target="_blank"></a>

主的反向資料檔案

<a href="http://s3.51cto.com/wyfs02/M00/22/8C/wKiom1MgIE-x7gnhAAEvfnK2Ub0221.jpg" target="_blank"></a>

完成後重新開機主的DNS伺服器

<code>#service named restart</code>

從伺服器配置(/etc/named.conf)如下:

<a href="http://s3.51cto.com/wyfs02/M02/22/93/wKiom1MgJTeQjBIuAAEHFql1kFc193.jpg" target="_blank"></a>

重新開機從DNS伺服器

檢視/var/named/slaves

<a href="http://s3.51cto.com/wyfs02/M00/22/95/wKiom1MgJmKyi94xAACopX6wKeU735.jpg" target="_blank"></a>

每個檔案的内容

192.168.1.zone

<a href="http://s3.51cto.com/wyfs02/M00/22/95/wKiom1MgJr2BmijvAAHvC2jf1Vs937.jpg" target="_blank"></a>

essun.com.zone

<a href="http://s3.51cto.com/wyfs02/M01/22/95/wKiom1MgJwWxEoOFAAH0lWJtz9Y858.jpg" target="_blank"></a>

當然也要修改/etc/resolv.conf中的nameserver的先後順序,這樣也算實作的最簡單的輪詢負載a_c!

當有新的記錄在主的資料檔案中被增加上,記得要修改序列号(每次修改後要改變序列号),這樣才能同步哦,以上實驗不考慮安全因素。

讓我們來看一下日志記錄(/var/log/messages),是如何做到主從同步的

<a href="http://s3.51cto.com/wyfs02/M01/22/96/wKioL1MgKUTjueSIAARV8fykh8E299.jpg" target="_blank"></a>

其實主從的原理,就是從日志分析出來的。

(注:有問題看日志,這是一個好習慣啊)

===========================主從完成===================================================

DNS子域授權

所謂的子域授權,就是将原來在同一個域中的部分區域分到一個特定的區域解析。(此處個人了解)

父域的資料檔案中添加“膠水”記錄

<a href="http://s3.51cto.com/wyfs02/M02/22/97/wKioL1MgSOKDzRLhAAG5-i2C9Xc397.jpg" target="_blank"></a>

父域文法檢查

<a href="http://s3.51cto.com/wyfs02/M00/22/96/wKiom1MgSYvTOqndAACX0BNFP8k796.jpg" target="_blank"></a>

重新開機bind服務

在子域安裝好bind,子域的配置檔案(/etc/named.conf)

<a href="http://s3.51cto.com/wyfs02/M00/22/97/wKioL1MgShbjGl2kAABIPzmX8Dw727.jpg" target="_blank"></a>

子域的資料檔案(/var/named/mozi.essun.com)

<a href="http://s3.51cto.com/wyfs02/M01/22/97/wKioL1MgSvmC0acxAAEoSpVDiKM591.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/22/97/wKioL1MgS2WTCIeBAAClpXz5rdM568.jpg" target="_blank"></a>

修改檔案權限(640)與檔案的屬主屬組

重新開機named服務

子域測試解析

<a href="http://s3.51cto.com/wyfs02/M01/22/96/wKiom1MgTKeTUdxgAAKZ7IOUQy8595.jpg" target="_blank"></a>

注:之是以沒有在dig後面指父域的IP位址,是因為我在設定IP位址時,将DNS指向了父域。

在父域測試

<a href="http://s3.51cto.com/wyfs02/M00/22/98/wKioL1MgTb_CJuZLAALMG69Yg7E059.jpg" target="_blank"></a>

如果有多個子域就如以上的步驟重複多次,如果子域同樣有主從,那麼從伺服器上的NS也要寫到父域中資料檔案中。

注:在子域測試父域内的主機是無法解析的,因為,如果目前區域無法解析此記錄,會将此記錄轉發給根,而外網并沒給此區域授權,是以将無法解析此記錄,最終解析失敗。

===============================子域授權完成==========================================

DNS轉發

接一個問題,如果想子域解析父域,這就用到了forward,它可以将非本區域負責的解析的記錄轉發到其指定的區域中。如果上一個問題在子域的配置檔案(/etc/namd.conf)中設定轉發區域,指向父域,這樣就可以解析到父域中的主機了,其原始内容不變,隻增加一個區域檔案,因為是轉發是以不需要資料檔案。

配置資訊如下:

<a href="http://s3.51cto.com/wyfs02/M00/22/97/wKiom1MgYzyR6eV6AADGHR8ZZrk719.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/22/98/wKioL1MgY2zh44yUAABHcW7P30Y089.jpg" target="_blank"></a>

無問題後,重新開機服務

測試解析父域

<a href="http://s3.51cto.com/wyfs02/M02/22/97/wKiom1MgZJ-Cco6wAALhSlTYncs838.jpg" target="_blank"></a>

以上這種轉發方式叫指定的區域轉發

還有一種請況就是當父域解析不到時,在options中可中設定

<code>options {</code>

<code>        </code><code>directory </code><code>"/var/named"</code><code>;</code>

<code>        </code><code>forward first;</code>

<code>        </code><code>forwarders { 192.168.1.114; };</code>

<code>};</code>

forword 的類型有兩種:

forward first設定優先使用forwarders DNS伺服器做域名解析,如果查詢不到再使用本地DNS伺服器做域名解析。

forward only設定隻使用forwarders DNS伺服器做域名解析,如果查詢不到則傳回DNS用戶端查詢失敗。

=================================DNS轉發完成============================================

DNS的ACL(Access Control List)

簡要

通路控制清單(ACL)就是一個被命名的位址比對清單。使用通路控制清單可以使配置簡單而清晰,一次定義之後可以在多處使用,不會使配置檔案因為大量的 IP 位址而變得混亂。

<a>定義 ACL</a>

要定義通路控制清單,可以在 BIND 的主配置檔案 /etc/bind/named.conf 中使用 acl 語句來實作。acl 語句的文法為:

acl ACL_NAME {

172.16.0.0/16;

192.168.0.0/24;

127.0.0.0/8;

};

BIND 裡預設預定義了 4 個名稱的位址比對清單,他們可以直接使用,分别為:

any : 所有主機

localhost : 本機

localnets : 本地網絡上的所有主機

none : 不比對任何主機

acl 是 named.conf 中的頂級語句,不能将其嵌入其他的語句。

要使用使用者自己定義的通路控制清單,必須在使用之前定義。因為可以在 options 語句裡使用通路控制清單,是以定義通路控制清單的 acl 語句應該位于 options 語句之前。

為了便于維護管理者定義的通路控制清單,可以将所有定義 acl 的語句存放在單獨的檔案 /etc/bind/named.conf.acls 中,然後在主配置檔案 /etc/bind/named.conf 中如下語句

include "/etc/bind/named.conf.acls";

以下的安全控制選項中就可以寫acl清單名了!!!

安全控制選項:

allow-transfer {}; 允許區域傳送清單

通常都需要啟用;

allow-query {};給那些主機開啟查詢功能

此項通常僅用于伺服器是緩存名稱伺服器時,隻開放查詢功能給本地用戶端;

allow-recursion {  };為那些主機遞歸

定義遞歸白名單;

allow-update { none; };(建議不要開啟)

定義允許動态更新區域資料檔案的主機白名單

======================================完============================================

本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1374397,如需轉載請自行聯系原作者

繼續閱讀