架設 DNS 所需要的套件

來源:互聯網
上載者:User
  • 安裝 DNS 套件: BIND
    終於廢話都說完了!相信您大概也有點累的吧!?鳥哥是蠻累的啦,因為手臂、肩頸酸痛的毛病頗嚴重....咦!講這個幹嘛!? @_@ 好啦,我們終於要來安裝 DNS 所需要的套件了!還記得前面提過的,我們要使用的 DNS 就是使用柏克萊大學發展出來的 BIND ( Berkeley Internet Name Domain, BIND ) 這個套件啦!那麼怎麼知道您安裝了沒?還記得基礎篇裡面的 RPM 嗎?對啦!就是使用 RPM 來檢驗囉:
     

    [root@test root]# rpm -qa | grep bind
    bind-9.2.1-4mdk         <==這個是用來安裝 Server 的
    bind-utils-9.2.1-4mdk      <==這個是用來做為 Client 端搜尋 domain name 的指令

     
    萬一沒裝怎麼辦?嗄!還問我ㄌㄟ~趕快將您的原版光碟片拿出來,然後將他安裝上去先~不會安裝?請自行拿出『鳥哥的 Linux 私房菜 -- 基礎學習篇』去觀察一下 RPM 的用法吧!

  • BIND 的預設路徑設定:
    基本上, BIND 的主要設定檔為 /etc/named.conf這一支檔案,各種針對主機的設定值都在這個檔案中設定的!但是對於 hostname <--> IP 的對應關係,就需要由 zone 來設定了!但是這個 zone 的檔案名稱是在 /etc/named.conf 裡面規定的!所以,請注意喔,每一個 zone 的名稱都是可變的,但是需要在 /etc/named.conf 裡面命名好!此外,最好將 zone 規定出來的檔案直接放置到 BIND 的預設 zone 擺放的目錄,就是 /var/named 裡面去!比較好管理囉!
  • BIND 的升級:
    必須請大家注意的是,這個 DNS 的 53 port 其實也不是個很安全的咚咚,所以呢,非必要,其實是不太建議啟用 DNS 的啦!不過,如果真的要安裝的話,那麼請隨時注意您的 linux學習 distribution 是否有定時的公告的漏洞修補套件呢?這個真的很重要,因為鳥哥很久很久以前,就是被這個 port 53 給種植了一個蠕蟲,真是討厭的很! @_@
設定部分

    在 DNS 的設定上面,基本上,您必須要已經很清楚 zone 是什麼了,否則很難繼續設定喔!會搞的一塌糊塗的~無論如何,您一定要知道的是, bind 的設定檔,就是 /etc/named.conf 這個檔案,如果他不存在的話,請自行建立吧!另外,針對 DNS server 的類型大致上可以分為三類,分別是:
     

    • Master:這種類型的 DNS 本身含有領網域名稱稱的設定檔(就是有Zone啦!),這個設定檔就是設定正解或者是反解的『Database』囉!所以他本身是具有提供 Internet 查詢所需的資料喔!例如我可以在我的主機上面設定提供 vbird.idv.tw 這個網域,那麼我的主機就是 master 類型的主機啦!

     

    • Slave:這種類型的主機本身不必直接由 DNS 系統管理員手動設定 DNS 的正反解資料庫檔案,而是對應到這部 Slave 所支援的 Master 主機去備份 DNS 的設定檔案資料,也就是說, Slave 會將 Master 上面已經訂定好的正反解對應資料檔案備份一份在自己的系統當中喔!( 註:當然囉,這個 Master 必須要開放 Slave 來更新 Slave 的資料對應檔案喔! ) 此外,需要特別留意的是, Slave 主機並不是在 Master 掛點時才會『活起來』的,而是他與 Master 相同,都同時負責 Internet 上面的 domain 查尋!那麼架設這個 Slave 有什麼好處呢?呵呵!最大的好處就是『單點維護』啦!怎麼說呢?假設您有三部 DNS 主機,那麼萬一您所管理的網域之內要加入一部新的主機名稱,試問,您是要手動修改 3 部電腦還是僅修改一部電腦,其它的兩部讓他自動的更新其設定呢?這樣說親愛的朋友們,您應該可以理解了吧! ^_^!由於這個 Slave 並不是在 Master 掛點時才會活起來的一個 DNS 主機,因此,如果您向 ISP 訂定兩部 DNS 主機時,千萬要讓這兩部都活起來喔!因為不論是 Master 或是 Slave ,在 Internet 上面並非循序來查尋 domain name 的,而是先找到先贏的,所以我們不會曉得哪一部主機會先被查詢到!當然啦!因此兩部 Master/Slave 的機器就需要通通可以在 Internet 上面工作啦!

     

    • Cache-only:通常設定在防火牆上面的呢!這種類型的 DNS 主機沒有自己的資料庫,單純僅協助 Client 端向外部的 DNS 主機要求資料而已~簡單的來說,他可以想成是一個『代理人』的角色而已~

     
    那麼 Master/Slave 的資料更新到底是如何動作的呢?請注意,Slave 是需要更新來自 Master 的 DNS 資料啊!所以當然 Slave 在設定之初就需要存在 Master 才行喔!好了, Master 與 Slave 的資料同步動作可以由底下的圖示來看:
     


    圖四、Master/Slave 的 DNS 主機資料同步過程

    • 判斷是否需要更新(1.1):我們可以在 Slave 設定好向 Master DNS 主機要求資料更新的周期時間,則每當到達更新時間時, Slave 會向 Master 索取是否需要更新資料,這個更新資料的判斷則以 Serial number 是否不同來進行更新喔
    • 判斷是否需要更新(1.2):除了由 Slave 向 Master 的查詢之外,Master 如果 DNS 資料經過變更,且想要 Slave 同步更新時,也可以主動的向 Slave 進行更新通知!
    • 資料同步化(2):最後當然就是資料由 Master 傳送到 Slave 來更新 Slave 的 DNS 資料囉!

     
    請注意,如果您想要架設 Master/Slave 的 DNS 架構時,兩部主機 (Master/Slave) 都需要您能夠掌控才行!網路上很多的檔案在這個地方都有點『閃失』,請特別的留意啊!
     
    底下我們就來談一談兩個簡單的 DNS 主機,分別是 cache-only ( 單純 forward ) 與較為詳細的 Master 類型的 DNS 主機吧!至於 slave 與 Master 的設定蠻類似的,這裡我們就不多加介紹了!
     

    單純的 forward DNS 主機設定:
     
    什麼是單純的 forward DNS 的主機呢?
    好了,瞭解了 BIND 的預設路徑之後,我們知道了主要設定檔是 /etc/named.conf 這個檔案,但是偏偏我的 /etc 底下就沒有這個檔案!哈哈!因為您要自行建立啦! ^_^!在介紹怎麼設定每一個 zone 之前,我們先來玩一個簡單的 DNS 主機!就是 cache-only DNS server !也稱為 forward DNS 囉!顧名思義,這個 DNS server 只有 cache ( 快取 ) 的功能,也就是說,他本身沒有設定檔,完全是由對外的查詢來提供他的資料來源!因為他沒有設定檔,所以他就必須要連上一部合法的 DNS 才行!整個運作的流程可以看成是這個樣子:


圖五、Cache-Only DNS 主機的運作流程

    由上面的圖示來看,您可以發現,其實,我們 Client 端雖然都是使用 Cache-Only 的 DNS 再搜尋,但是,實際上 Cache-only 的主機都是請一個 ( Forwarders ) DNS 主機來幫忙查詢的,本身並沒有設定檔的啦!所以說,基本上, cache-only 的 DNS 只是一個中間傳遞資料的 DNS 主機罷了!那麼為什麼要架設這樣的一個 DNS 主機呢?閑閑沒事幹?當然不是!這是有原因的啦!底下說給您聽囉!
    什麼時候使用 cache-only DNS?
    在某些公司行號裡頭,為了預防員工利用公司的網路資源作自己的事情,所以都會規定 Internet 的聯機上面相當的嚴格,所以說,有的時候,連自己都會被擋住!自然,這個 port 53 也就同樣的,可能被擋住啦!那麼我們知道說,如果沒有 port 53 這個 DNS ,那麼自然就無法解析出 hostname 對應 IP 囉!是的!怎麼辦?這個時候,您可以在『防火牆的那部機器上面,加裝一個 cache-only 的 DNS 服務!』這是什麼意思呢?很簡單啊!就是您自己利用自己的 firewall 與 DNS 去幫您的 Client 端解譯 hostname <--> IP 囉!因為 firewall 可以設定允許存取自己的 DNS 外出,而 Client 端的 DNS server IP 就設定自己的 firewall ,哈哈!這樣就可以取得轉譯啦!
    簡易的 cache-only DNS 設定:
    設定一個 cache-only 的 DNS 主機其實真的很簡單的啦!因為不需要設定正反解的 Zone ,所以只要設定一個檔案即可!真是快樂得不得了吶!
     
  1. 編輯 /etc/named.conf
    在這個檔案中,主要是定義跟主機有關的事項,以及各個 Zone 的代表含意與檔案,因為 cache-only 沒有 Zone ,所以我們只要設定好跟主機有關的設定即可。設定這個檔案的時候請注意:
     

    • 批註資料是以『 // 』來作設定的!
    • 每個段落之後都需要以『 ; 』來做為結尾!

     
    那麼您可以這樣設定這個檔案啦!
     

    [root@test root]# vi /etc/named.conf
    // This settings is only for forwarding DNS Server
    options {
            pid-file "/var/run/named/named.pid"; //我這裡設定 pid-file !這個時候,
                           //請特別留意該路徑的所有人 ( owner )
                           //一定是要 named 這個人才行!
            forward only;             //只允許 forward!
            forwarders {
                    168.95.1.1;          //我這裡使用 hinet 的 DNS !
                    139.175.10.20;        //這個是 seednet 的 DNS !
            };
    };

    [root@test root]# ls -al /var/run/named
    total 12
    drwxr-xr-x    2 named    named        4096 Dec 5 02:28 ./ <==注意這個 owner 喔!
    drwxr-xr-x   10 root     root         4096 Dec 5 02:01 ../

     

    • options 的內容指的是在主機內的主要設定值,裡頭的設定為:

      • pid-file 指的是每一個 services 的記錄自己的 PID ( Process ID ) 的檔案囉!這個檔案通常用在重新啟動或者是 reload 整個 services 最常被使用到的!因為可以使用 kill -1 PID 來重新啟動啊!嗄!忘記什麼是 PID ?趕快拿出基礎篇複習一下!
      • forwarders (不要忘記那個 s 喔!)就是要設定往前尋找的那個『合法』的 DNS 囉!每一個 forward 的主機之 IP 都需要有『 ; 』來做為結尾!
      • forward only:這個設定可以讓您的 DNS 主機僅進行 forward 而已!是 Cache-Only 主機最常見的設定了!

     
    很簡單吧!這樣就已經設定完成了最簡單的 cache-only 的 DNS 主機了!
     

  2. 啟動 named
    啟動總不會忘記吧!?趕快去啟動一下吧!
     
    [root@test root]# /etc/rc.d/init.d/named start
    Starting named:                                                 [ OK ]

     

  3. 觀察 port 的變化
    請特別的注意喔!並不是啟動的時候顯示 OK 就會成功的!所以,還要趕快的來看一下您的 port 53 有沒有啟動ㄋㄟ~
     
    [root@test root]# netstat -utln
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 192.168.1.2:53          0.0.0.0:*               LISTEN
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN
    udp        0      0 192.168.1.2:53          0.0.0.0:*
    udp        0      0 127.0.0.1:53            0.0.0.0:*

     
    特別需要留意的是,如果沒有指定介面的話,那麼所有的網路介面,包含 lo, eth0, ... 等介面都會被設定為可以接受 domain name 要求的響應介面!此外,還記得我們在前面提到的,每個介面同時都會提供 TCP 與 UDP 封包的服務喔!這樣看起來似乎真的有啟動的樣子,不過,我們還是得瞧一瞧設定方面有沒有什麼大問題呢?
     

  4. 檢查 /var/log/messages 的內容訊息
    named 這個服務的記錄檔案就直接給他放置在 /var/log/messages 裡面啦,所以來看看裡面的幾行吧!
     
    [root@test root]# tail -n 15 /var/log/messages | grep named
    Dec 5 02:33:33 test named[3010]: starting BIND 9.2.1 -u named
    Dec 5 02:33:33 test named[3010]: using 1 CPU
    Dec 5 02:33:33 test named[3015]: loading configuration from '/etc/named.conf'
    Dec 5 02:33:33 test named[3015]: no IPv6 interfaces found
    Dec 5 02:33:33 test named[3015]: listening on IPv4 interface lo, 127.0.0.1#53
    Dec 5 02:33:33 test named[3015]: listening on IPv4 interface eth0, 192.168.1.2#53
    Dec 5 02:33:33 test named[3015]: running
    Dec 5 02:33:33 test named: named startup succeeded

     
    呵呵!看起來似乎是沒有問題的樣子了!好了!那麼就直接來測試看看吧!
     

  5. 測試( 請觀看 Client 端的測試專案 )
    Forwarders 的好處與問題分析
    關於 forwarder 的好處與壞處,其實有很多種的意見!大致的意見可分為這兩派:
     

    • 利用 Forwarder 的功能來增進效能的理論:這些朋友們認為,當很多的下層 DNS 主機都使用 forwarder 時,那麼那個被設定為 forwarder 的主機,由於會記錄很多的資訊記錄,因此,對於那些下層的 DNS 主機而言,會增快很多,亦即會節省很多的查詢時間!基本上,這些基本的流程可以看成如所示:

      圖六、Forwarder 參數的運作說明
       
      所有的 cache-only 都設定 forwarder 為『主 DNS 主機』那一部,則由於主 DNS 主機已經記錄了較多的資訊了(每個人都來要求嘛!)所以,當其它人來要求相同的查詢資料時,則主 DNS 那部機器將會直接由其 cache 當中讀取,因此,查詢效率就變快了!
       
    • 利用 Forwarder 反而會使整體的效能降低:但是另外一派則持相反的見解!這是因為當主 DNS 本身的『業務量』就很繁忙的時候,那麼您的 cache-only 主機還向他要求資料,那麼因為他的資料轉送量太大,頻寬方面可能負荷不量,而太多的下層 DNS 又向他要求資料,所以他的查詢速度會變慢!因為查詢速度變慢了,而您的 cache-only 主機又是向他提出要求的,所以自然兩邊的查詢速度就會同步下降!

     
    很多種說法啦!鳥哥本人也覺得很有趣哩!只是不知道哪一派較正確就是了 >_<"" ,不過可以知道的是,如果上層的 DNS 速度很快的話,那麼他被設定為 forwarder 時,或許真的可以增加不少效能哩! 
     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.