歡迎您光臨本站 註冊首頁

在Debian上用Bind配置DNS伺服器

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

在Debian上用Bind配置DNS伺服器

本章目錄1 什麼是DNS       2 為什麼需要DNS        3 BIND介紹       4 配置
       5 測試
       6 TODO
      
7 結束語       8 參考文獻      

1 什麼是DNS    初學者可能不理解DNS到底是什麼,幹什麼用。我是在1998年大學畢業時才聽說這個詞的。那時我在聊天室碰到濰坊信息港的一個網管,我恬不知恥地說我也是個網管,他說也維護DNS嗎?我說,DNS是什麼?
  ——DNS,Domain Name Service,或者Domain Name Server,域名服務/域名伺服器。
          你在你的瀏覽器裡面輸入http://www.linuxsir.com之後,之所以可以上去,就是因為有了DNS。
  簡單地說,DNS把一串名字,轉換成了IP地址。你可能會說:如果我直接使用IP地址,那就不需要DNS了嗎?對!不過,請你接著往下看。

2 為什麼需要DNS
        
2.1 互聯網需要DNS
        
  現在幾乎整個互聯網都是基於TCP/IP的。在這個世界里,不管你訪問哪個網站、哪台機器,必須得知道它的IP地址才可以。好,我告訴你,202.106.185.203這個地址,是新浪網的IP地址,你每次上網,都得再瀏覽器的地址欄裡面輸入http://202.106.185.203才可以訪問新浪。你可能會說:沒問題,不就一串數字嘛,我記得住!可是,你想一下,在Internet上,有多少台主機啊!你可能會記住其中幾台甚至幾十台的IP地址,但是你肯定記不住全部。
  正是由於IP地址不好記,人們才想了個辦法,讓你只需要記住名字,然後系統通過這個名字,到資料庫裡面去查找它的IP地址,然後再把查到的IP地址反饋給你,比如反饋給瀏覽器,最後,瀏覽器用這個由DNS給的IP地址去訪問你想去的站點。2.2 區域網需要DNS
        
  那麼,在區域網內部呢?需要DNS嗎?
  太需要了!你不要覺得,單位就這麼幾台機器,用hosts解析,不也一樣嗎?你可千萬記住這個教訓,當公司越來越大,hosts的維護量將大的驚人!我所在的公司,前不久就面臨了這種尷尬。所以,一定要有一台DNS,然後在公司內部定義一個規範的主機命名規則,這才是個好網管,呵呵。

3 BIND介紹          Bind是使用最廣泛的Domain Name Server,它是Berkeley         Internet Name Domain Service的簡寫,伯克里大學編寫的。這個大學可真厲害,寫了不少著名程序。
        原本bind的版本一直在 4.8.x 4.9.x 左右,後來一口氣跳到8.1.x,是因為大幅度改進了功能,並修復了漏洞。現在bind有兩個版本在同時發展,bind         8.x 和 bind 9.x,最新版本是8.3.3和9.2.1。
        
3 安裝
        
3.1 軟體版本

  目前debian的sid,同樣提供了8版本的bind和9版本的bind,後者的軟體包名字叫做bind9.deb,版本是最新的9.2.1版。

3.2 安裝
        
  安裝過程非常簡單:            # apt-get install bind9       4 配置
          由於我們前面第三章在配置郵件伺服器的時候,使用了hosts文件來解析IP地址,現在我們需要把它去掉,讓系統通過DNS來解析它所需要的IP地址。
  我們製作基本的配置。至於高級功能,我們將在本文的下一個版本里描述。
4.1 去掉hosts信息
          如果你閱讀過本文第三章,你就會知道,我有兩台機器,一台筆記本電腦安裝了win2000,名字叫notepad;另一台台式機裝了Debian,機器名叫debian。他們都屬於test.com這個域,這個域名沒有在ISP那裡註冊,是我們內部用的。我分別編輯win2000機器上的\winnt\system32\drivers\etc\hosts這個文件和debian機器上的/etc/hosts,去掉下面的這些行:
            192.1.110.120 debian.test.com debian
192.1.110.122 notepad.test.com notepad        這時你可以在win2000機器上啟動OutlookExpress,做一下收取郵件的動作,它會說找不到debian.test.com——這就對了,因為hosts文件裡面沒有指向這個名字的IP地址,而且,我們也沒有給win2000指定DNS伺服器,所以它肯定找不到debian.test.com。
        4.2 在客戶機上設置DNS
          在我的Win2000機器裡面,在桌面上右擊「網上鄰居」選擇屬性,在出現的窗口中右擊「本地連接」選擇屬性,然後雙擊TCP/IP,在右下角的「首選DNS」裡面,輸入192.1.110.120。這是我的Debian機器在區域網上的IP地址。如果你用的是win98,那麼情況差不多,在一個叫做DNS的標籤裡面設置首選DNS。我很久不用98了,差不多忘了。
  如果你是個急性子,你會發現,誒?怎麼設上了DNS了,我的Outlook         Express還是說找不到debian.test.com?呵呵,別急別急,我們的DNS伺服器還沒弄好吶!
4.3 在Debian上設置DNS
          我們要事先把Debian機器的DNS指向它自己。修改/etc/resolv.conf,修改成:
            search test.com
nameserver 192.1.110.120        你不會把我的IP地址也抄上吧,呵呵。
4.4 配置DNS伺服器
        4.4.1 應用環境
          我們把實驗環境重新描述一下。
  ◆一個C類網段地址 (本例中假定是192.1.110.0)
          ◆企業域名為 test.com,沒有在ISP註冊。(主域名伺服器地址         192.1.110.120,主機名為 debian.test.com)
          ◆企業網通過路由器與Internet連接

  假如你的應用環境與上述條件不同,也請往下看,本文會在上述例子的基礎上針對以下情況作修正:

  ◆多個網段
  ◆封閉的內部網
  ◆只能訪問局部公共網的情況(如169網、上海熱線等)

  我們將使用一個叫做rndc的工具,rndc可以用於啟動、中止、重啟動、刷新DNS數據、輸出DNS數據等多種調試功能。
4.4.2 配置named.conf
         DNS 伺服器的主體是域名伺服器進程         named ,named 啟動後向DNS客戶機提供域名解析服務,把域名轉換成IP地址。
           named 啟動時需要讀取一個初始化文件,預設情況下是         /etc/bind/named.conf,這是bind的基本配置文件,不過這裡面並不包含DNS數據。
  注意,你也許會在網上找到一些教程,這些教程有的是以         bind 4.x為藍本的,所以它的named.conf裡面的註釋符號是分號「;」,但是自動bind         8開始,語法變了。下面我們來說一下:
            ; 這是bind 4.x的註釋,前面用分號      //不過從bind 8開始,有三種註釋符號可以用:               C樣式, C++樣式, 或者shell樣式:
                      /* 這是C樣式的註釋符號 */
// 這是 C++樣式的註釋符號
# 這是shell樣式的註釋符號              請你先把默認的/etc/bind/named.conf備份一下,我將給大家寫一個簡單的named.conf,用於做Caching-only的DNS配置。
            // 指定 named 從               /var/cache/bind 目錄下讀取 DNS 數據文件。
      // 這個目錄用戶可自行指定並創建,指定后所有的DNS               數據文件都存放在此目錄下。
      options {
                   directory "/var/cache/bind";
              };
      
      // 指定 named 作為 test.com               域的主域名伺服器。
      // db.test 文件中包含所有 *.test.com               形式的域名轉換數據。
      
      zone "test.com" in {
                   type master;
                   file "db.test";
              };
      
      // 指定 named 作為 192.1.110               網段地址轉換主伺服器。
      // db.192.1.110 文件中包含了所有 192.1.110.*               形式的地址到域名的轉換數據。
      zone "110.1.192.in-addr.arpa" in {
                  type master;
                  file "db.192.1.110";
              };       // 指定 named               作為127.0.0網段地址轉換主伺服器。
      // db.127.0.0 文件中包含了 127.0.0.*               形式的地址到域名的轉換數據。
      //(127.0.0網段地址是區域網介面的內部       loopback 地址)
      zone "0.0.127.in-addr.arpa" in {
                  type master;
                  file "db.127.0.0";
              };
      
      // 指定 named 從               db.cache 文件中獲得 Internet 的頂層「根」伺服器地址。
              zone "." in {
                  type hint;
                  file "db.cache";
              };    要注意第二和第三個區域中的網段地址是倒寫的,另外,各個區域所使用的數據文件的文件名也是可以自行決定的。
  請把上面的內容保存為你的/etc/bind/named.conf。
4.4.3 準備數據文件
          上面的那個named.conf,相信你已經看明白了。那裡面提到,在/var/cache/bind這個目錄下面,應該有DNS數據文件db.test、db.192.1.110、db.127.0.0         還有  db.cache。下面我們就要建立這些文件。
        4.4.3.1 建立 db.test 文件
           根據 /etc/bind/named.conf 的定義,我們在         /var/cache/bind 目錄下建立 db.test,其中應該包括所有在 test.com         域內的主機節點。但在機器數量較多時,為了調試方便,建議一開始只把幾台節點的數據放入文件,待         named 正常工作后再把其他節點的數據補充進去。下面是 db.test的例子:
                    @ IN SOA debian.test.com. root.debian.test.com. (
                          200211131 ; serial, todays date + todays serial #
                          28800 ; refresh, seconds
                          7200 ; retry, seconds
                          3600000 ; expire, seconds
                          86400 ) ; minimum, seconds
                          NS debian.test.com.
                          MX 10 debain.test.com.


; 域名伺服器列表
test.com.  IN NS  debian.test.com.

; 計算機名稱和地址
localhost.test.com.  IN A         127.0.0.1
debian.test.com.     IN A         192.1.110.120
notepad.test.com.    IN A         192.1.110.122

; 別名
www                  IN CNAME     debian.test.com.
ftp                  IN CNAME     debian.test.com.         其中第一行是 SOA         記錄,定義了域名數據的基本信息,依次是 DNS 伺服器名、DNS         管理員郵件地址,括弧內的第一個數字是文件版本號,每次本文件內容修改後,必須更改此號。其餘數字與DNS伺服器直接的數據交換有關,在這裡我們不需要改動。
   括弧後面有一條NS記錄和一條MX記錄,定義了域名伺服器本身的域名和username@test.com         形式郵件地址所對應的郵件伺服器名字。
   在此以下是各種域名/地址轉換數據,其中A記錄是DNS域名到IP地址的記錄,是必須有的。
  CNAME定義了一些主機的別名,比如我們將debian.test.com作為公司的www和ftp伺服器,所以我們提供了www.test.com和ftp.test.com作為debian.test.com的別名,用戶只需要根據習慣就可以訪問公司的www、ftp伺服器了,如果將來我們換用別的主機作www和ftp伺服器,只需要修改CNAME記錄就可,對用戶沒有影響。

   注意: CNAME 記錄最後的帶域名的主機名后必須帶一個「.」。
          複製這個文件到bind的工作目錄/var/cache/bind,這個目錄是我們剛才在/etc/bind/named.conf裡面定義的。
4.4.3.2 建立 db.127.0.0         文件
          這是個反向 DNS數據文件。         反向數據文件是這樣用的:知道 IP地址,查詢主機名。每個網段分別有一個數據文件。
           反向 DNS 數據文件中的主要部分是 PTR 記錄,PTR         記錄中的 IP 地址都只有主機號,named 會根據 named.conf         的定義自動加上前面的網路號,注意後面的主機名要附加一個「.」

   對於內部網段 127.0.0 通常只有一個地址,即 127.0.0.1         loopback 地址,db.127.0.0 內容如下:
                    @ IN SOA debian.test.com root.debian.test.com. (
                               2002111300 ; Serial
                               28800 ; Refresh
                               14400 ; Retry
                               3600000 ; Expire
                               86400 ) ; Minimum
                               IN NS debian.test.com.

1            IN PTR            localhost.        把這個文件到複製/var/cache/bind目錄下面。
4.4.3.2 建立 db.192.1.110 文件
          把所有相同網段的主機 IP地址和主機名,都寫在裡面:
                    @ IN SOA debian.test.com root.debian.test.com. (
                               2002111300 ; Serial
                               28800 ; Refresh
                               14400 ; Retry
                               3600000 ; Expire
                               86400 ) ; Minimum
                               IN NS debian.test.com.

; 所有主機都寫在這兒
120 PTR debian.test.com.
122 PTR notepad.test.com.        同樣,要把這個文件到複製/var/cache/bind目錄下面。

4.4.3.3 建立 db.cache 文件
          默認情況下,我們在安裝bind9的時候,應該有個文件在/etc/bind/db.root,這個文件就是我們的想要的根的定義。由於我們在         named.conf中指定的文件名是 db.cache,所以我們把它複製為db.cache:
                    # cp /etc/bind/db.root /var/cache/bind/db.cache       5 測試
          我們使用rndc這個工具來控制bind。
5.1 讓新配置文件生效
          因為我們剛才改了配置,所以,需要重新載入一下:
            # rndc reload         然後還需要重新配置一下:
            # rndc reconfig         如果有問題,你可以使用debian為我們準備的腳本重新啟動bind:
            # /etc/init.d/bind9 restart       5.2 在win2000機器上測試
          在win2000上(就是我們的notepad.test.com),使用Outlook         Express,收發郵件。
  看,正常了吧!證明,我們的win2000通過192.1.110.120這台DNS伺服器,找到了debian.test.com這台機器的IP地址了。
5.3 測試工具介紹
          在debian上,我推薦大家使用dig或者host來測試DNS設置,因為nslookup快要退休了,以後版本的軟體可能不再提供nslookup這個工具了。要使用這些工具,需要安裝dnsutils:
            # apt-get install dnsutils         然後,就可以使用dig來測試DNS了:
            # dig -x 192.1.110.120         第一次運行,可能比較慢,別著急,等一會。
6 TODO
        
  這是本文的0.1版,純粹針對初學者的,僅僅實現了最普通的功能。
  在下一個版本,我將深入講解DNS的設置。

7 結束語
        
  本文是《Debian伺服器設置入門》系列教程之第五章,建議您按照順序閱讀,有問題可以和作者20kanaka@yeah.net]kanaka聯繫。
8 參考文獻          《在Linux上建立DNS伺服器》,曹江華,2001年12月27日。地址是:http://www.ccidnet.com/html/tech/os/2001/12/27/92_3895.html  讓我們一起感謝原文作者!

[火星人 ] 在Debian上用Bind配置DNS伺服器已經有714次圍觀

http://coctec.com/docs/service/show-post-34876.html