天天看點

企業内部DNS從伺服器架構的步驟

從DNS伺服器的架設

之前文章有說“主DNS伺服器”的架構過程,現在來說從伺服器的架構步驟,主從DNS伺服器的IP位址和伺服器名稱跟之前的計劃一樣均不變。主伺服器的IP:172.16.100.1,名稱叫dns;從伺服器的IP:172.16.100.2,名稱叫ns2。

基本上來說從DNS伺服器的設定比較簡單,因為主伺服器的資料都已經做完了,從伺服器隻需要做好連結,然後驗證是否能從主伺服器上讀取到資料即可。

登陸從DNS伺服器,#yum install bind -y,擷取并且安裝bind,然後vim /etc/named.conf,這個conf也是要具備“連結全球13個根節點+本地正向解析+本地反向解析”的功能。

然後#scp 172.16.100.1:/var/named/{name.ca,localhost.zone,named.local},從主DNS伺服器上複制到這三個基本的dns解析檔案,同樣把這三個檔案放入/car/named這個檔案夾内。

然後弄遠端控制軟體rndc,#rndc-confgen > /var/rndc.conf。将rndc.conf裡後幾行的内容複制粘貼到named.conf裡,同時#chmod :named /var/named/和#chmod :named /etc/named.conf。

現在這個時候可以在從伺服器上檢查一下文法,并且嘗試#dig -t A localhost看一下輸出的結果是不是127.0.0.1。如果成功的話,那麼說明整個named.conf這個檔案是OK的。

既然named.conf這個檔案OK,但是裡面還沒有具體的slave設定,是以目前這台DNS伺服器僅僅是一個緩存伺服器而已,還算不上是DNS從伺服器,于是要往裡面添加具體的内容,在named.conf裡添加:

1

2

3

4

5

<code>zone </code><code>"lnsjb.com"</code> <code>IN {</code>

<code>            </code><code>type</code> <code>slave;    </code><code>#指定本伺服器的性質是 從伺服器;</code>

<code>            </code><code>masters { 172.16.100.1; };    </code><code>#他的主子是172.16.100.1</code>

<code>            </code><code>file</code> <code>"/var/named/slave/lnsjb.com.zone"</code><code>;    </code><code>#從主子那裡擷取的相關檔案儲存在這個路徑裡</code>

<code>};</code>

如果要添加一個反向的解析,比如172.16網段的方向解析:

<code>zone </code><code>"16.172.in-addr.arpa"</code> <code>IN {</code>

<code>            </code><code>type</code> <code>slave;</code>

<code>            </code><code>masters { 172.16.100.1; };</code>

<code>            </code><code>file</code> <code>"/var/named/slave/172.16.zone"</code><code>;</code>

先加入這兩段一正一反的資訊,儲存退出之後,#setforce 0,#rndc reconfig,看一下lnsjb.com.zone和172.16.zone 是否被同步了過來。

架設之後

現在主從DNS伺服器已經建立了關系,這時候手動在主DNS上的lnsjb.com.zone裡添加一條新的記錄,比如:games.lnsjb.com 對應的ip是 172.16.100.9。添加完畢之後,要切記把編号+1,然後:wq儲存退出。

在主dns伺服器上#rndc reload,然後到從伺服器上#dig -t A games.lnsjb.com,會看到這條資訊已經可以被解析了。可見編号發生了的改變,主DNS伺服器就會自動通知從伺服器來獲得最新的資料。

但是這樣的設定會帶來巨大的隐患,其他人随便做一個dns伺服器,寫上我們的IP位址,就可以#dig -t axfr 域名 的方式獲得我們伺服器裡目标域所有的IP資訊,這肯定是不安全的。是以要在主伺服器上做一個設定:僅僅準許從dns伺服器的ip可以申請一次性擷取大量資料,其餘的ip位址一律屏蔽掉。

這個時候就要在主DNS伺服器的named.conf裡使用allow-transfer,在開頭的options裡加入allow-transfer的話,是全部域都可以傳送到目标ip上,如果是在某個域内單獨加上allow-transfer的話,是特意指明這個域的資訊可以被傳送到目标ip上,如:

<code>options {</code>

<code>            </code><code>directory </code><code>"named檔案夾的路徑"</code><code>;</code>

<code>            </code><code>allow-transfer { 203.56.100.4;176.24.99.6; };    </code><code>#這樣就指定下面所有的域資訊可以被這兩個IP擷取,其餘IP都不行</code>

還有一個方法,比較一勞永逸,就是在主dns伺服器上設定ACL(通路控制清單)。這個acl要在named.conf檔案裡的最上方進行設定,把具體的ip或者某個網絡端添加到acl裡,比如:

6

7

8

9

10

11

12

13

14

<code>acl MYSLAVES {</code>

<code>           </code><code>127.0.0,1;    </code>

<code>           </code><code>203.56.100.1;</code>

<code>           </code><code>176.24.99.1;    </code><code>#将上面三個ip位址,歸屬于MYSLAVES這個acl裡</code>

<code>acl MYCLIENTS {</code>

<code>           </code><code>192.168.0.0</code><code>/24</code><code>;        </code><code>#将整個192.168.0.1~192.168.0.254都加入到MYCLIENTS這個acl裡</code>

<code>           </code><code>127.0.0.1;        </code><code>#别忘了本機也要遞歸的</code>

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

<code>           </code><code>allow-transfer { MYSLAVES; };    </code><code>#隻有MYSLAVES組裡的成員可以通路</code>

<code>           </code><code>allow-recursion { MYCLIENTS; };    </code><code>#隻有MYCLIENTS組裡的成員可以遞歸查詢</code>

acl有幾個預設的名稱,常用的有:none(一個都沒有)、any(所有)、localnet(本地機處在的網絡)

如果要檢查是否可以遞歸的方式進行查詢,那就#dig +recuse -t 目标網址 @指定的dns伺服器(這個伺服器要能上網際網路)。

 本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1752963

繼續閱讀