twbsd.org
 
  Select Language: Home  SmbFTPD Forum 

書籍資料

ch00 序.htm

ch01 FreeBSD 簡介.htm

ch02 安裝 FreeBSD.htm

ch03 UNIX 系統入門.htm

ch04 使用者管理.htm

ch05 網路設定.htm

ch06 檔案系統管理.htm

ch07 系統安全.htm

ch08 編譯核心.htm

ch09 系統調校.htm

ch10 軟體安裝.htm

ch11 X Window 的使用.htm

ch12 NAT 及防火牆.htm

ch13 網頁伺服器.htm

ch14 網頁伺服器進階應用.htm

ch15 FTP 伺服器.htm

ch16 郵件伺服器.htm

ch17 郵件伺服器進階應用.htm

ch18 DHCP伺服器.htm

ch19 資料庫系統.htm

ch20 Samba 網路芳鄰.htm

ch21 NFS.htm

ch22 DNS 伺服器.htm

ch23 指令應用.htm

ch24 Shell Script.htm

cha1 附錄A etc目錄下的檔案介紹.htm

cha2 附錄B 製作 FreeBSD 安裝光碟.htm

cha3 附錄C 版權宣告.htm

 


View printable page

第二十二章 DNS 伺服器

如果說 DNS 伺服器是網路上最重要的伺服器一點也不為過。少了 DNS 伺服器,我們要存取另一台電腦時,都必須要使用 IP。您再也不能使用 www.yahoo.com 或是 alex@twbsd.org 等好記的名稱。如果您是大型網路的管理者,一定要知道如何架設 DNS 伺服器。而一般的系統管理者也應該要知道 DNS 的運作原理。讀完本章後,您將對下列 DNS 主題有更深入的了解:

  • DNS 運作原理。
  • 如何架設 DNS 伺服器。
  • 如何設定 DNS 正解及反解。

22.1 DNS 概論

DNS (Domain Name Service) 是網域名稱服務的縮寫,其主要目的是在解決機器的網域名稱 (Domain name) 與 IP address 的對應問題。 在網際網路上,為了要連線到其他電腦,必須經由 IP 位址來判斷電腦所在位置,例如 140.115.83.240 就是一個 IP 位址。但是這一長串的 IP 並不好記,因此出現了 Domain Name 來為 IP 取一個比較好記的名字,如 bbs.mgt.ncu.edu.tw。Domain Name 的架構是一個樹狀結構,例如上述的 bbs.mgt.ncu.edu.tw 所代表的就是台灣 (tw) 的中央大學 (ncu) 管理學院 (mgt) 所屬的電子佈告欄伺服器 (bbs)。而 DNS 伺服器的功用就是將你輸入的 Domain Name 轉成 IP,或者是將查詢 IP 並轉回所對映的 Domain Name。

圖 22-1

網域架構是一個樹狀結構,以根網域為起點,慢慢散開成各個節點。以中央大學的 DNS 為例,我們可以看到在台灣的網域 (tw) 下有許多不同的網域,如 .net.tw、.edu.tw 等。而 .edu.tw 下又有很多的教育單位,中央大學的網域 ncu.edu.tw 就是其中之一。

在根網域下的第一層可以分為二大類,第一種是以國碼為網域名稱,如 .tw、.jp。而另一種是 .org、.com、.net 等不分國碼的網域。由於網際網路起源於美國,一開始的名稱設計並沒有國碼,只有使用 .org 表示網織、.com 表示公司、.edu 表示教育單位、.gov 表示政府組織等,所以沒有國碼的網域名稱一開始是美國所使用。目前頂層的網域名稱皆由 ICANN (The Internet Corporation For Assigned Names and Numbers) 所公佈,而每一個第一層的網域都交由各自國家管理。以台灣的網域為例,它是由台灣網路資訊中心 (TWNIC) 所管理。TWNIC 將申請授權業務再委託 Hinet 等其它單位受理。如果您要申請 .tw 的網域,可以到 TWNIC 查詢代理申請業務的公司。

一般而言, DNS 伺服器可以分為三種,主要名稱伺服器 (Primary/master Server),次要名稱伺服器 (Secondary/slave Server),及快取名稱伺服器 (Cache only Server)。主要名稱伺服器是管理所屬網域所需名稱對映設定的主要伺服器,如果您自己有一個網域,必須經由設定主要名稱伺服器來管理網域中 IP 所對映的名稱。而次要名稱伺服器是取得主要名稱伺服器的資料,用以在主要伺服器過於忙錄或停止服務時備用。每個 DNS 伺服器都會將所查詢過的 Domain Name 建立快取 (cache),以供下次查詢時能快速回應。每一個伺服器都會設定該 Domain Name 快取的資料要保留多久,以免得到過時的資料。

DNS 有分為正解 (forward) 及反解 (reverse)。正解就是把 Domain Name 轉成 IP,而反解是將 IP 轉成 Domain Name。FreeBSD 內建有 DNS 的服務,只要先設定 /etc/namedb/ 下的檔案即可打開該服務。

那要如何得到一個 Domain Name 呢?以學校而言,每個學校都有自己的 Domain Name 及 IP 範圍,如果你只有一台機器,想要為它申請一個 Domain Name,您並不需要自己架設 DNS。只要向學校計中或是管理該 IP 的單位提出申請正反解即可。如果您想為自己的系所架設 DNS 以管理該系的 IP,必須先向上層 DNS (也就是校方計中) 申請授權,讓針對您系所的查詢都交有你的 DNS 伺服器處理。DNS 的架構是樹狀結構,以查詢 bbs.mgt.ncu.edu.tw 而言,管理 tw 網域的伺服器會告訴你管理 ncu.tw 的伺服器在哪裡,而 ncu.tw 會告訴你管理 mgt.ncu.edu.tw 的伺服器在哪裡,最後 mgt.ncu.edu.tw 發現自己有 bbs.mgt 的資料,並傳回其 IP。

如果您自己要申請一個 Domain Name,你可以到 www.twnic.com.tw 去申請一個 .tw 的名稱,如 abc.com.tw;或者到 YAHOO! 去申請各國的 Domain,如 abc.com。當您去 TWNIC 申請網域名稱時,你必須要有自己的 DNS 伺服器,並在 TWNIC 設定 DNS 伺服器的位址,接著再由您的 DNS 伺服器來做解析。如果您是在 YAHOO! 申請網域名稱,國外的代理申請者會幫你做 DNS 的服務,你只要在他們的網頁設定你想要的名稱及所對映的 IP 即可,而且不限個數,當然你也可以自行架設 DNS 伺服器。

如果只一個固定 IP,您不需要架設 DNS,除非我們管理一個網域中多個 IP 才有必要。再者,如果您是固接式 ADSL 或是其他由 ISP 提供的連線方式,你的 DNS 反解必須要由上層 ISP 授權由您自行管理你的 IP ,這樣你的設定才會生效,否則應該請 ISP 幫你作反解的設定,也就是告訴 ISP 你的 IP 要對映那一個 Domain Name。

對於 DNS 有初步概念之後,我們接著說明如何設定 FreeBSD 成為一台 DNS 伺服器。我們以下列的資料做為設定的依據:

網域:twbsd.org
IP:123.44.55.224~123.44.55.231 (八個 IP)
Netmask:255.255.255.248

22.2 named.conf

我們先在原本 /etc/namedb/named.conf 文件的最下方加入下列設定,該檔中行首以 // 開頭者為註解:

# 如果在自己的 DNS 設定中找不到,則向 forwarders 中設定的 DNS Server 查詢,
# 以加快查找的速度。我們通常會設成 ISP 的 DNS Server。
forwarders { 168.95.1.1;};

// 設定要正解的網域是 twbsd.org,DNS 伺服器是 master server
// 並到 twbsd.fwd 這一個檔案中去找 twbsdorg 的設定。
zone "twbsd.com" {
    type master;
    file "master/abc.fwd";
};

// 下面是反解的資料,設定要反解的 IP 為 123.44.55.224 到 123.44.55.231
// 設定關於該 IP 範圍反解的設定檔為 twbsd.rev
zone "224-29.55.44.123.in-addr.arpa" {
    type master;
    file "master/twbsd.rev";
};

第一個部份是正解檔的設定,也就是設定將名稱轉為 IP。我們設定管理 twbsd.org 這個網域,並設定網域設定資料存放在 twbsd.fwd 這個檔案中。

第二個部份是反解的設定,也就是設定將 IP 轉為名稱。如果您的 ISP 會幫您做 IP 反解,您可以忽略反解的設定。

在反解的設定方面,第一行的 zone 設定部份,針對不同的子網路範圍有不同的設定格式。如果你的 IP 的範圍是整個 Class C,子網路遮罩 (Netmask) 為 255.255.255.0,或是其他經由切割過的 IP,關於上面反解資料 zone 那一行的設定會有點不同。

以 123.44.55.0 為例,假設我們具有完整 Class C,IP 的範圍是 123.44.55.*。則其子網路遮罩為 255.255.255.0, 轉換為二進為後有 24 個 1,所以網域可以寫成 123.44.55.0/24。在設定zone 時,我們可以設定為:

zone "55.44.123.in-addr.arpa"

若是 Class C 分成二個網域,每一段有 128 個 IP,子網路遮罩為 255.255.255.128,則二個網域分別可以寫成 123.44.55.0/25 及 123.44.55.128/25。這二個網域分可以可設定如下:

zone "0-25.55.44.123.in-addr.arpa" ; 0-25 是第 1段
zone "128-25.55.44.123.in-addr.arpa" ;128-25 是第 2段

若是 Class C 分成四個網域,每一段有 64 個 IP,子網路遮罩為 255.255.255.192,則可以設定為:

zone "0-26.55.44.123.in-addr.arpa" ; 0-26 是第 1段
zone "64-26.55.44.123.in-addr.arpa" ; 64-26 是第 2段
zone "128-26.55.44.123.in-addr.arpa" ;128-26 是第 3段
zone "192-26.55.44.123.in-addr.arpa" ;192-26 是第 4段

基本上就是將 IP 倒過來寫,並在開頭指定起始 IP 及範圍。

小提示

還記得子網路遮罩的計算方法嗎?您可以參考「網路設定」一章中關於 IP 位址、子網路遮罩及切割網路的說明。

接下來就可以在 /etc/namedb/master 目錄中新增並編輯 twbsd.fwd 這個正解檔及 twbsd.rev 反解檔。

22.3 正解檔設定

以下是 /etc/namedb/master/twbsd.fwd 的內容,檔案中 ";" 之後為註解:

$TTL	172800

@	IN	SOA	twbsd.org. root.twbsd.org.  (
				2005100301  ; Serial
				172800	; Refresh
				900	; Retry
				3600000	; Expire
				3600 )	; Minimum
	IN		NS		twbsd.org.
	IN		A		123.44.55.225
www	IN		A		123.44.55.226
ftp	IN		CNAME	www
mail	IN		A		123.44.55.227
mail	IN		MX		10 www.twbsd.org
	IN		MX		20 mail.def.net

接著我們針對檔案中的每一行加以解釋,您可以依自己的需要來增刪資料,請不要直接使用這裡的設定。為了說明的需要,有的設定有點重覆,例如 mail.twbsd.org 我們設定了三個項目,在真實生活中,並不會有這種情形。

讓我們先看到第一行 $TTL 的部份,$TTL 代表這設定的資料要存多久,其後所接的值是以秒數計算。我們這裡的設定是 172800,表示二天。

正解檔中的內容中除了第一行外,每一行的格式為 [name] [ttl] [class] [type] [data]。以下是每個欄位的說明:

  • name:可以是網域名稱或是主機名稱,如果不寫的話表示與上一個設定相同。
  • ttl:是資料要存活的時間 (time to live),也就是 cache server 將保留在它的 cache 中的時間。如果不寫的話表示和 SOA 中的設定相同。
  • class:指定網路的類型,這個欄位應該都是使用 IN 代表 internet。
  • type:設定該筆資料的型態,例如:MX, A, CNAME, PTR, NS 等。
  • data:就是實際設定資料的部份。

以下讓我們針對每一行來做說明。首先請看到 @ IN SOA twbsd.org. root.twbsd.org. (…) 的部份,這個部份雖然跨過很多行,但實際上是一個設定項目,只是二個括號中間的設定可以被分為很多行以利閱讀。這一行的設定是最基本的,也是最詳盡的,在該行中,開頭的 @ 代表網域名稱 twbsd.org,IN 表示為 internet 的資料型態。SOA 後面接的是 twbsd.org,表示這台 twbsd.org 機器是 twbsd.org 網域中的主要名稱伺服器。而 root.twbsd.org 表示管理者的Email 是 root@twbsd.org。接下來讓我們看一下括號中的設定所代表的意義:

  • Serial:這個設定的版本,這次修改的數字必須比上次的數字大,也就是每次修改這個檔時,都要將這個數字提高,這樣別的伺服器才會將資料更新。一般而言,我們會以日期加上幾位的數字來表示,如 2004040301 表示 2004 年 4 月 3 日的第一次設定。
  • Refresh:這個數字是次要名稱伺服器要多久和主要名稱伺服器比對資料並更新。
  • Retry:如果比對失敗,要在幾秒後再向主要名稱伺服器查詢。
  • Expire:表示如果次要名稱伺服器一直連不上主要名稱伺服器,這筆資料要多久無法比對便失效。這個欄位一樣是以秒計算。
  • Minimum:表示別的快取伺服器可以將你的設定存放多久。

接下來的 IN NS twbsd.org. 表示將 twbsd.org 這個網域的 DNS 伺服器是 twbsd.org 這台機器。這一行中,省略了 name 及 ttl 的欄位,直接指定了 class、type、及 data。

IN A 123.44.55.225 表示將 twbsd.org 這台機器的 IP 設為 123.44.55.225。前面省略了主機名稱,表示設定的是 @ 的主機。A 代表的就是指定 address,就是將 twbsd.org 這台機器的 IP 位址設定為 123.44.55.225。

www IN A 123.44.55.226 表示將 www.twbsd.org 的 IP 設定為 123.44.55.226。你可以看到這裡使用了欄位 name class type data。接著一行使用了 type CNAME,表示將 ftp.twbsd.org 這台機器設定為和 www.twbsd.org 同一個 IP。也就是這二個名字會對映到同一台機器。

另外,mail IN MX 10 www.twbsd.org 及下一行 MX 的設定表示將 mail.twbsd.org 的信件交由 www.twbsd.org 或 mail.def.net 來處理,數字 10 及 20 表示優先順序,數字小者優先。這裡的設定是將給 mail.twbsd.org 的信件交給 www.twbsd.org 來處理,如果 www.twbsd.org 沒有回應則交由 mail.def.net 來處理。

22.4 反解檔設定

如果您要設定 DNS 反解,則需要再新增並編輯 /etc/namedb/master/twbsd.rev 的檔案來設定,也就是設定某一個 Domain Name 要對應到哪個 IP:

$TTL	172800
@	IN	SOA	twbsd.org. root.twbsd.org.  (
				2001080301  ; Serial
				172800	; Refresh
				900	; Retry
				3600000	; Expire
				3600 )	; Minimum
		IN	NS	twbsd.org.
225      IN       PTR       twbsd.org.
226      IN       PTR       www.twbsd.org.
227      IN       PTR       mail.twbsd.org.

和正解檔重覆的地方此略過,我們來看 PTR 的部份。PTR 就是將 IP 指向 Domain Name,如 225 IN PTR twbsd.org. 就是將 123.44.55.225 指向 twbsd.org 這台機器。而接下來的 226 IN PTR www.twbsd.org. 表示將 123.44.55.225 指向 www.twbsd.org。

22.5 最後的設定

若您使用 FreeBSD 6.x,在修改好正解檔和反解檔之後,請先到 /etc/namedb/ 目錄下執行下列指令以產生 localhost 的反解設定檔 /etc/namedb/master/localhost.rev

# cd /etc/namedb
# sh ./make-localhost

接著,請先編輯 /etc/resolv.conf,在 nameserver 部份的第一行加入 下列設定,以使用本機作為第一台 DNS 伺服器:

nameserver  127.0.0.1

接下來,請修改 /etc/rc.conf,並加入下列一行,以在開機時啟用 DNS 服務:

named_enable="YES"

接著我們就可以使用下列指令來啟動 DNS 服務了:

# /etc/rc.d/named start

在執行完上述指令之後,您應該可以進行 DNS 查詢了,但建議您先使用下列指令查看系統日誌中是否有錯誤訊息。如果有錯誤訊息,您必須先手動排除。

# tail /var/log/messages

接著就可以用 nslookup 來試試看我們所做的設定:

# nslookup www.twbsd.org
# nslookup 123.44.55.225

如果你沒有設定 /etc/resolv.conf 的話,上面的指令並不會以你的機器為預設 DNS 伺服器,這時你可以使用下列指令來以 127.0.0.1 這台機器為伺服器,查詢 www.twbsd.org 的設定:

# nslookup www.twbsd.org 127.0.0.1

如果您要查詢 MX、NS、SOA 等記錄,也可以使用 nslookup 來查詢,只要在查詢先 set type 即可:

# nslookup
Default Server: localhost.twbsd.org
Address: 127.0.0.1
> set type=MX
> mail.twbsd.org
Server: localhost.twbsd.org
Address: 127.0.0.1
mail.twbsd.org preference = 10, mail exchanger = www.twbsd.org
twbsd.org nameserver = twbsd.org
www.twbsd.org internet address = 123.44.55.225
twbsd.org internet address = 123.44.55.225
> set type=NS
> twbsd.org
Server: localhost.twbsd.org
Address: 127.0.0.1

twbsd.org nameserver = twbsd.org
twbsd.org internet address = 123.44.55.225
> set type=SOA
> twbsd.org
Server: localhost.twbsd.org
Address: 127.0.0.1
twbsd.org
origin =twbsd.org
mail addr = root.twbsd.org
serial = 2002080301
refresh = 3600 (1H)
retry = 900 (15M)
expire = 3600000 (5w6d16h)
minimum ttl = 3600 (1H)
twbsd.org nameserver = twbsd.org
twbsd.org internet address = 123.44.55.2.225
> exit

 

Top Ths file was last modified: 2009 April 11 09:25:57.

Copyright © 2002-2024 Alex Wang from www.twbsd.org. All rights reserved.