DNS服務(wù)器架設(shè)與應(yīng)用Linux服務(wù)器架設(shè)指南.doc_第1頁(yè)
DNS服務(wù)器架設(shè)與應(yīng)用Linux服務(wù)器架設(shè)指南.doc_第2頁(yè)
DNS服務(wù)器架設(shè)與應(yīng)用Linux服務(wù)器架設(shè)指南.doc_第3頁(yè)
DNS服務(wù)器架設(shè)與應(yīng)用Linux服務(wù)器架設(shè)指南.doc_第4頁(yè)
DNS服務(wù)器架設(shè)與應(yīng)用Linux服務(wù)器架設(shè)指南.doc_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文由lyx123x貢獻(xiàn) doc文檔可能在WAP端瀏覽體驗(yàn)不佳。建議您優(yōu)先選擇TXT,或下載源文件到本機(jī)查看。 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 DNS(Domain Name System,域名服務(wù)系統(tǒng))是 Internet 上用得最頻繁的服務(wù)之一, 它是一個(gè)分布式數(shù)據(jù)庫(kù),組織成域?qū)哟谓Y(jié)構(gòu)的計(jì)算機(jī)和網(wǎng)絡(luò)服務(wù)命名系統(tǒng)。通過(guò)它人們可 以將域名解析為 IP 地址,從而使人們能夠通過(guò)簡(jiǎn)單好記的域名來(lái)代替枯燥難記的 IP 地址 來(lái)訪問(wèn)網(wǎng)絡(luò)。本章將詳細(xì)介紹 DNS 服務(wù)的基本概念、工作原理、BIND 的運(yùn)行、架設(shè)和使 用方法。 14.1 DNS 工作原理 DNS 是一個(gè)分布式數(shù)據(jù)庫(kù),它在本地負(fù)責(zé)控制整個(gè)分布式數(shù)據(jù)庫(kù)的部分段,每一段中 的數(shù)據(jù)通過(guò)客戶服務(wù)器模式在整個(gè)網(wǎng)絡(luò)上均可存取,通過(guò)采用復(fù)制技術(shù)和緩存技術(shù)使得整 個(gè)數(shù)據(jù)庫(kù)可靠的同時(shí),又擁有良好的性能。下面介紹一下 DNS 的工作原理及 DNS 協(xié)議的 有關(guān)情況。 14.1.1 名稱解析方法 網(wǎng)絡(luò)中為了區(qū)別各個(gè)主機(jī), 必須為每臺(tái)主機(jī)分配一個(gè)唯一的地址, 這個(gè)地址即稱為 “IP 地址”。但這些數(shù)字難以記憶,所以就采用“域名”的方式來(lái)取代這些數(shù)字了。不過(guò)最終 還是必須要將域名轉(zhuǎn)換為對(duì)應(yīng)的 IP 地址才能訪問(wèn)主機(jī),因此需要一種將主機(jī)名轉(zhuǎn)換為 IP 地址的機(jī)制。在常見(jiàn)的計(jì)算機(jī)系統(tǒng)中,可以使用 3 種技術(shù)來(lái)實(shí)現(xiàn)主機(jī)名和 IP 地址之間的轉(zhuǎn) 換:Host 表、網(wǎng)絡(luò)信息服務(wù)系統(tǒng)(NIS)和域名服務(wù)(DNS)。 1Host表 Host 表是簡(jiǎn)單的文本文件,文件名一般是 hosts,其中存放了主機(jī)名和 IP 地址的映射 關(guān)系,計(jì)算機(jī)通過(guò)在該文件中搜索相應(yīng)的條目來(lái)匹配主機(jī)名和 IP 地址。Hosts 文件中的每 一行就是一個(gè)條目,包含一個(gè) IP 地址及與該 IP 地址相關(guān)聯(lián)的主機(jī)名。如果希望在網(wǎng)絡(luò)中 加入、刪除主機(jī)名或者重新分配 IP 地址,管理員所要做的就是增加、刪除或修改 hosts 文 件中的條目,但是要更新網(wǎng)絡(luò)中每一臺(tái)計(jì)算機(jī)上的 hosts 文件。 在 Internet 規(guī)模非常小的時(shí)候,這個(gè)集中管理的文件可以通過(guò) FTP 發(fā)布到各個(gè)主機(jī), 每個(gè) Internet 站點(diǎn)可以定期地更新其 hosts 文件的副本,并且發(fā)布主機(jī)文件的更新版本來(lái)反 映網(wǎng)絡(luò)的變化。但是,當(dāng) Internet 上的計(jì)算機(jī)迅速增加時(shí),通過(guò)一個(gè)中心授權(quán)機(jī)構(gòu)為所有 Internet 主機(jī)管理一個(gè) hosts 文件的工作將無(wú)法進(jìn)行。文件會(huì)隨著時(shí)間的推移而增大,這樣 按當(dāng)前和更新的形式維持文件以及將文件分配至所有站點(diǎn)將變得非常困難。 297 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 說(shuō)明:雖然 Host 表目前不再?gòu)V泛使用,但大部分的操作系統(tǒng)依舊保留。 2NIS系統(tǒng) 將主機(jī)名轉(zhuǎn)換為 IP 地址的另一種方案是 NIS(Network Information System,網(wǎng)絡(luò)信息 系統(tǒng)),它是由 Sun Microsystems 開(kāi)發(fā)的一種命名系統(tǒng)。NIS 將主機(jī)表替換成主機(jī)數(shù)據(jù)庫(kù), 客戶機(jī)可以從它這里得到所需要的主機(jī)信息。然而,因?yàn)?NIS 將所有的主機(jī)數(shù)據(jù)都保存在 中央主機(jī)上,再由中央主機(jī)將所有數(shù)據(jù)分配給所有的客戶機(jī),以至于將主機(jī)名轉(zhuǎn)換為 IP 時(shí) 的效率很低。因?yàn)樵?Internet 迅猛發(fā)展的今天,沒(méi)有一種辦法可以用一張簡(jiǎn)單的表或一個(gè) 數(shù)據(jù)庫(kù)為如此眾多的主機(jī)提供服務(wù)。因此,NIS 一般只用在中型以下的網(wǎng)絡(luò)。 說(shuō)明:NIS 還有一種擴(kuò)展版本,稱為 NIS+,提供了 NIS 主計(jì)算機(jī)和從計(jì)算機(jī)間的身份 驗(yàn)證和數(shù)據(jù)交換加密功能 3DNS系統(tǒng) DNS 是一種新的主機(jī)名稱和 IP 地址轉(zhuǎn)換機(jī)制,它使用一種分層的分布式數(shù)據(jù)庫(kù)來(lái)處 理 Internet 上眾多的主機(jī)和 IP 地址轉(zhuǎn)換。也就是說(shuō),網(wǎng)絡(luò)中沒(méi)有存放全部 Internet 主機(jī)信 息的中心數(shù)據(jù)庫(kù),這些信息分布在一個(gè)層次結(jié)構(gòu)中的若干臺(tái)域名服務(wù)器上。DNS 是基于客 戶/服務(wù)器模型設(shè)計(jì)的。本質(zhì)上,整個(gè)域名系統(tǒng)以一個(gè)大的分布式數(shù)據(jù)庫(kù)方式工作。具有 Internet 連接的企業(yè)網(wǎng)絡(luò)都可以有一個(gè)域名服務(wù)器, 每個(gè)域名服務(wù)器包含有指向其他域名服 務(wù)器的信息,結(jié)果是這些服務(wù)器形成了一個(gè)大的協(xié)調(diào)工作的域名數(shù)據(jù)庫(kù)。 14.1.2 DNS 組成 每當(dāng)一個(gè)應(yīng)用需要將域名翻譯成為 IP 地址時(shí),這個(gè)應(yīng)用便成為域名系統(tǒng)的一個(gè)客戶。 這個(gè)客戶將待翻譯的域名放在一個(gè) DNS 請(qǐng)求信息中, 并將這個(gè)請(qǐng)求發(fā)給域名空間中的 DNS 服務(wù)器。服務(wù)器從請(qǐng)求中取出域名,將它翻譯為對(duì)應(yīng)的 IP 地址,然后在一個(gè)回答信息中將 結(jié)果返回給應(yīng)用。如果接到請(qǐng)求的 DNS 服務(wù)器自己不能把域名翻譯為 IP 地址,將向其他 DNS 服務(wù)器查詢。整個(gè) DNS 域名系統(tǒng)由以下 3 個(gè)部分組成。 1DNS域名空間 指定用于組織名稱的域的層次結(jié)構(gòu),它如同一棵倒立的樹(shù),層次結(jié)構(gòu)非常清晰,如圖 14-1 所示。根域位于頂部,緊接著在根域的下面是幾個(gè)頂級(jí)域,每個(gè)頂級(jí)域又可以進(jìn)一步 劃分為不同的二級(jí)域, 二級(jí)域再劃分出子域, 子域下面可以是主機(jī)也可以是再劃分的子域, 直到最后的主機(jī)。在 Internet 中的域是由 InterNIC 負(fù)責(zé)管理的,域名的服務(wù)則由 DNS 來(lái) 實(shí)現(xiàn)。 2DNS服務(wù)器 DNS 服務(wù)器是保持和維護(hù)域名空間中數(shù)據(jù)的程序。由于域名服務(wù)是分布式的,每一個(gè) DNS 服務(wù)器含有一個(gè)域名空間自己的完整信息,其控制范圍稱為區(qū)(Zone)。對(duì)于本區(qū)內(nèi) 298 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 的請(qǐng)求由負(fù)責(zé)本區(qū)的 DNS 服務(wù)器解釋,對(duì)于其他區(qū)的請(qǐng)求將由本區(qū)的 DNS 服務(wù)器與負(fù)責(zé) 該區(qū)的相應(yīng)服務(wù)器聯(lián)系。 圖 14-1 DNS 域名空間 3解析器 解析器是簡(jiǎn)單的程序或子程序,它從服務(wù)器中提取信息以響應(yīng)對(duì)域名空間中主機(jī)的查 詢,用于 DNS 客戶端。 14.1.3 DNS 查詢的過(guò)程 當(dāng)客戶端程序要通過(guò)一個(gè)主機(jī)名稱來(lái)訪問(wèn)網(wǎng)絡(luò)中的一臺(tái)主機(jī)時(shí),它首先要得到這個(gè)主 機(jī)名稱所對(duì)應(yīng)的 IP 地址,因?yàn)?IP 數(shù)據(jù)報(bào)中允許放置的是目地主機(jī)的 IP 地址,而不是主機(jī) 名稱。可以從本機(jī)的 hosts 文件中得到主機(jī)名稱所對(duì)應(yīng)的 IP 地址,但如果 hosts 文件不能 解析該主機(jī)名稱時(shí),只能通過(guò)向客戶機(jī)所設(shè)定 DNS 服務(wù)器進(jìn)行查詢了。 說(shuō)明:在 UNIX 系統(tǒng)中,可以設(shè)置 hosts 和 dns 的使用次序。 可以以不同的方式對(duì) DNS 查詢進(jìn)行解析。 第一種是本地解析, 就是客戶端可以使用緩 存信息就地應(yīng)答,這些緩存信息是通過(guò)以前的查詢獲得的;第二種是直接解析,就是直接 由所設(shè)定的 DNS 服務(wù)器解析, 使用的是該 DNS 服務(wù)器的資源記錄緩存或者其權(quán)威回答 (如 果所查詢的域名是該服務(wù)器管轄的);第三種是遞歸查詢,即設(shè)定的 DNS 服務(wù)器代表客戶 端向其他 DNS 服務(wù)器查詢,以便完全解析該名稱,并將結(jié)果返回至客戶端。第四種是迭代 查詢,即設(shè)定的 DNS 服務(wù)器向客戶端返回一個(gè)可以解析該域名的其他 DNS 服務(wù)器,客戶 端再繼續(xù)向其他 DNS 服務(wù)器查詢。 1本地解析 本地解析的過(guò)程如圖 14-2 所示。 客戶機(jī)平時(shí)得到的 DNS 查詢記錄都保留在 DNS 緩存 299 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 中, 客戶機(jī)操作系統(tǒng)上都運(yùn)行著一個(gè) DNS 客戶端程序。 當(dāng)其他程序提出 DNS 查詢請(qǐng)求時(shí), 這個(gè)查詢請(qǐng)求要傳送至 DNS 客戶端程序。DNS 客戶端程序首先使用本地緩存信息進(jìn)行解 析,如果可以解析所要查詢的名稱,則 DNS 客戶端程序就直接應(yīng)答該查詢,而不需要向 DNS 服務(wù)器查詢,該 DNS 查詢處理過(guò)程也就結(jié)束了。 圖 14-2 本地解析 2直接解析 如果 DNS 客戶端程序不能從本地 DNS 緩存回答客戶機(jī)的 DNS 查詢, 它就向客戶機(jī)所 設(shè)定的局部 DNS 服務(wù)器發(fā)一個(gè)查詢請(qǐng)求, 要求局部 DNS 服務(wù)器進(jìn)行解析。 如圖 14-3 所示, 局部 DNS 服務(wù)器得到這個(gè)查詢請(qǐng)求,首先查看一下所要求查詢的域名是不是自己能回答 的,如果能回答,則直接給予回答,如是不能回答,再查看自己的 DNS 緩存,如果可以從 緩存中解析,則也是直接給予回應(yīng)。 圖 14-3 局部 DNS 服務(wù)器解析 3遞歸解析 當(dāng)局部 DNS 服務(wù)器自己不能回答客戶機(jī)的 DNS 查詢時(shí), 它就需要向其他 DNS 服務(wù)器 進(jìn)行查詢。此時(shí)有兩種方式,如圖 14-4 所示的是遞歸方式。局部 DNS 服務(wù)器自己負(fù)責(zé)向 其他 DNS 服務(wù)器進(jìn)行查詢, 一般是先向該域名的根域服務(wù)器查詢, 再由根域名服務(wù)器一級(jí) 級(jí)向下查詢。最后得到的查詢結(jié)果返回給局部 DNS 服務(wù)器,再由局部 DNS 服務(wù)器返回給 客戶端。 圖 14-4 DNS 解析的遞歸方式 300 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 4迭代解析 當(dāng)局部 DNS 服務(wù)器自己不能回答客戶機(jī)的 DNS 查詢時(shí),也可以通過(guò)迭代查詢的方式 進(jìn)行解析,如圖 14-5 所示。局部 DNS 服務(wù)器不是自己向其他 DNS 服務(wù)器進(jìn)行查詢,而是 把能解析該域名的其他 DNS 服務(wù)器的 IP 地址返回給客戶端 DNS 程序,客戶端 DNS 程序 再繼續(xù)向這些 DNS 服務(wù)器進(jìn)行查詢,直到得到查詢結(jié)果為止。 圖 14-5 DNS 解析的迭代方式 以上介紹了 DNS 解析的 4 種方式,下面看一下 DNS 報(bào)文的格式。 14.1.4 DNS 報(bào)文格式 DNS 客戶端與 DNS 服務(wù)器進(jìn)行交互時(shí),需要傳送各種各樣的數(shù)據(jù)報(bào),這些數(shù)據(jù)報(bào)的 總體格式如圖 14-6 所示。DNS 報(bào)文由 12 字節(jié)長(zhǎng)的首部和 4 個(gè)長(zhǎng)度可變的字段組成。標(biāo)識(shí) 字段由客戶程序設(shè)置并由服務(wù)器返回結(jié)果,客戶程序通過(guò)它來(lái)確定響應(yīng)與查詢是否匹配。 標(biāo)識(shí)字段包含了以下內(nèi)容。 定義是查詢報(bào)文還是響應(yīng)報(bào)文; 查詢類型是標(biāo)準(zhǔn)查詢、反向查詢還是服務(wù)器狀態(tài)請(qǐng)求; 是否是權(quán)威回答; 查詢方式是遞歸查詢還是迭代查詢; 是否支持遞歸查詢; 查詢是否有差錯(cuò)或要查的域名不存在。 問(wèn)題部分中每個(gè)問(wèn)題的格式如圖 14-7 所示,通常只有一個(gè)問(wèn)題。查詢名是要查找的名 字,它是一個(gè)或多個(gè)標(biāo)識(shí)符的序列。每個(gè)標(biāo)識(shí)符以首字節(jié)的計(jì)數(shù)值來(lái)說(shuō)明隨后標(biāo)識(shí)符的字 節(jié)長(zhǎng)度,每個(gè)名字以最后字節(jié)為 0 結(jié)束,長(zhǎng)度為 0 的標(biāo)識(shí)符是根標(biāo)識(shí)符。計(jì)數(shù)字節(jié)的值必 須是 063 的數(shù),因?yàn)闃?biāo)識(shí)符的最大長(zhǎng)度僅為 63。與其他常用報(bào)文格式不一樣的是,該字 301 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 段無(wú)需以整 32bit 邊界結(jié)束, 即無(wú)需填充字節(jié)。 14-8 顯示了如何存放域名 。 圖 其中,3、5、2 表示后續(xù)字符的個(gè)數(shù)。 圖 14-6 DNS 數(shù)據(jù)報(bào)的總體格式 圖 14-7 3 w w w 5 w DNS 數(shù)據(jù)包問(wèn)題部分格式 z v t c 2 c n 0 圖 14-8 域名 的表示方法 每個(gè)問(wèn)題都有一個(gè)查詢類型,而每個(gè)應(yīng)答(也稱為一條資源記錄)也有一個(gè)應(yīng)答類型。 大約有 20 個(gè)不同的類型值,有一些目前已經(jīng)過(guò)時(shí),表 14-1 列出了常用的一些值。其中有 兩種可以用于查詢類型: 一種是 A 類型, 表示期望獲得查詢名的 IP 地址。 還有一種是 PTR 類型,表示請(qǐng)求獲得一個(gè) IP 地址對(duì)應(yīng)的域名,也稱為指針查詢。查詢報(bào)文格式中的查詢類 通常是 1,指互聯(lián)網(wǎng)地址。 注意:某些站點(diǎn)也支持其他非 IP 地址查詢,此時(shí)查詢類將是其他數(shù)值。 表 14-1 名 A NS CName PTR 字 數(shù) 1 2 5 12 值 描 IP 地址 名字服務(wù)器 規(guī)范名稱 指針記錄 DNS問(wèn)題和響應(yīng)的類型值和查詢類型值 述 名 HINFO MX AXFR *或 ANY 字 數(shù) 13 15 252 255 值 描 主機(jī)信息 郵件交換記錄 對(duì)區(qū)域轉(zhuǎn)換的請(qǐng)求 對(duì)所有記錄的請(qǐng)求 述 DNS 報(bào)文一般格式中的最后 3 個(gè)字段是回答字段、授權(quán)字段和附加信息字段,它們均 采用一種稱為資源記錄 RR(Resource Record)的相同格式。圖 14-9 顯示了資源記錄的格 302 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 式,各個(gè)字段的含義如下: 圖 14-9 DNS 資源記錄格式 域名是記錄中資源數(shù)據(jù)對(duì)應(yīng)的名字,它的格式和前面介紹的查詢名字段格式(圖 14-8)相同。 類型說(shuō)明 RR 的類型碼,它的值的取值及含義見(jiàn)表 14-1。 類通常為 1,指 Internet 數(shù)據(jù)。 生存時(shí)間字段是客戶程序保留該資源記錄的秒數(shù),資源記錄通常的生存時(shí)間值為 2 天。 資源數(shù)據(jù)長(zhǎng)度說(shuō)明資源數(shù)據(jù)的數(shù)量。 資源數(shù)據(jù)的格式依賴于類型字段的值,對(duì)于類型 1(A 記錄)資源數(shù)據(jù)是 4 字節(jié)的 IP 地址。 14.1.5 實(shí)際的 DNS 報(bào)文數(shù)據(jù) 在客戶機(jī)利用域名訪問(wèn)一臺(tái)主機(jī)時(shí), 首先要向所設(shè)的 DNS 服務(wù)器發(fā)送查詢報(bào)文, 以獲 得該域名所對(duì)應(yīng)的 IP 地址,DNS 服務(wù)器要根據(jù)具體情況返回給客戶端應(yīng)答。下面通過(guò)抓 包工具 Ethereal 捕獲這些數(shù)據(jù)包,并進(jìn)行觀察,以便更深入地理解 DNS 協(xié)議。 假設(shè)在一臺(tái) IP 地址為 52 的客戶機(jī)上執(zhí)行 ping 命令,成功執(zhí) 行完成后, Ethereal 抓到的數(shù)據(jù)包如圖 14-10 所示。 用 在命令執(zhí)行前, 先用 ipconfig /flushdns 清除本地的 DNS 緩存,否則客戶機(jī)有可能不發(fā)送 DNS 報(bào)文而是直接從 DNS 緩存中得到 IP 地址。 從圖 14-10 可以看出,客戶機(jī) 52 在 ping 一個(gè)域名時(shí),要先通過(guò) DNS 查詢獲 得該域名所對(duì)應(yīng)的 IP 地址,因此向所設(shè)的 DNS 服務(wù)器 9 發(fā)送了數(shù)據(jù)包 1,可以看 出查詢類型為 A。DNS 服務(wù)器 9 通過(guò)數(shù)據(jù)包 2 告訴客戶機(jī), 域名所 對(duì)應(yīng)的 IP 地址是 8。于是,ping 命令向 8 發(fā)送了數(shù)據(jù)包 3、5、7 和 9 四個(gè) ICMP 請(qǐng)求,而 8 則通過(guò) 4、6、8 和 10 四個(gè)數(shù)據(jù)包進(jìn)行了回復(fù)。 從數(shù)據(jù)包 2 還可以看出,DNS 服務(wù)器返回了一條 CNAME 資源記錄和兩條 A 資源記 錄, 客戶端根據(jù)自己的算法取出了第一條 A 資源記錄中所包含的 IP 地址。 另外, 從圖 4-10 中所示窗口的中間部分還可以看出,DNS 報(bào)文是通過(guò) UDP 協(xié)議發(fā)送的,服務(wù)器的端口號(hào) 是 53 號(hào)。 303 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 圖 14-10 Ethereal 抓到的 DNS 數(shù)據(jù)包 說(shuō)明:以上是 DNS 客戶端與服務(wù)器的報(bào)文交互情況。實(shí)際上,DNS 服務(wù)器為了解析 域名,可能還需要與其他 DNS 服務(wù)器進(jìn)行交互,這些交互數(shù)據(jù)包 不能在客戶機(jī)上捕獲。 14.2 BIND 的安裝與運(yùn)行 Bind 是最知名的域名服務(wù)器軟件,它完整地實(shí)現(xiàn)了 DNS 協(xié)議規(guī)定的各種功能,可以 在各種主流的操作系統(tǒng)平臺(tái)上運(yùn)行,并且被作為許多供應(yīng)商的 UNIX 標(biāo)準(zhǔn)配置封裝在產(chǎn)品 中。下面介紹一下有關(guān) Bind 服務(wù)器軟件的安裝與運(yùn)行方法。 14.2.1 BIND 簡(jiǎn)介 Linux 系統(tǒng)下架設(shè) DNS 服務(wù)器通常是使用 Bind 程序來(lái)實(shí)現(xiàn)的。 Bind 是 Berkeley Internet Name Domain Service 的簡(jiǎn)寫(xiě),是一款架設(shè) DNS 服務(wù)器的開(kāi)放源代碼軟件。Bind 原本是美 國(guó) DARPA 資助伯克里大學(xué)開(kāi)設(shè)的一個(gè)研究生課題,后來(lái)經(jīng)過(guò)多年的變化發(fā)展,已經(jīng)成為 世界上使用最為廣泛的 DNS 服務(wù)器軟件,目前 Internet 上絕大多數(shù)的 DNS 服務(wù)器都是用 Bind 來(lái)架設(shè)的。 Bind 經(jīng)歷了第 4 版、第 8 版和最新的第 9 版,第 9 版修正了以前版本中的許多錯(cuò)誤, 304 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 并提升了執(zhí)行時(shí)的效能。Bind 能夠運(yùn)行在當(dāng)前大多數(shù)的操作系統(tǒng)系統(tǒng)平臺(tái)之上。目前 Bind 軟件由 ISC(Internet Software Consortium,因特網(wǎng)軟件聯(lián)合會(huì))這個(gè)非贏利性機(jī)構(gòu)負(fù)責(zé)開(kāi) 發(fā)和維護(hù)。 的官方網(wǎng)站域名為 /, ISC 包含了 Bind 的最新錯(cuò)誤修復(fù)和更新。 14.2.2 BIND 的獲取與安裝 在 Red Hat Enterprise Linux 5 下安裝 BIND 服務(wù)器可以有兩種方式,一種是源代碼方 式安裝,一種是 RPM 軟件包方式安裝。源代碼可以從 處下載,目前最新的 版本是 9.5.0 版,文件名是 bind-9.5.0-P2.tar.gz。RHEL 5 自帶的 BIND 版本是 9.3.9 版,文 件名是 bind-9.3.3-7.el5.i386.rpm,在發(fā)行版的第 2 張盤(pán)上。 先看一下 RPM 方式安裝。如果安裝 RHEL 5 系統(tǒng)的時(shí)候沒(méi)有選擇安裝 bind-9.3.3-7.el5 包,需要從第二張安裝光盤(pán)把相應(yīng)文件復(fù)制到當(dāng)前目錄以后,再用以下命令安裝。 # rpm -ivh bind-9.3.3-7.el5.i386.rpm 如果安裝成功,會(huì)出現(xiàn)以下提示。 warning: bind-9.3.3-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing # 100% 1:bind # 100% # 再輸入以下命令,可以看到安裝后的文件分布情況。 # rpm -ql bind-9.3.3-7.el5 其中比較重要的文件分布如下: /etc/rc.d/init.d/named:Bind 開(kāi)機(jī)自動(dòng)啟動(dòng)時(shí)所用的啟動(dòng)腳本。 /usr/sbin/bind-chroot-admin:?jiǎn)⒂没蚪?chroot 功能的命令。 /usr/sbin/named:named 進(jìn)程的程序文件。 /usr/sbin/rndc:遠(yuǎn)程控制 named 進(jìn)程運(yùn)行的工具。 /usr/sbin/rndc-confgen:產(chǎn)生 rndc 密鑰的工具。 /usr/share/doc/bind-9.3.3:該目錄下安裝了 BIND 的幫助文檔和例子文件。 /usr/share/man/man5:這個(gè)目錄下安裝了 BIND 的手冊(cè)頁(yè)。 /usr/share/man/man8:這個(gè)目錄下也安裝了 BIND 的手冊(cè)頁(yè)。 /var/named:Bind 配置文件的默認(rèn)存放目錄(不包含主配置文件)。 /var/run/named:named 進(jìn)程 PID 文件的存放目錄。 named 進(jìn)程是以 named 用戶的身份運(yùn)行的,因此,操作系統(tǒng)中要事先存在這個(gè)用戶。 說(shuō)明:當(dāng)默認(rèn)安裝 RHEL 5 時(shí),named 用戶已經(jīng)創(chuàng)建,如是由于某種原因該用戶不存在 了,需要重新創(chuàng)建。 如果采用源代碼方式安裝,則從 /isc/bind9/9.5.0-P2/處下載 Bind 的最新 版 9.5.0 版的源代碼文件 bind-9.5.0-P2.tar.gz,文件復(fù)制到當(dāng)前目錄后,使用以下命令進(jìn)行 安裝。 305 第3篇 # # # # # # Linux 常見(jiàn)服務(wù)器架設(shè)篇 rpm e bind-9.3.3-7.el5 /如果安裝了 bind 9.3.3 包,則先拆除 tar xvzf bind-9.5.0-P2.tar.gz /解壓源代碼文件包,到 bind-9.5.0-P2 目錄中 cd bind-9.5.0-P2 ./configure make /編譯連接,產(chǎn)生可執(zhí)行文件 make install /把文件安裝到相應(yīng)的目錄 當(dāng)練習(xí)測(cè)試時(shí),可選擇上述兩種安裝方式中的一種,本章后面的例子是以 RPM 安裝 方式為基礎(chǔ)進(jìn)行講解的。 14.2.3 BIND 的簡(jiǎn)單配置與運(yùn)行 與其他服務(wù)器相比,BIND 的配置文件結(jié)構(gòu)要復(fù)雜得多,而且在配置文件不正確的 情況下,BIND 將無(wú)法運(yùn)行。為了使 BIND 能初步得到運(yùn)行,下面先提供一套最簡(jiǎn)單的配 置文件,使得 BIND 能正常地運(yùn)行起來(lái),并具有初步的域名解析功能,具體內(nèi)容的解釋見(jiàn) 14.3 節(jié)。 (1)在/etc 目錄下建立 BIND 的主配置文件 named.conf,內(nèi)容如下所示。 # vi /etc/named.conf options directory /var/named; pid-file /var/named/named.pid; forwarders 96; 97; ; allow-query any; ; ; zone . IN type hint; file named.root; ; zone 0.0.127. IN type master; file named.local; allow-update none; ; ; zone IN type master; file ; allow-update none; ; ; zone 1.10.10. IN type master; file named.1.10.10; allow-update none; ; ; (2)在/var/named 目錄下要建立在主配置文件中指定的 4 個(gè)區(qū)文件,文件名分別是 named.root、named.local、 和 named.1.10.10。其中,named.root 可以由以下 命令生成。 # dig /var/named/named.root /var/named/named.local 文件的內(nèi)容如下: # vi /var/named/named.local $TTL 3h 306 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 0.0.127.. IN SOA . . ( 1 ; Serial 3h ; Refresh after 3 hours 1h ; Retry after 1 hour 1w ; Expire after 1 week 1h ) ; Negative caching TTL of 1 hour 27.. IN PTR localhost. /var/named/ 文件的內(nèi)容如下: # vi /var/named/ $TTL 3h . IN SOA . . ( 1 ; Serial 3h ; Refresh after 3 hours 1h ; Retry after 1 hour 1w ; Expire after 1 week 1h ) ; Negative caching TTL of 1 hour . . . mail www oa lib gsx IN IN IN IN IN IN IN IN NS . MX 10 mail A 9 A A CNAME www A A 34 /var/named/named.1.10.10 文件的內(nèi)容如下: # vi /var/named/named.1.10.10 $TTL 3h 1.10.10.. IN SOA . .( 1 ; Serial 3h ; Refresh after 3 hours 1h ; Retry after 1 hour 1w ; Expire after 1 week 1h ) ; Negative caching TTL of 1 hour 1.10.10.. 0.. 0.. 0. . IN IN IN IN NS . PTR . PTR . PTR . (3)為了使 BIND 的運(yùn)行不受 chroot 功能的影響,先用以下命令禁用 chroot。 # bind-chroot-admin -d (4)用以下命令啟動(dòng) named 進(jìn)程,加-g 選項(xiàng)的目的是為了顯示啟動(dòng)過(guò)程的詳細(xì)信息, 以便出錯(cuò)時(shí)能及時(shí)發(fā)現(xiàn)原因。 # /usr/sbin/named -g & 1 3849 # 13-Nov-2008 18:18:54.336 starting BIND 9.3.3rc2 -g 13-Nov-2008 18:18:54.337 found 1 CPU, using 1 worker thread 13-Nov-2008 18:18:54.339 loading configuration from /etc/named.conf 13-Nov-2008 18:18:54.340 listening on IPv4 interface lo, #53 13-Nov-2008 18:18:54.341 listening on IPv4 interface eth0, 9#53 13-Nov-2008 18:18:54.343 command channel listening on #953 13-Nov-2008 18:18:54.344 command channel listening on :1#953 13-Nov-2008 18:18:54.344 ignoring config file logging statement due to -g 307 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 option 13-Nov-2008 18:18:54.345 zone 1.10.10./IN: loaded serial 1 13-Nov-2008 18:18:54.346 zone /IN: loaded serial 1 13-Nov-2008 18:18:54.346 running (5)用以下命令查看 named 進(jìn)程是否已正常啟動(dòng)。 # ps -eaf|grep named root 3849 3469 0 18:18 pts/0 root 3862 3469 0 18:23 pts/0 # 00:00:00 /usr/sbin/named -g 00:00:00 grep named (6)由于 DNS 采用的是 UDP 協(xié)議,監(jiān)聽(tīng)的是 53 號(hào)端口,可以用下面的命令進(jìn)一步驗(yàn) 證 named 是否已正常工作。 # netstat tcp tcp udp udp -an | grep :53 0 0 9:53 0 0 :53 0 0 9:53 0 0 :53 :* :* :* :* LISTEN LISTEN 可見(jiàn),UDP53 號(hào)端口已經(jīng)打開(kāi),同時(shí)也可以看到,TCP 的 53 號(hào)端口也是處于監(jiān)聽(tīng)狀 態(tài)的,這個(gè)端口主要是用于 DNS 服務(wù)器之間傳送域數(shù)據(jù)。 (7)上述步驟完成后,再檢查一下防火墻是不是開(kāi)放了 TCP 和 UDP 的 53 號(hào)端口。如 果還沒(méi)開(kāi)放,可輸入以下命令打開(kāi)。 #iptables -I INPUT -p tcp -dport 53 -j ACCEPT #iptables -I INPUT -p udp -dport 53 -j ACCEPT (8)最后,可以在本機(jī)或網(wǎng)絡(luò)中的其他計(jì)算機(jī)進(jìn)行以下測(cè)試(“”后面是用戶輸入 的內(nèi)容)。 C: nslookup Default Server: Address: # 原來(lái)默認(rèn)的 DNS 服務(wù)器是 server 9 # 把 DNS 服務(wù)器設(shè)為 9 Default Server: 9 Address: 9 Server: 9 Address: 9 Name: Address: Server: 9 Address: 9 Name: Address: Server: 9 Address: 9 308 # 查詢 的 IP 地址 # DNS 服務(wù)器回復(fù) 的 IP 地址是 # 再查詢 的 IP 地址 # DNS 服務(wù)器回復(fù) 的 IP 地址是 # 查詢其他域的域名 第 14 章 DNS 服務(wù)器架設(shè)與應(yīng)用 Non-authoritative answer: # 表示是非權(quán)威的回答 Name: Addresses: 8, 9 # DNS 服務(wù)器回復(fù) 的 IP 地 址,有兩個(gè) Aliases: , exit C: 從以上測(cè)試可以看出,DNS 已經(jīng)能正常地工作,能解析 區(qū)中的域名,還能通 過(guò)其他的 DNS 服務(wù)器解析互聯(lián)網(wǎng)上的所有域名。 14.2.4 chroot 功能 chroot 是 Change Root 的縮寫(xiě),它可以將文件系統(tǒng)中某個(gè)特定的子目錄作為進(jìn)程的虛 擬根目錄,即改變進(jìn)程所引用的“/”根目錄位置。chroot 對(duì)進(jìn)程可以使用的系統(tǒng)資源、用 戶權(quán)限和所在目錄進(jìn)行嚴(yán)格控制,程序只在這個(gè)虛擬的根目錄及其子目錄具有權(quán)限,一旦 離開(kāi)該目錄就沒(méi)有任何權(quán)限了,所以也將 chroot 稱為“jail 監(jiān)禁”。 說(shuō)明:在 Vsftpd 服務(wù)器架設(shè)中,也有幾個(gè)關(guān)于 chroot 的配置選項(xiàng),可以把操作系統(tǒng)中的 某一個(gè)目錄(通常是該用戶的主目錄)作為用戶的根目錄,用戶登錄到 FTP 服務(wù) 器時(shí),看到的根目錄并不是服務(wù)器上真正的根目錄,而是其他目錄。用戶不能訪 問(wèn)除這個(gè)目錄以外的任何文件,即就是把用戶監(jiān)禁在某一目錄中,用戶的任何操 作僅對(duì)這個(gè)目錄有效,不會(huì)影響到系統(tǒng)和其他用戶的文件。 早期 Linux 服務(wù)都是以 root 權(quán)限啟動(dòng)和運(yùn)行的,隨著技術(shù)的發(fā)展,各種服務(wù)變得越來(lái) 越復(fù)雜,導(dǎo)致 BUG 和漏洞也越來(lái)越多。黑客利用服務(wù)的漏洞入侵系統(tǒng),就能獲得 root 級(jí) 別的權(quán)限,從而可以控制整個(gè)系統(tǒng)。為了減緩這種攻擊所帶來(lái)的負(fù)面影響,現(xiàn)在的服務(wù)器 軟件通常設(shè)計(jì)成以 root 權(quán)限啟動(dòng),然后服務(wù)器進(jìn)程自行放棄 root 權(quán)限,再以某個(gè)低權(quán)限的 系統(tǒng)賬號(hào)來(lái)運(yùn)行進(jìn)程。這種方式的好處在于該服務(wù)被攻擊者利用漏洞入侵時(shí),由于進(jìn)程權(quán) 限比較低,攻擊者得到的訪問(wèn)權(quán)限是基于這個(gè)較低權(quán)限的,因此對(duì)系統(tǒng)造成的危害比以前 減輕了許多。 基于同樣的道理,chroot 的使用并不能說(shuō)是讓程序本身更安全了,它跟沒(méi)有 chroot 的 程序比較,依然有著同樣多的 bug 和漏洞,依然會(huì)被攻擊者利用這些 bug 和漏洞進(jìn)行攻擊 并得逞。但由于程序本身的權(quán)限被嚴(yán)格限制了,因此攻擊者無(wú)法造成更大的破壞,也無(wú)法 奪取操作系統(tǒng)的最高權(quán)限。DNS 服務(wù)器主要是用于域名解析,需要面對(duì)來(lái)自網(wǎng)絡(luò)各個(gè)位置 的大量訪問(wèn),并且一般不限制來(lái)訪者的 IP,因此,存在的安全隱患和被攻擊的可能性相當(dāng) 大,使用 chroot 功能也就特別地有意義了。 在 Red Hat Enterprise Linux 5 下 , chroot 的 安 裝 包 文 件 名 為 bind-chroot-9.3.37.el5.i386.rpm,在第二張安裝盤(pán)中。把安裝文件復(fù)制到當(dāng)前目錄后,輸入以下命令進(jìn)行 安裝。 # rpm -ivh bind-chroot-9.3.3-7.el5.i386.rpm 309 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 當(dāng)成功安裝 chroot 后,named 的虛擬根目錄變?yōu)?var/named/chroot,即以后運(yùn)行 named 進(jìn)程時(shí),會(huì)把這個(gè)目錄當(dāng)作根目錄。同時(shí),這個(gè)虛擬根目錄下還自動(dòng)創(chuàng)建了 dev、etc 和 var 3 個(gè)目錄,分別對(duì)應(yīng)實(shí)際根目錄下的同名目錄。另外,安裝 chroot 時(shí),還會(huì)自動(dòng)把實(shí)際 根目錄下的這 3 個(gè)目錄中的配置文件都復(fù)制到虛擬根目錄下對(duì)應(yīng)的 3 個(gè)目錄中,例如, /etc/named.conf 會(huì)復(fù)制到/var/named/chroot/etc。因此,以后編輯 named 的配置文件時(shí),要 注意其存放的目錄位置。 當(dāng) BIND 包安裝完后,會(huì)在/usr/sbin 目錄下出現(xiàn) bind-chroot-admin 文件,這是一個(gè)與 chroot 有關(guān)的命令文件,利用它,可以禁用或啟用 chroot 功能,也可以使虛擬根目錄下的 named 配置文件與實(shí)際根目錄下的 named 配置文件進(jìn)行同步。其命令格式如下所示。 # bind-chroot-admin Usage: -e | -enable: enable the bind-chroot environment -d | -disable: disable the bind-chroot environment -s | -sync: sync files between the bind chroot and / environments, so they are correct for the current state of the bind-chroot (enabled / disabled) $BIND_CHROOT_PREFIX, default /var/named/chroot, is the location of the chroot. $BIND_DIR, default /var/named, is the default un-chrooted bind directory. 在 bind-chroot-admin 命令后加-e 選項(xiàng)可以啟用 chroot 功能, 加-d 選項(xiàng)禁用 chroot 功能, 加-s 選項(xiàng)同步配置文件。在實(shí)際工作中,最好要啟用 chroot 功能,可以使服務(wù)器的安全性 能得到提高, 但在本章中, 為了講解和實(shí)驗(yàn)的方便, 以及減少出錯(cuò)的可能性, 禁用了 chroot 功能。 14.2.5 使用 rndc rndc 是 BIND 安裝包提供的一種控制域名服務(wù)運(yùn)行的工具,它可以運(yùn)行在其他計(jì)算機(jī) 上,通過(guò)網(wǎng)絡(luò)與 DNS 服務(wù)器進(jìn)行連接,然后根據(jù)管理員的指令對(duì) named 進(jìn)程進(jìn)行遠(yuǎn)程控 制,此時(shí),管理員不需要 DNS 服務(wù)器的根用戶權(quán)限。 使用 rndc 可以在不停止 DNS 服務(wù)器工作的情況進(jìn)行數(shù)據(jù)的更新,使修改后的配置文 件生效。在實(shí)際情況下,DNS 服務(wù)器是非常繁忙的,任何短時(shí)間的停頓都會(huì)給用戶的使用 帶來(lái)影響。因此,使用 rndc 工具可以使 DNS 服務(wù)器更好地為用戶提供服務(wù)。 rndc 與 DNS 服務(wù)器實(shí)行連接時(shí),需要通過(guò)數(shù)字證書(shū)進(jìn)行認(rèn)證,而不是傳統(tǒng)的用戶名/ 密碼方式。在當(dāng)前版本下,rndc 和 named 都只支持 HMAC-MD5 認(rèn)證算法,在通信兩端使 用共享密鑰。rndc 在連接通道中發(fā)送命令時(shí),必須使用經(jīng)過(guò)服務(wù)器認(rèn)可的密鑰加密。為了 生成雙方都認(rèn)可的密鑰,可以使用 rndc-confgen 命令產(chǎn)生密鑰和相應(yīng)的配置,再把這些配 置分別放入 named.conf 和 rndc 的配置文件 rndc.conf 中,具體操作步驟如下所示。 (1)執(zhí)行 rndc-confgen 命令,得到密鑰和相應(yīng)的配置。 # rndc-confgen # Start of rndc.conf key rndckey algorithm hmac-md5; secret TKuaJSEo58zohJBfrdF7dQ=; 310 第 14 章 ; options default-key rndckey; default-server ; default-port 953; ; # End of rndc.conf # # # # # # # # # # # DNS 服務(wù)器架設(shè)與應(yīng)用 Use with the following in named.conf, adjusting the allow list as needed: key rndckey algorithm hmac-md5; secret TKuaJSEo58zohJBfrdF7dQ=; ; controls inet port 953 allow ; keys rndckey; ; ; End of named.conf (2)在/etc 目錄下創(chuàng)建 rndc.conf 文件,根據(jù)提示輸入上述輸出中不帶注釋的內(nèi)容。 # vi /etc/rndc.conf key rndckey algorithm hmac-md5; secret TKuaJSEo58zohJBfrdF7dQ=; ; options default-key rndckey; default-server ; default-port 953; ; (3)根據(jù)提示,把下列內(nèi)容放入原有的/etc/named.conf 文件后面。 key rndckey algorithm hmac-md5; secret TKuaJSEo58zohJBfrdF7dQ=; ; controls inet port 953 allow ; keys rndckey; ; ; (4)重啟 named 進(jìn)程后,就可以使用 rndc 工具對(duì) named 進(jìn)行控制了。例如,下面的 命令可以使 named 重新裝載配置文件和區(qū)文件。 # rndc reload server reload successful # 此外,所有 rndc 支持的命令及幫助信息可以通過(guò)不帶參數(shù)的 rndc 命令顯示。 rootlocalhost named# rndc Usage: rndc -c config -s server -p port -k key-file -y key -V command command is one of the following: 311 第3篇 Linux 常見(jiàn)服務(wù)器架設(shè)篇 reload Reload configuration file and zones. reload zone class view status Display status of the server. recursing Dump the queries that are currently recursing (named.recursing) Restart the server. *restart * = not yet implemented Version: 9.3.3rc2 可以看到, rndc 提供了非常豐富的命令, 可以讓管理員在不重啟 named 進(jìn)程的情況下, 完成大部分的 DNS 服務(wù)器管理工作。 說(shuō)明:rndc 命令后面可以跟“-s”和“-p”選項(xiàng)連接

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論