使用Bind提供域名解析服務(wù)

轉(zhuǎn)載:https://www.linuxprobe.com/chapter-13.html

章節(jié)簡(jiǎn)述:

本章講解了DNS域名解析服務(wù)的原理以及作用,介紹了域名查詢功能中正向解析與反向解析的作用争剿,并通過實(shí)驗(yàn)的方式演示了如何在DNS主服務(wù)器上部署正透绩、反解析工作模式嗽仪,以便讓大家深刻體會(huì)到DNS域名查詢的便利以及強(qiáng)大卡啰。

本章還介紹了如何部署DNS從服務(wù)器以及DNS緩存服務(wù)器來(lái)提升用戶的域名查詢體驗(yàn),以及如何使用chroot牢籠機(jī)制插件來(lái)保障bind服務(wù)程序的可靠性睹耐,并向大家演示如何在主服務(wù)器與從服務(wù)器之間部署TSIG密鑰加密功能钝尸,來(lái)進(jìn)一步保障迭代查詢中數(shù)據(jù)的安全性蜂大。最后,本章還從實(shí)戰(zhàn)層面講解了DNS分離解析技術(shù)蝶怔,讓來(lái)自不同國(guó)家奶浦、不同地區(qū)的用戶都能獲得最優(yōu)的網(wǎng)站訪問體驗(yàn)。

相信大家在學(xué)完本章內(nèi)容之后踢星,一定會(huì)對(duì)bind服務(wù)程序有更深入的了解和認(rèn)識(shí)澳叉,并能深刻地體會(huì)到作為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施中重要一環(huán)的DNS域名解析服務(wù),在互聯(lián)網(wǎng)中所承擔(dān)的重要角色和發(fā)揮的重要作用。

13.1 DNS域名解析服務(wù)

相較于由數(shù)字構(gòu)成的IP地址成洗,域名更容易被理解和記憶五督,所以我們通常更習(xí)慣通過域名的方式來(lái)訪問網(wǎng)絡(luò)中的資源。但是瓶殃,網(wǎng)絡(luò)中的計(jì)算機(jī)之間只能基于IP地址來(lái)相互識(shí)別對(duì)方的身份充包,而且要想在互聯(lián)網(wǎng)中傳輸數(shù)據(jù),也必須基于外網(wǎng)的IP地址來(lái)完成遥椿。

為了降低用戶訪問網(wǎng)絡(luò)資源的門檻基矮,DNS(Domain Name System,域名系統(tǒng))技術(shù)應(yīng)運(yùn)而生冠场。這是一項(xiàng)用于管理和解析域名與IP地址對(duì)應(yīng)關(guān)系的技術(shù)家浇,簡(jiǎn)單來(lái)說(shuō),就是能夠接受用戶輸入的域名或IP地址碴裙,然后自動(dòng)查找與之匹配(或者說(shuō)具有映射關(guān)系)的IP地址或域名钢悲,即將域名解析為IP地址(正向解析),或?qū)P地址解析為域名(反向解析)舔株。這樣一來(lái)莺琳,我們只需要在瀏覽器中輸入域名就能打開想要訪問的網(wǎng)站了。DNS域名解析技術(shù)的正向解析也是我們最常使用的一種工作模式载慈。

鑒于互聯(lián)網(wǎng)中的域名和IP地址對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)太過龐大芦昔,DNS域名解析服務(wù)采用了類似目錄樹的層次結(jié)構(gòu)來(lái)記錄域名與IP地址之間的對(duì)應(yīng)關(guān)系,從而形成了一個(gè)分布式的數(shù)據(jù)庫(kù)系統(tǒng)娃肿,如圖13-1所示。

第13章 使用Bind提供域名解析服務(wù)珠十。第13章 使用Bind提供域名解析服務(wù)料扰。

圖13-1 DNS域名解析服務(wù)采用的目錄樹層次結(jié)構(gòu)

域名后綴一般分為國(guó)際域名和國(guó)內(nèi)域名。原則上來(lái)講焙蹭,域名后綴都有嚴(yán)格的定義晒杈,但在實(shí)際使用時(shí)可以不必嚴(yán)格遵守。目前最常見的域名后綴有.com(商業(yè)組織)孔厉、.org(非營(yíng)利組織)拯钻、.gov(政府部門)、.net(網(wǎng)絡(luò)服務(wù)商)撰豺、.edu(教研機(jī)構(gòu))粪般、.pub(公共大眾)、.cn(中國(guó)國(guó)家頂級(jí)域名)等污桦。

當(dāng)今世界的信息化程度越來(lái)越高亩歹,大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)小作、人工智能等新技術(shù)不斷涌現(xiàn)亭姥,全球網(wǎng)民的數(shù)量據(jù)說(shuō)也超過了35億,而且每年還在以10%的速度迅速增長(zhǎng)顾稀。這些因素導(dǎo)致互聯(lián)網(wǎng)中的域名數(shù)量進(jìn)一步激增达罗,被訪問的頻率也進(jìn)一步加大。假設(shè)全球網(wǎng)民每人每天只訪問一個(gè)網(wǎng)站域名静秆,而且只訪問一次粮揉,也會(huì)產(chǎn)生35億次的查詢請(qǐng)求,如此龐大的請(qǐng)求數(shù)量肯定無(wú)法被某一臺(tái)服務(wù)器全部處理掉诡宗。DNS技術(shù)作為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施中重要的一環(huán)滔蝉,為了為網(wǎng)民提供不間斷、穩(wěn)定且快速的域名查詢服務(wù)塔沃,保證互聯(lián)網(wǎng)的正常運(yùn)轉(zhuǎn)蝠引,提供了下面三種類型的服務(wù)器。

主服務(wù)器:在特定區(qū)域內(nèi)具有唯一性蛀柴,負(fù)責(zé)維護(hù)該區(qū)域內(nèi)的域名與IP地址之間的對(duì)應(yīng)關(guān)系螃概。

從服務(wù)器:從主服務(wù)器中獲得域名與IP地址的對(duì)應(yīng)關(guān)系并進(jìn)行維護(hù),以防主服務(wù)器宕機(jī)等情況鸽疾。

緩存服務(wù)器:通過向其他域名解析服務(wù)器查詢獲得域名與IP地址的對(duì)應(yīng)關(guān)系吊洼,并將經(jīng)常查詢的域名信息保存到服務(wù)器本地,以此來(lái)提高重復(fù)查詢時(shí)的效率制肮。

簡(jiǎn)單來(lái)說(shuō)冒窍,主服務(wù)器是用于管理域名和IP地址對(duì)應(yīng)關(guān)系的真正服務(wù)器,從服務(wù)器幫助主服務(wù)器“打下手”豺鼻,分散部署在各個(gè)國(guó)家综液、省市或地區(qū),以便讓用戶就近查詢域名儒飒,從而減輕主服務(wù)器的負(fù)載壓力谬莹。緩存服務(wù)器不太常用,一般部署在企業(yè)內(nèi)網(wǎng)的網(wǎng)關(guān)位置桩了,用于加速用戶的域名查詢請(qǐng)求附帽。

DNS域名解析服務(wù)采用分布式的數(shù)據(jù)結(jié)構(gòu)來(lái)存放海量的“區(qū)域數(shù)據(jù)”信息,在執(zhí)行用戶發(fā)起的域名查詢請(qǐng)求時(shí)井誉,具有遞歸查詢和迭代查詢兩種方式蕉扮。所謂遞歸查詢,是指DNS服務(wù)器在收到用戶發(fā)起的請(qǐng)求時(shí)颗圣,必須向用戶返回一個(gè)準(zhǔn)確的查詢結(jié)果慢显。如果DNS服務(wù)器本地沒有存儲(chǔ)與之對(duì)應(yīng)的信息爪模,則該服務(wù)器需要詢問其他服務(wù)器,并將返回的查詢結(jié)果提交給用戶荚藻。而迭代查詢則是指屋灌,DNS服務(wù)器在收到用戶發(fā)起的請(qǐng)求時(shí),并不直接回復(fù)查詢結(jié)果应狱,而是告訴另一臺(tái)DNS服務(wù)器的地址共郭,用戶再向這臺(tái)DNS服務(wù)器提交請(qǐng)求,這樣依次反復(fù)疾呻,直到返回查詢結(jié)果除嘹。

由此可見,當(dāng)用戶向就近的一臺(tái)DNS服務(wù)器發(fā)起對(duì)某個(gè)域名的查詢請(qǐng)求之后(這里以www.linuxprobe.com為例)岸蜗,其查詢流程大致如圖13-2所示尉咕。

第13章 使用Bind提供域名解析服務(wù)。第13章 使用Bind提供域名解析服務(wù)璃岳。

圖13-2 向DNS服務(wù)器發(fā)起域名查詢請(qǐng)求的流程

當(dāng)用戶向網(wǎng)絡(luò)指定的DNS服務(wù)器發(fā)起一個(gè)域名請(qǐng)求時(shí)年缎,通常情況下會(huì)有本地由此DNS服務(wù)器向上級(jí)的DNS服務(wù)器發(fā)送迭代查詢請(qǐng)求;如果該DNS服務(wù)器沒有要查詢的信息铃慷,則會(huì)進(jìn)一步向上級(jí)DNS服務(wù)器發(fā)送迭代查詢請(qǐng)求单芜,直到獲得準(zhǔn)確的查詢結(jié)果為止。其中最高級(jí)犁柜、最權(quán)威的根DNS服務(wù)器總共有13臺(tái)洲鸠,分布在世界各地,其管理單位馋缅、具體的地理位置扒腕,以及IP地址如表13-1所示。

表13-1 13臺(tái)根DNS服務(wù)器的具體信息

名稱 管理單位 地理位置 IP地址
A INTERNIC.NET 美國(guó)-弗吉尼亞州 198.41.0.4
B 美國(guó)信息科學(xué)研究所 美國(guó)-加利弗尼亞州 128.9.0.107
C PSINet公司 美國(guó)-弗吉尼亞州 192.33.4.12
D 馬里蘭大學(xué) 美國(guó)-馬里蘭州 128.8.10.90
E 美國(guó)航空航天管理局 美國(guó)加利弗尼亞州 192.203.230.10
F 因特網(wǎng)軟件聯(lián)盟 美國(guó)加利弗尼亞州 192.5.5.241
G 美國(guó)國(guó)防部網(wǎng)絡(luò)信息中心 美國(guó)弗吉尼亞州 192.112.36.4
H 美國(guó)陸軍研究所 美國(guó)-馬里蘭州 128.63.2.53
I Autonomica公司 瑞典-斯德哥爾摩 192.36.148.17
J VeriSign公司 美國(guó)-弗吉尼亞州 192.58.128.30
K RIPE NCC 英國(guó)-倫敦 193.0.14.129
L IANA 美國(guó)-弗吉尼亞州 199.7.83.42
M WIDE Project 日本-東京 202.12.27.33
13.2 安裝Bind服務(wù)程序

BIND(Berkeley Internet Name Domain萤悴,伯克利因特網(wǎng)名稱域)服務(wù)是全球范圍內(nèi)使用最廣泛瘾腰、最安全可靠且高效的域名解析服務(wù)程序。DNS域名解析服務(wù)作為互聯(lián)網(wǎng)基礎(chǔ)設(shè)施服務(wù)稚疹,其責(zé)任之重可想而知,因此建議大家在生產(chǎn)環(huán)境中安裝部署bind服務(wù)程序時(shí)加上chroot(俗稱牢籠機(jī)制)擴(kuò)展包祭务,以便有效地限制bind服務(wù)程序僅能對(duì)自身的配置文件進(jìn)行操作内狗,以確保整個(gè)服務(wù)器的安全。

[root@linuxprobe ~]# yum install bind-chroot
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分輸出信息………………
Installing:
 bind-chroot x86_64 32:9.9.4-14.el7 rhel 81 k
Installing for dependencies:
 bind x86_64 32:9.9.4-14.el7 rhel 1.8 M
Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 1.8 M
Installed size: 4.3 M
Is this ok [y/d/N]: **y**
Downloading packages:
--------------------------------------------------------------------------------
Total 28 MB/s | 1.8 MB 00:00 
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : 32:bind-9.9.4-14.el7.x86_64 1/2 
 Installing : 32:bind-chroot-9.9.4-14.el7.x86_64 2/2 
 Verifying : 32:bind-9.9.4-14.el7.x86_64 1/2 
 Verifying : 32:bind-chroot-9.9.4-14.el7.x86_64 2/2 
Installed:
 bind-chroot.x86_64 32:9.9.4-14.el7 
Dependency Installed:
 bind.x86_64 32:9.9.4-14.el7 
Complete!

bind服務(wù)程序的配置并不簡(jiǎn)單义锥,因?yàn)橐霝橛脩籼峁┙∪腄NS查詢服務(wù)柳沙,要在本地保存相關(guān)的域名數(shù)據(jù)庫(kù),而如果把所有域名和IP地址的對(duì)應(yīng)關(guān)系都寫入到某個(gè)配置文件中拌倍,估計(jì)要有上千萬(wàn)條的參數(shù)赂鲤,這樣既不利于程序的執(zhí)行效率噪径,也不方便日后的修改和維護(hù)。因此在bind服務(wù)程序中有下面這三個(gè)比較關(guān)鍵的文件数初。

主配置文件(/etc/named.conf):只有58行找爱,而且在去除注釋信息和空行之后,實(shí)際有效的參數(shù)僅有30行左右泡孩,這些參數(shù)用來(lái)定義bind服務(wù)程序的運(yùn)行车摄。

區(qū)域配置文件(/etc/named.rfc1912.zones):用來(lái)保存域名和IP地址對(duì)應(yīng)關(guān)系的所在位置。類似于圖書的目錄仑鸥,對(duì)應(yīng)著每個(gè)域和相應(yīng)IP地址所在的具體位置吮播,當(dāng)需要查看或修改時(shí),可根據(jù)這個(gè)位置找到相關(guān)文件眼俊。

數(shù)據(jù)配置文件目錄(/var/named):該目錄用來(lái)保存域名和IP地址真實(shí)對(duì)應(yīng)關(guān)系的數(shù)據(jù)配置文件意狠。

Linux系統(tǒng)中,bind服務(wù)程序的名稱為named疮胖。首先需要在/etc目錄中找到該服務(wù)程序的主配置文件环戈,然后把第11行和第17行的地址均修改為any,分別表示服務(wù)器上的所有IP地址均可提供DNS域名解析服務(wù)获列,以及允許所有人對(duì)本服務(wù)器發(fā)送DNS查詢請(qǐng)求硕糊。這兩個(gè)地方一定要修改準(zhǔn)確。

 [root@linuxprobe ~]# vim /etc/named.conf
 1 //
 2 // named.conf
 3 //
 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 5 // server as a caching only nameserver (as a localhost DNS resolver only).
 6 //
 7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 8 //
 9 
 10 options {
 **11 listen-on port 53 { any; };**
 12 listen-on-v6 port 53 { ::1; };
 13 directory "/var/named";
 14 dump-file "/var/named/data/cache_dump.db";
 15 statistics-file "/var/named/data/named_stats.txt";
 16 memstatistics-file "/var/named/data/named_mem_stats.txt";
 **17 allow-query { any; };**
 18 
 19 /* 
 20 - If you are building an AUTHORITATIVE DNS server, do NOT enable re cursion.
 1,1 Top
 21 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
 22 recursion. 
 23 - If your recursive DNS server has a public IP address, you MUST en able access 
 24 control to limit queries to your legitimate users. Failing to do so will
 25 cause your server to become part of large scale DNS amplification 
 26 attacks. Implementing BCP38 within your network would greatly
 27 reduce such attack surface 
 28 */
 29 recursion yes;
 30 
 31 dnssec-enable yes;
 32 dnssec-validation yes;
 33 dnssec-lookaside auto;
 34 
 35 /* Path to ISC DLV key */
 36 bindkeys-file "/etc/named.iscdlv.key";
 37 
 38 managed-keys-directory "/var/named/dynamic";
 39 
 40 pid-file "/run/named/named.pid";
 41 session-keyfile "/run/named/session.key";
 42 };
 43 
 44 logging {
 45 channel default_debug {
 46 file "data/named.run";
 47 severity dynamic;
 48 };
 49 };
 50 
 51 zone "." IN {
 52 type hint;
 53 file "named.ca";
 54 };
 55 
 56 include "/etc/named.rfc1912.zones";
 57 include "/etc/named.root.key";
 58 

如前所述泵额,bind服務(wù)程序的區(qū)域配置文件(/etc/named.rfc1912.zones)用來(lái)保存域名和IP地址對(duì)應(yīng)關(guān)系的所在位置挟冠。在這個(gè)文件中,定義了域名與IP地址解析規(guī)則保存的文件位置以及服務(wù)類型等內(nèi)容巩梢,而沒有包含具體的域名创泄、IP地址對(duì)應(yīng)關(guān)系等信息。服務(wù)類型有三種括蝠,分別為hint(根區(qū)域)鞠抑、master(主區(qū)域)、slave(輔助區(qū)域)忌警,其中常用的master和slave指的就是主服務(wù)器和從服務(wù)器搁拙。將域名解析為IP地址的正向解析參數(shù)和將IP地址解析為域名的反向解析參數(shù)分別如圖13-3和圖13-4所示。

第13章 使用Bind提供域名解析服務(wù)法绵。第13章 使用Bind提供域名解析服務(wù)箕速。

圖13-3 正向解析參數(shù)

第13章 使用Bind提供域名解析服務(wù)。第13章 使用Bind提供域名解析服務(wù)朋譬。

圖13-4 反向解析參數(shù)

下面的實(shí)驗(yàn)中會(huì)分別修改bind服務(wù)程序的主配置文件盐茎、區(qū)域配置文件與數(shù)據(jù)配置文件。如果在實(shí)驗(yàn)中遇到了bind服務(wù)程序啟動(dòng)失敗的情況徙赢,而您認(rèn)為這是由于參數(shù)寫錯(cuò)而導(dǎo)致的字柠,則可以執(zhí)行named-checkconf命令和named-checkzone命令探越,分別檢查主配置文件與數(shù)據(jù)配置文件中語(yǔ)法或參數(shù)的錯(cuò)誤。

13.2.1 正向解析實(shí)驗(yàn)

在DNS域名解析服務(wù)中窑业,正向解析是指根據(jù)域名(主機(jī)名)查找到對(duì)應(yīng)的IP地址钦幔。也就是說(shuō),當(dāng)用戶輸入了一個(gè)域名后数冬,bind服務(wù)程序會(huì)自動(dòng)進(jìn)行查找节槐,并將匹配到的IP地址返給用戶。這也是最常用的DNS工作模式拐纱。

第1步:編輯區(qū)域配置文件铜异。該文件中默認(rèn)已經(jīng)有了一些無(wú)關(guān)緊要的解析參數(shù),旨在讓用戶有一個(gè)參考秸架。我們可以將下面的參數(shù)添加到區(qū)域配置文件的最下面揍庄,當(dāng)然,也可以將該文件中的原有信息全部清空东抹,而只保留自己的域名解析信息:

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};

第2步:編輯數(shù)據(jù)配置文件蚂子。我們可以從/var/named目錄中復(fù)制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的對(duì)應(yīng)數(shù)據(jù)填寫數(shù)據(jù)配置文件中并保存缭黔。在復(fù)制時(shí)記得加上-a參數(shù)食茎,這可以保留原始文件的所有者、所屬組馏谨、權(quán)限屬性等信息别渔,以便讓bind服務(wù)程序順利讀取文件內(nèi)容:

[root@linuxprobe ~]# cd /var/named/
[root@linuxprobe named]# ls -al named.localhost
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone

編輯數(shù)據(jù)配置文件。在保存并退出后文件后記得重啟named服務(wù)程序惧互,讓新的解析數(shù)據(jù)生效哎媚。考慮到正向解析文件中的參數(shù)較多喊儡,而且相對(duì)都比較重要拨与,劉遄老師在每個(gè)參數(shù)后面都作了簡(jiǎn)要的說(shuō)明。

[root@linuxprobe named]# vim linuxprobe.com.zone
[root@linuxprobe named]# systemctl restart named
$TTL 1D #生存周期為1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授權(quán)信息開始: #DNS區(qū)域的地址 #域名管理員的郵箱(不要用@符號(hào))
0;serial #更新序列號(hào)
1D;refresh #更新時(shí)間
1H;retry #重試延時(shí)
1W;expire #失效時(shí)間
3H;)minimum #無(wú)效解析記錄的緩存時(shí)間
NS ns.linuxprobe.com. #域名服務(wù)器記錄
ns IN A 192.168.10.10 #地址記錄(ns.linuxprobe.com.)
IN MX 10 mail.linuxprobe.com. #郵箱交換記錄
mail IN A 192.168.10.10 #地址記錄(mail.linuxprobe.com.)
www IN A 192.168.10.10 #地址記錄(www.linuxprobe.com.)
bbs IN A 192.168.10.20 #地址記錄(bbs.linuxprobe.com.)

第3步:檢驗(yàn)解析結(jié)果艾猜。為了檢驗(yàn)解析結(jié)果买喧,一定要先把Linux系統(tǒng)網(wǎng)卡中的DNS地址參數(shù)修改成本機(jī)IP地址,這樣就可以使用由本機(jī)提供的DNS查詢服務(wù)了匆赃。nslookup命令用于檢測(cè)能否從DNS服務(wù)器中查詢到域名與IP地址的解析記錄淤毛,進(jìn)而更準(zhǔn)確地檢驗(yàn)DNS服務(wù)器是否已經(jīng)能夠?yàn)橛脩籼峁┓?wù)。

[root@linuxprobe ~]# systemctl restart network
[root@linuxprobe ~]# nslookup
> **www.linuxprobe.com**
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.linuxprobe.com
Address: 192.168.10.10
> **bbs.linuxprobe.com**
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: bbs.linuxprobe.com
Address: 192.168.10.20
13.2.2 反向解析實(shí)驗(yàn)

在DNS域名解析服務(wù)中炸庞,反向解析的作用是將用戶提交的IP地址解析為對(duì)應(yīng)的域名信息钱床,它一般用于對(duì)某個(gè)IP地址上綁定的所有域名進(jìn)行整體屏蔽荚斯,屏蔽由某些域名發(fā)送的垃圾郵件埠居。它也可以針對(duì)某個(gè)IP地址進(jìn)行反向解析查牌,大致判斷出有多少個(gè)網(wǎng)站運(yùn)行在上面。當(dāng)購(gòu)買虛擬主機(jī)時(shí)滥壕,可以使用這一功能驗(yàn)證虛擬主機(jī)提供商是否有嚴(yán)重的超售問題纸颜。

第1步:編輯區(qū)域配置文件。在編輯該文件時(shí)绎橘,除了不要寫錯(cuò)格式之外胁孙,還需要記住此處定義的數(shù)據(jù)配置文件名稱,因?yàn)橐粫?huì)兒還需要在/var/named目錄中建立與其對(duì)應(yīng)的同名文件称鳞。反向解析是把IP地址解析成域名格式涮较,因此在定義zone(區(qū)域)時(shí)應(yīng)該要把IP地址反寫,比如原來(lái)是192.168.10.0冈止,反寫后應(yīng)該就是10.168.192狂票,而且只需寫出IP地址的網(wǎng)絡(luò)位即可。把下列參數(shù)添加至正向解析參數(shù)的后面熙暴。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
};

第2步:編輯數(shù)據(jù)配置文件闺属。首先從/var/named目錄中復(fù)制一份反向解析的模板文件(named.loopback),然后把下面的參數(shù)填寫到文件中周霉。其中掂器,IP地址僅需要寫主機(jī)位,如圖13-5所示俱箱。

第13章 使用Bind提供域名解析服務(wù)国瓮。第13章 使用Bind提供域名解析服務(wù)。

圖13-5 反向解析文件中IP地址參數(shù)規(guī)范

[root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa
[root@linuxprobe named]# vim 192.168.10.arpa
[root@linuxprobe named]# systemctl restart named
$TTL 1D
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
0;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
NS ns.linuxprobe.com.
ns A 192.168.10.10
10 PTR ns.linuxprobe.com. #PTR為指針記錄匠楚,僅用于反向解析中巍膘。
10 PTR mail.linuxprobe.com.
10 PTR www.linuxprobe.com.
20 PTR bbs.linuxprobe.com.

第3步:檢驗(yàn)解析結(jié)果。在前面的正向解析實(shí)驗(yàn)中芋簿,已經(jīng)把系統(tǒng)網(wǎng)卡中的DNS地址參數(shù)修改成了本機(jī)IP地址峡懈,因此可以直接使用nslookup命令來(lái)檢驗(yàn)解析結(jié)果,僅需輸入IP地址即可查詢到對(duì)應(yīng)的域名信息与斤。

[root@linuxprobe ~]# nslookup
> **192.168.10.10**
Server: 127.0.0.1
Address: 127.0.0.1#53
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.
> **192.168.10.20**
Server: 127.0.0.1
Address: 127.0.0.1#53
20.10.168.192.in-addr.arpa name = bbs.linuxprobe.com.
13.3 部署從服務(wù)器

作為重要的互聯(lián)網(wǎng)基礎(chǔ)設(shè)施服務(wù)肪康,保證DNS域名解析服務(wù)的正常運(yùn)轉(zhuǎn)至關(guān)重要,只有這樣才能提供穩(wěn)定撩穿、快速且不間斷的域名查詢服務(wù)磷支。在DNS域名解析服務(wù)中,從服務(wù)器可以從主服務(wù)器上獲取指定的區(qū)域數(shù)據(jù)文件食寡,從而起到備份解析記錄與負(fù)載均衡的作用雾狈,因此通過部署從服務(wù)器可以減輕主服務(wù)器的負(fù)載壓力,還可以提升用戶的查詢效率抵皱。

在本實(shí)驗(yàn)中善榛,主服務(wù)器與從服務(wù)器分別使用的操作系統(tǒng)和IP地址如表13-2所示辩蛋。

表13-2 主服務(wù)器與從服務(wù)器分別使用的操作系統(tǒng)與IP地址信息

主機(jī)名稱 操作系統(tǒng) IP地址
主服務(wù)器 RHEL 7 192.168.10.10
從服務(wù)器 RHEL 7 192.168.10.20

第1步:在主服務(wù)器的區(qū)域配置文件中允許該從服務(wù)器的更新請(qǐng)求,即修改allow-update {允許更新區(qū)域信息的主機(jī)地址;};參數(shù)移盆,然后重啟主服務(wù)器的DNS服務(wù)程序悼院。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update { **192.168.10.20**; };
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-update { **192.168.10.20**; };
};
[root@linuxprobe ~]# systemctl restart named

第2步:在從服務(wù)器中填寫主服務(wù)器的IP地址與要抓取的區(qū)域信息,然后重啟服務(wù)咒循。注意此時(shí)的服務(wù)類型應(yīng)該是slave(從)据途,而不再是master(主)。masters參數(shù)后面應(yīng)該為主服務(wù)器的IP地址叙甸,而且file參數(shù)后面定義的是同步數(shù)據(jù)配置文件后要保存到的位置颖医,稍后可以在該目錄內(nèi)看到同步的文件。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/linuxprobe.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/192.168.10.arpa";
};
[root@linuxprobe ~]# systemctl restart named

第3步:檢驗(yàn)解析結(jié)果裆蒸。當(dāng)從服務(wù)器的DNS服務(wù)程序在重啟后便脊,一般就已經(jīng)自動(dòng)從主服務(wù)器上同步了數(shù)據(jù)配置文件,而且該文件默認(rèn)會(huì)放置在區(qū)域配置文件中所定義的目錄位置中光戈。隨后修改從服務(wù)器的網(wǎng)絡(luò)參數(shù)哪痰,把DNS地址參數(shù)修改成192.168.10.20,這樣即可使用從服務(wù)器自身提供的DNS域名解析服務(wù)久妆。最后就可以使用nslookup命令順利看到解析結(jié)果了晌杰。

[root@linuxprobe ~]# cd /var/named/slaves
[root@linuxprobe slaves]# ls 
192.168.10.arpa linuxprobe.com.zone
[root@linuxprobe slaves]# nslookup
> **www.linuxprobe.com**
Server: 192.168.10.20
Address: 192.168.10.20#53
Name: www.linuxprobe.com
Address: 192.168.10.10
> **192.168.10.10**
Server: 192.168.10.20
Address: 192.168.10.20#53
10.10.168.192.in-addr.arpa name = www.linuxprobe.com.
10.10.168.192.in-addr.arpa name = ns.linuxprobe.com.
10.10.168.192.in-addr.arpa name = mail.linuxprobe.com.
13.4 安全的加密傳輸

前文反復(fù)提及,域名解析服務(wù)是互聯(lián)網(wǎng)基礎(chǔ)設(shè)施中重要的一環(huán)筷弦,幾乎所有的網(wǎng)絡(luò)應(yīng)用都依賴于DNS才能正常運(yùn)行肋演。如果DNS服務(wù)發(fā)生故障,那么即便Web網(wǎng)站或電子郵件系統(tǒng)服務(wù)等都正常運(yùn)行烂琴,用戶也無(wú)法找到并使用它們了爹殊。

互聯(lián)網(wǎng)中的絕大多數(shù)DNS服務(wù)器(超過95%)都是基于BIND域名解析服務(wù)搭建的,而bind服務(wù)程序?yàn)榱颂峁┌踩慕馕龇?wù)奸绷,已經(jīng)對(duì)TSIG(RFC 2845)加密機(jī)制提供了支持梗夸。TSIG主要是利用了密碼編碼的方式來(lái)保護(hù)區(qū)域信息的傳輸(Zone Transfer),即TSIG加密機(jī)制保證了DNS服務(wù)器之間傳輸域名區(qū)域信息的安全性号醉。

接下來(lái)的實(shí)驗(yàn)依然使用了表13-2中的兩臺(tái)服務(wù)器反症。

書接上回。前面在從服務(wù)器上配妥bind服務(wù)程序并重啟后畔派,即可看到從主服務(wù)器中獲取到的數(shù)據(jù)配置文件铅碍。

主機(jī)名稱 操作系統(tǒng) IP地址
主服務(wù)器 RHEL 7 192.168.10.10
從服務(wù)器 RHEL 7 192.168.10.20
[root@linuxprobe ~]# ls -al /var/named/slaves/
total 12
drwxrwx---. 2 named named 54 Jun 7 16:02 .
drwxr-x---. 6 root named 4096 Jun 7 15:58 ..
-rw-r--r--. 1 named named 432 Jun 7 16:02 192.168.10.arpa
-rw-r--r--. 1 named named 439 Jun 7 16:02 linuxprobe.com.zone
[root@linuxprobe ~]# rm -rf /var/named/slaves/*

第1步:在主服務(wù)器中生成密鑰。dnssec-keygen命令用于生成安全的DNS服務(wù)密鑰线椰,其格式為“dnssec-keygen [參數(shù)]”胞谈,常用的參數(shù)以及作用如表13-3所示。

表13-3 dnssec-keygen命令的常用參數(shù)

參數(shù) 作用
-a 指定加密算法,包括RSAMD5(RSA)烦绳、RSASHA1悔叽、DSA、NSEC3RSASHA1爵嗅、NSEC3DSA等
-b 密鑰長(zhǎng)度(HMAC-MD5的密鑰長(zhǎng)度在1~512位之間)
-n 密鑰的類型(HOST表示與主機(jī)相關(guān))

使用下述命令生成一個(gè)主機(jī)名稱為master-slave的128位HMAC-MD5算法的密鑰文件。在執(zhí)行該命令后默認(rèn)會(huì)在當(dāng)前目錄中生成公鑰和私鑰文件笨蚁,我們需要把私鑰文件中Key參數(shù)后面的值記錄下來(lái)睹晒,一會(huì)兒要將其寫入傳輸配置文件中。

[root@linuxprobe ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
Kmaster-slave.+157+46845
[root@linuxprobe ~]# ls -al Kmaster-slave.+157+46845.*
-rw-------. 1 root root 56 Jun 7 16:06 Kmaster-slave.+157+46845.key
-rw-------. 1 root root 165 Jun 7 16:06 Kmaster-slave.+157+46845.private
[root@linuxprobe ~]# cat Kmaster-slave.+157+46845.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
**Key: 1XEEL3tG5DNLOw+1WHfE3Q==**
Bits: AAA=
Created: 20170607080621
Publish: 20170607080621
Activate: 20170607080621

第2步:在主服務(wù)器中創(chuàng)建密鑰驗(yàn)證文件括细。進(jìn)入bind服務(wù)程序用于保存配置文件的目錄伪很,把剛剛生成的密鑰名稱、加密算法和私鑰加密字符串按照下面格式寫入到tansfer.key傳輸配置文件中奋单。為了安全起見锉试,我們需要將文件的所屬組修改成named,并將文件權(quán)限設(shè)置得要小一點(diǎn)览濒,然后把該文件做一個(gè)硬鏈接到/etc目錄中呆盖。

[root@linuxprobe ~]# cd /var/named/chroot/etc/
[root@linuxprobe etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q==";
};
[root@linuxprobe etc]# chown root:named transfer.key
[root@linuxprobe etc]# chmod 640 transfer.key
[root@linuxprobe etc]# ln transfer.key /etc/transfer.key

第3步:開啟并加載Bind服務(wù)的密鑰驗(yàn)證功能。首先需要在主服務(wù)器的主配置文件中加載密鑰驗(yàn)證文件贷笛,然后進(jìn)行設(shè)置应又,使得只允許帶有master-slave密鑰認(rèn)證的DNS服務(wù)器同步數(shù)據(jù)配置文件:

[root@linuxprobe ~]# vim /etc/named.conf
 1 //
 2 // named.conf
 3 //
 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 5 // server as a caching only nameserver (as a localhost DNS resolver only).
 6 //
 7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 8 //
 9 **include "/etc/transfer.key";**
 10 options {
 11 listen-on port 53 { any; };
 12 listen-on-v6 port 53 { ::1; };
 13 directory "/var/named";
 14 dump-file "/var/named/data/cache_dump.db";
 15 statistics-file "/var/named/data/named_stats.txt";
 16 memstatistics-file "/var/named/data/named_mem_stats.txt";
 17 allow-query { any; };
 18 **allow-transfer { key master-slave; };**
………………省略部分輸出信息………………
[root@linuxprobe ~]# systemctl restart named

至此,DNS主服務(wù)器的TSIG密鑰加密傳輸功能就已經(jīng)配置完成乏苦。此時(shí)清空DNS從服務(wù)器同步目錄中所有的數(shù)據(jù)配置文件株扛,然后再次重啟bind服務(wù)程序,這時(shí)就已經(jīng)不能像剛才那樣自動(dòng)獲取到數(shù)據(jù)配置文件了汇荐。

[root@linuxprobe ~]# rm -rf /var/named/slaves/*
[root@linuxprobe ~]# systemctl restart named
[root@linuxprobe ~]# ls  /var/named/slaves/

第4步:配置從服務(wù)器洞就,使其支持密鑰驗(yàn)證。配置DNS從服務(wù)器和主服務(wù)器的方法大致相同掀淘,都需要在bind服務(wù)程序的配置文件目錄中創(chuàng)建密鑰認(rèn)證文件旬蟋,并設(shè)置相應(yīng)的權(quán)限,然后把該文件做一個(gè)硬鏈接到/etc目錄中革娄。

[root@linuxprobe ~]# cd /var/named/chroot/etc
[root@linuxprobe etc]# vim transfer.key
key "master-slave" {
algorithm hmac-md5;
secret "1XEEL3tG5DNLOw+1WHfE3Q==";
};
[root@linuxprobe etc]# chown root:named transfer.key
[root@linuxprobe etc]# chmod 640 transfer.key
[root@linuxprobe etc]# ln transfer.key /etc/transfer.key

第5步:開啟并加載從服務(wù)器的密鑰驗(yàn)證功能咖为。這一步的操作步驟也同樣是在主配置文件中加載密鑰認(rèn)證文件,然后按照指定格式寫上主服務(wù)器的IP地址和密鑰名稱稠腊。注意躁染,密鑰名稱等參數(shù)位置不要太靠前,大約在第43行比較合適架忌,否則bind服務(wù)程序會(huì)因?yàn)闆]有加載完預(yù)設(shè)參數(shù)而報(bào)錯(cuò):

[root@linuxprobe etc]# vim /etc/named.conf
 1 //
 2 // named.conf
 3 //
 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
 5 // server as a caching only nameserver (as a localhost DNS resolver only).
 6 //
 7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
 8 //
 9 **include "/etc/transfer.key";**
 10 options {
 11 listen-on port 53 { 127.0.0.1; };
 12 listen-on-v6 port 53 { ::1; };
 13 directory "/var/named";
 14 dump-file "/var/named/data/cache_dump.db";
 15 statistics-file "/var/named/data/named_stats.txt";
 16 memstatistics-file "/var/named/data/named_mem_stats.txt";
 17 allow-query { localhost; };
 18 
 19 /* 
 20 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
 21 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
 22 recursion. 
 23 - If your recursive DNS server has a public IP address, you MUST enable access 
 24 control to limit queries to your legitimate users. Failing to do so will
 25 cause your server to become part of large scale DNS amplification 
 26 attacks. Implementing BCP38 within your network would greatly
 27 reduce such attack surface 
 28 */
 29 recursion yes;
 30 
 31 dnssec-enable yes;
 32 dnssec-validation yes;
 33 dnssec-lookaside auto;
 34 
 35 /* Path to ISC DLV key */
 36 bindkeys-file "/etc/named.iscdlv.key";
 37 
 38 managed-keys-directory "/var/named/dynamic";
 39 
 40 pid-file "/run/named/named.pid";
 41 session-keyfile "/run/named/session.key";
 42 };
 43 **server 192.168.10.10**
 44 **{**
 45 **keys { master-slave; };**
 46 **};** 
 47 logging {
 48 channel default_debug {
 49 file "data/named.run";
 50 severity dynamic;
 51 };
 52 };
 53 
 54 zone "." IN {
 55 type hint;
 56 file "named.ca";
 57 };
 58 
 59 include "/etc/named.rfc1912.zones";
 60 include "/etc/named.root.key";
 61

第6步:DNS從服務(wù)器同步域名區(qū)域數(shù)據(jù)⊥掏現(xiàn)在,兩臺(tái)服務(wù)器的bind服務(wù)程序都已經(jīng)配置妥當(dāng),并匹配到了相同的密鑰認(rèn)證文件饰恕。接下來(lái)在從服務(wù)器上重啟bind服務(wù)程序挠羔,可以發(fā)現(xiàn)又能順利地同步到數(shù)據(jù)配置文件了。

[root@linuxprobe ~]# systemctl restart named
[root@linuxprobe ~]# ls /var/named/slaves/
 192.168.10.arpa  linuxprobe.com.zone
13.5 部署緩存服務(wù)器

DNS緩存服務(wù)器(Caching DNS Server)是一種不負(fù)責(zé)域名數(shù)據(jù)維護(hù)的DNS服務(wù)器埋嵌。簡(jiǎn)單來(lái)說(shuō)破加,緩存服務(wù)器就是把用戶經(jīng)常使用到的域名與IP地址的解析記錄保存在主機(jī)本地,從而提升下次解析的效率雹嗦。DNS緩存服務(wù)器一般用于經(jīng)常訪問某些固定站點(diǎn)而且對(duì)這些網(wǎng)站的訪問速度有較高要求的企業(yè)內(nèi)網(wǎng)中范舀,但實(shí)際的應(yīng)用并不廣泛。而且了罪,緩存服務(wù)器是否可以成功解析還與指定的上級(jí)DNS服務(wù)器的允許策略有關(guān)锭环,因此當(dāng)前僅需了解即可。

第1步:配置系統(tǒng)的雙網(wǎng)卡參數(shù)泊藕。前面講到辅辩,緩存服務(wù)器一般用于企業(yè)內(nèi)網(wǎng),旨在降低內(nèi)網(wǎng)用戶查詢DNS的時(shí)間消耗娃圆。因此玫锋,為了更加貼近真實(shí)的網(wǎng)絡(luò)環(huán)境,實(shí)現(xiàn)外網(wǎng)查詢功能讼呢,我們需要在緩存服務(wù)器中再添加一塊網(wǎng)卡景醇,并按照表13-4所示的信息來(lái)配置出兩臺(tái)Linux虛擬機(jī)系統(tǒng)。而且吝岭,還需要在虛擬機(jī)軟件中將新添加的網(wǎng)卡設(shè)置為“橋接模式”三痰,然后設(shè)置成與物理設(shè)備相同的網(wǎng)絡(luò)參數(shù)(此處需要大家按照物理設(shè)備真實(shí)的網(wǎng)絡(luò)參數(shù)來(lái)配置,圖13-6所示為以DHCP方式獲取IP地址與網(wǎng)關(guān)等信息窜管,重啟網(wǎng)絡(luò)服務(wù)后的效果如圖13-7所示)散劫。

表13-4 用于配置Linux虛擬機(jī)系統(tǒng)所需的參數(shù)信息

主機(jī)名稱 操作系統(tǒng) IP地址
緩存服務(wù)器 RHEL 7 網(wǎng)卡(外網(wǎng)):根據(jù)物理設(shè)備的網(wǎng)絡(luò)參數(shù)進(jìn)行配置(通過DHCP或手動(dòng)方式指定IP地址與網(wǎng)關(guān)等信息)
網(wǎng)卡(內(nèi)網(wǎng)):192.168.10.10
客戶端 RHEL 7 192.168.10.20
第13章 使用Bind提供域名解析服務(wù)。第13章 使用Bind提供域名解析服務(wù)幕帆。

圖13-6 以DHCP方式獲取網(wǎng)絡(luò)參數(shù)

第13章 使用Bind提供域名解析服務(wù)获搏。第13章 使用Bind提供域名解析服務(wù)。

圖13-7 查看網(wǎng)卡的工作狀態(tài)

第2步:在bind服務(wù)程序的主配置文件中添加緩存轉(zhuǎn)發(fā)參數(shù)失乾。在大約第17行處添加一行參數(shù)“forwarders { 上級(jí)DNS服務(wù)器地址; };”常熙,上級(jí)DNS服務(wù)器地址指的是獲取數(shù)據(jù)配置文件的服務(wù)器〖钭拢考慮到查詢速度裸卫、穩(wěn)定性、安全性等因素纽竣,劉遄老師在這里使用的是北京市公共DNS服務(wù)器的地址210.73.64.1墓贿。如果大家也使用該地址茧泪,請(qǐng)先測(cè)試是否可以ping通,以免導(dǎo)致DNS域名解析失敗聋袋。

[root@linuxprobe ~]# vim /etc/named.conf
1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
5 // server as a caching only nameserver (as a localhost DNS resolver only).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
8 //
9 options {
10 listen-on port 53 { any; };
11 listen-on-v6 port 53 { ::1; };
12 directory "/var/named";
13 dump-file "/var/named/data/cache_dump.db";
14 statistics-file "/var/named/data/named_stats.txt";
15 memstatistics-file "/var/named/data/named_mem_stats.txt";
16 allow-query { any; };
17 **forwarders { 210.73.64.1; };**
………………省略部分輸出信息………………
[root@linuxprobe ~]# systemctl restart named

第3步:重啟DNS服務(wù)队伟,驗(yàn)證成果。把客戶端主機(jī)的DNS服務(wù)器地址參數(shù)修改為DNS緩存服務(wù)器的IP地址192.168.10.10幽勒,如圖13-8所示嗜侮。這樣即可讓客戶端使用本地DNS緩存服務(wù)器提供的域名查詢解析服務(wù)。

第13章 使用Bind提供域名解析服務(wù)啥容。第13章 使用Bind提供域名解析服務(wù)锈颗。

圖13-8 設(shè)置客戶端主機(jī)的DNS服務(wù)器地址參數(shù)

在將客戶端主機(jī)的網(wǎng)絡(luò)參數(shù)設(shè)置妥當(dāng)后重啟網(wǎng)絡(luò)服務(wù),即可使用nslookup命令來(lái)驗(yàn)證實(shí)驗(yàn)結(jié)果(如果解析失敗干毅,請(qǐng)讀者留意是否是上級(jí)DNS服務(wù)器選擇的問題)。其中泼返,Server參數(shù)為域名解析記錄提供的服務(wù)器地址硝逢,因此可見是由本地DNS緩存服務(wù)器提供的解析內(nèi)容。

[root@linuxprobe ~]# nslookup
> **www.linuxprobe.com**
Server: 192.168.10.10
Address: 192.168.10.10#53

Non-authoritative answer:
Name: www.linuxprobe.com
Address: 113.207.76.73
Name: www.linuxprobe.com
Address: 116.211.121.154
> **8.8.8.8**
Server: 192.168.10.10
Address: 192.168.10.10#53

Non-authoritative answer:
8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com.
Authoritative answers can be found from:
in-addr.arpa nameserver = f.in-addr-servers.arpa.
in-addr.arpa nameserver = b.in-addr-servers.arpa.
in-addr.arpa nameserver = a.in-addr-servers.arpa.
in-addr.arpa nameserver = e.in-addr-servers.arpa.
in-addr.arpa nameserver = d.in-addr-servers.arpa.
in-addr.arpa nameserver = c.in-addr-servers.arpa.
a.in-addr-servers.arpa internet address = 199.212.0.73
a.in-addr-servers.arpa has AAAA address 2001:500:13::73
b.in-addr-servers.arpa internet address = 199.253.183.183
b.in-addr-servers.arpa has AAAA address 2001:500:87::87
c.in-addr-servers.arpa internet address = 196.216.169.10
c.in-addr-servers.arpa has AAAA address 2001:43f8:110::10
d.in-addr-servers.arpa internet address = 200.10.60.53
d.in-addr-servers.arpa has AAAA address 2001:13c7:7010::53
e.in-addr-servers.arpa internet address = 203.119.86.101
e.in-addr-servers.arpa has AAAA address 2001:dd8:6::101
f.in-addr-servers.arpa internet address = 193.0.9.1
f.in-addr-servers.arpa has AAAA address 2001:67c:e0::1
13.6 分離解析技術(shù)

現(xiàn)在绅喉,喜歡看我們這本《Linux就該這么學(xué)》的海外讀者越來(lái)越多渠鸽,如果繼續(xù)把本書配套的網(wǎng)站服務(wù)器(https://www.linuxprobe.com)架設(shè)在北京市的機(jī)房?jī)?nèi),則海外讀者的訪問速度勢(shì)必會(huì)很慢柴罐』崭浚可如果把服務(wù)器架設(shè)在美國(guó)那邊的機(jī)房,也將增大國(guó)內(nèi)讀者的訪問難度革屠。

為了滿足海內(nèi)外讀者的需求凿试,外加劉遄老師不差錢,于是可以購(gòu)買多臺(tái)服務(wù)器并分別部署在全球各地似芝,然后再使用DNS服務(wù)的分離解析功能那婉,即可讓位于不同地理范圍內(nèi)的讀者通過訪問相同的網(wǎng)址,而從不同的服務(wù)器獲取到相同的數(shù)據(jù)党瓮。例如详炬,我們可以按照表13-5所示,分別為處于北京的DNS服務(wù)器和處于美國(guó)的DNS服務(wù)器分配不同的IP地址寞奸,然后讓國(guó)內(nèi)讀者在訪問時(shí)自動(dòng)匹配到北京的服務(wù)器呛谜,而讓海外讀者自動(dòng)匹配到美國(guó)的服務(wù)器,如圖13-9所示枪萄。

表13-5 不同主機(jī)的操作系統(tǒng)與IP地址情況

主機(jī)名稱 操作系統(tǒng) IP地址
DNS服務(wù)器 RHEL 7 北京網(wǎng)絡(luò):122.71.115.10
美國(guó)網(wǎng)絡(luò):106.185.25.10
北京用戶 Windows 7 122.71.115.1
海外用戶 Windows 7 106.185.25.1
第13章 使用Bind提供域名解析服務(wù)隐岛。第13章 使用Bind提供域名解析服務(wù)。

圖13-9 DNS分離解析技術(shù)

為了解決海外讀者訪問https://www.linuxprobe.com時(shí)的速度問題瓷翻,劉遄老師已經(jīng)在美國(guó)機(jī)房購(gòu)買并架設(shè)好了相應(yīng)的網(wǎng)站服務(wù)器礼仗,接下來(lái)需要手動(dòng)部署DNS服務(wù)器并實(shí)現(xiàn)分離解析功能,以便讓不同地理區(qū)域的讀者在訪問相同的域名時(shí),能解析出不同的IP地址元践。

建議大家將虛擬機(jī)還原到初始狀態(tài)韭脊,并重新安裝bind服務(wù)程序,以免多個(gè)實(shí)驗(yàn)之間相互產(chǎn)生沖突单旁。

第1步:修改bind服務(wù)程序的主配置文件沪羔,把第11行的監(jiān)聽端口與第17行的允許查詢主機(jī)修改為any。由于配置的DNS分離解析功能與DNS根服務(wù)器配置參數(shù)有沖突象浑,所以需要把第51~54行的根域信息刪除蔫饰。

[root@linuxprobe ~]# vim /etc/named.conf
………………省略部分輸出信息………………
44 logging {
45 channel default_debug {
46 file "data/named.run";
47 severity dynamic;
48 };
49 };
50
51 zone "." IN {
52 type hint;
53 file "named.ca";
54 };
55
56 include "/etc/named.rfc1912.zones";
57 include "/etc/named.root.key";
58
………………省略部分輸出信息………………

第2步:編輯區(qū)域配置文件。把區(qū)域配置文件中原有的數(shù)據(jù)清空愉豺,然后按照以下格式寫入?yún)?shù)篓吁。首先使用acl參數(shù)分別定義兩個(gè)變量名稱(china與american),當(dāng)下面需要匹配IP地址時(shí)只需寫入變量名稱即可蚪拦,這樣不僅容易閱讀識(shí)別杖剪,而且也利于修改維護(hù)。這里的難點(diǎn)是理解view參數(shù)的作用驰贷。它的作用是通過判斷用戶的IP地址是中國(guó)的還是美國(guó)的盛嘿,然后去分別加載不同的數(shù)據(jù)配置文件(linuxprobe.com.china或linuxprobe.com.american)。這樣括袒,當(dāng)把相應(yīng)的IP地址分別寫入到數(shù)據(jù)配置文件后次兆,即可實(shí)現(xiàn)DNS的分離解析功能。這樣一來(lái)锹锰,當(dāng)中國(guó)的用戶訪問linuxprobe.com域名時(shí)芥炭,便會(huì)按照l(shuí)inuxprobe.com.china數(shù)據(jù)配置文件內(nèi)的IP地址找到對(duì)應(yīng)的服務(wù)器。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones
1 acl "china" { 122.71.115.0/24; };
2 acl "american" { 106.185.25.0/24;};
3 view "china"{
4 match-clients { "china"; };
5 zone "linuxprobe.com" {
6 type master;
7 file "linuxprobe.com.china";
8 };
9 };
10 view "american" {
11 match-clients { "american"; };
12 zone "linuxprobe.com" {
13 type master;
14 file "linuxprobe.com.american";
15 };
16 };

第3步:建立數(shù)據(jù)配置文件恃慧。分別通過模板文件創(chuàng)建出兩份不同名稱的區(qū)域數(shù)據(jù)文件蚤认,其名稱應(yīng)與上面區(qū)域配置文件中的參數(shù)相對(duì)應(yīng)。

[root@linuxprobe ~]# cd /var/named
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china
[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american
[root@linuxprobe named]# vim linuxprobe.com.china
$TTL 1D #生存周期為1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授權(quán)信息開始: #DNS區(qū)域的地址 #域名管理員的郵箱(不要用@符號(hào))
0;serial #更新序列號(hào)
1D;refresh #更新時(shí)間
1H;retry #重試延時(shí)
1W;expire #失效時(shí)間
3H;)minimum #無(wú)效解析記錄的緩存時(shí)間
NS ns.linuxprobe.com. #域名服務(wù)器記錄
ns IN A 122.71.115.10 #地址記錄(ns.linuxprobe.com.)
www IN A 122.71.115.15 #地址記錄(www.linuxprobe.com.)
[root@linuxprobe named]# vim linuxprobe.com.american
$TTL 1D #生存周期為1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (
#授權(quán)信息開始: #DNS區(qū)域的地址 #域名管理員的郵箱(不要用@符號(hào))
0;serial #更新序列號(hào)
1D;refresh #更新時(shí)間
1H;retry #重試延時(shí)
1W;expire #失效時(shí)間
3H;)minimum #無(wú)效解析記錄的緩存時(shí)間
NS ns.linuxprobe.com. #域名服務(wù)器記錄
ns IN A 106.185.25.10 #地址記錄(ns.linuxprobe.com.)
www IN A 106.185.25.15 #地址記錄(www.linuxprobe.com.)

第4步:重新啟動(dòng)named服務(wù)程序糕伐,驗(yàn)證結(jié)果砰琢。將客戶端主機(jī)(Windows系統(tǒng)或Linux系統(tǒng)均可)的IP地址分別設(shè)置為122.71.115.1與106.185.25.1,將DNS地址分別設(shè)置為服務(wù)器主機(jī)的兩個(gè)IP地址良瞧。這樣陪汽,當(dāng)嘗試使用nslookup命令解析域名時(shí)就能清晰地看到解析結(jié)果,分別如圖13-10與圖13-11所示褥蚯。

第13章 使用Bind提供域名解析服務(wù)挚冤。第13章 使用Bind提供域名解析服務(wù)。

圖13-10 模擬中國(guó)用戶的域名解析操作

第13章 使用Bind提供域名解析服務(wù)赞庶。第13章 使用Bind提供域名解析服務(wù)训挡。

圖13-11 模擬美國(guó)用戶的域名解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澳骤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子澜薄,更是在濱河造成了極大的恐慌为肮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肤京,死亡現(xiàn)場(chǎng)離奇詭異颊艳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忘分,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門棋枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人妒峦,你說(shuō)我怎么就攤上這事重斑。” “怎么了肯骇?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵窥浪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我累盗,道長(zhǎng)寒矿,這世上最難降的妖魔是什么突琳? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任若债,我火速辦了婚禮,結(jié)果婚禮上拆融,老公的妹妹穿的比我還像新娘蠢琳。我一直安慰自己,他們只是感情好镜豹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布傲须。 她就那樣靜靜地躺著,像睡著了一般趟脂。 火紅的嫁衣襯著肌膚如雪泰讽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天昔期,我揣著相機(jī)與錄音已卸,去河邊找鬼。 笑死硼一,一個(gè)胖子當(dāng)著我的面吹牛累澡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播般贼,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼愧哟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奥吩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蕊梧,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霞赫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后望几,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绩脆,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年橄抹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了靴迫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡楼誓,死狀恐怖玉锌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疟羹,我是刑警寧澤主守,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站榄融,受9級(jí)特大地震影響参淫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜愧杯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一涎才、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧力九,春花似錦耍铜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抵乓,卻和暖如春伴挚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灾炭。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工茎芋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咆贬。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓败徊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親掏缎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子皱蹦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一煤杀、域名解析服務(wù) DNS 域名解析服務(wù)采用了類似目錄樹的層次結(jié)構(gòu)來(lái)記錄域名與 IP 地址之間的對(duì)應(yīng)關(guān)系,從而形成了...
    愛你忘了愛我自己閱讀 1,527評(píng)論 0 0
  • 域名(Domain Name)沪哺,是由一串用 點(diǎn) 分隔的名字 組成的 Internet 上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名...
    藍(lán)白七七閱讀 2,127評(píng)論 1 11
  • 文章首發(fā)于個(gè)人blog歡迎指正補(bǔ)充沈自,可聯(lián)系lionsom_lin@qq.com原文地址:《網(wǎng)絡(luò)是怎樣連接的》閱讀整...
    lionsom_lin閱讀 14,154評(píng)論 6 31
  • 日晚空如洗,飛鴻踏雪歸辜妓。 農(nóng)人相語(yǔ)散枯途,異客立余暉。 注:新韻
    幽小窗閱讀 396評(píng)論 88 56
  • 日期是數(shù)字代碼 寫著心情想法 和我想說(shuō)的話 心情斷斷續(xù)續(xù) 沒找落 想法零零散散 不成熟 要說(shuō)的話在嘴角逗留 那么輕...
    啦啦啦Lan啦閱讀 61評(píng)論 0 0