藍森林首頁| 返回主頁 | 本站地圖 | 站內搜索 | 聯系信箱 |
您目前的位置﹕首頁 > 自由軟件 > 技術交流


《Debian服務器設置入門》系列教程 第五章
藍森林 http://www.lslnet.com 2002年11月29日 16:13

作者﹕kanaka [冷罡華]
聯系﹕kanaka@yeah.net,leng@haier.com
版本﹕0.2.1
版權﹕GPL
最后修改﹕2002年11月26日


總目錄

前 言

第一章 在Debian上配置Apache+MySQL+PHP4

第二章 在Debian上用Wu-ftpd配置FTP服務器

第三章 在Debian上用Exim配置郵件服務器

第四章 在Debian上配置Samba服務器

第五章 在Debian上用Bind配置DNS服務器

《Debian服務器設置入門》系列教程之第五章﹕Samba服務器

第五章 在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 debian192.1.110.122 notepad.test.com notepad

  這時你可以在win2000机器上啟動Outlook Express,做一下收取郵件的動作,它會說找不到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.comnameserver 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, seconds7200 ; retry, seconds3600000 ; expire, seconds86400 ) ; minimum, secondsNS debian.test.com.MX 10 debain.test.com.; 域名服務器列表test.com.  IN NS  debian.test.com.; 計算机名稱和地址localhost.test.com.  IN A         127.0.0.1debian.test.com.     IN A         192.1.110.120notepad.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 ; Serial28800 ; Refresh14400 ; Retry3600000 ; Expire86400 ) ; MinimumIN 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 ; Serial28800 ; Refresh14400 ; Retry3600000 ; Expire86400 ) ; MinimumIN 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服務器設置入門》系列教程之第五章,建議您按照順序閱讀,有問題可以和作者kanaka聯系。

8 參考文獻

  《在Linux上建立DNS服務器》,曹江華,2001年12月27日。地址是﹕http://www.ccidnet.com/html/tech/os/2001/12/27/92_3895.html

  讓我們一起感謝原文作者﹗



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林网站 版權所有。E-mail : webmaster@lslnet.com