建站服務(wù)器
最近和朋友討論起了當(dāng)時(shí)注冊(cè)的域名,又想起來(lái)了dns服務(wù)器,剛剛好當(dāng)時(shí)學(xué)習(xí)的時(shí)候也不是很精通,就趁著這個(gè)時(shí)間段再一次回顧了以下。讓我們一起看一下DNS服務(wù)器吧
玉泉街道網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。這篇文章的目錄結(jié)構(gòu)如下:
什么是 DNS 服務(wù)器? 什么時(shí)候要用 DNS 服務(wù)器 為什么要用 DNS 服務(wù)器? 誰(shuí)會(huì)用 DNS 服務(wù)器? 怎么使用 DNS 服務(wù)器?1.什么是 DNS 服務(wù)器?
DNS(Domain Name Server ,域名服務(wù)器)是將域名(Domain name)和對(duì)應(yīng)的IP地址(IP address)進(jìn)行轉(zhuǎn)換的服務(wù)器。那么什么又是域名尼?
域名:
通俗點(diǎn)說(shuō)就是每次上網(wǎng)的時(shí)候輸入的網(wǎng)址也可以理解為域名,而百度給的定義是域名是由一串用點(diǎn)分隔的名字組成的,通常包含組織名,而且始終包括兩到三個(gè)字母的后綴,以指明組織的類(lèi)型或該域所在的國(guó)家或地區(qū)。
因?yàn)槲覀冇洃浀脑颍F(xiàn)在當(dāng)我們要去上網(wǎng)的時(shí)候,總會(huì)記住幾個(gè)域名,然而并不會(huì)去記住一個(gè)個(gè)服務(wù)器對(duì)應(yīng)的IP。因此當(dāng)我們?cè)谟糜蛎L問(wèn)別人主機(jī)的時(shí)候,DNS 服務(wù)器就已經(jīng)默默的起到了作用,DNS 服務(wù)器會(huì)將我們輸入的域名一 一的轉(zhuǎn)換為對(duì)應(yīng)的IP然后再去訪問(wèn)別人的主機(jī)。
因此當(dāng)在一個(gè)企業(yè)的內(nèi)部,要想在企業(yè)內(nèi)部讓諸多個(gè)主機(jī)通過(guò)主機(jī)名訪問(wèn)彼此,就要構(gòu)建自己的 DNS 服務(wù)器了。
在剛剛開(kāi)始擁有網(wǎng)絡(luò)的時(shí)候,全球僅僅只有幾個(gè)大學(xué)的實(shí)驗(yàn)室加入網(wǎng)絡(luò),因此大家可以憑借記住很少的IP地址來(lái)進(jìn)行彼此之間的聯(lián)系,并且在當(dāng)時(shí)的每個(gè)主機(jī)上都會(huì)擁有一個(gè)為hosts的文件用來(lái)本地解析,如今依舊擁有這個(gè)文件來(lái)進(jìn)行本地的域名解析。在這兩個(gè)系統(tǒng)下其文件所在的地方。
linux系統(tǒng):/etc/hosts
Windows:%windir%\\System32\\drivers\\etc\\hosts
但是隨著信息化的發(fā)展,越來(lái)越多的用戶(hù)加入到網(wǎng)絡(luò)中,大家的記憶并不能全部都記住彼此之間的ip地址,并且如果繼續(xù)使用原來(lái)的辦法(使用hosts文件)的話,hosts文件的條目越來(lái)越多,每一次的查詢(xún)?cè)絹?lái)越繁瑣,因此就出現(xiàn)了一個(gè)組織 IANA(The Internet Assigned Numbers Authority,互聯(lián)網(wǎng)數(shù)字分配機(jī)構(gòu)),IANA 來(lái)保存每一個(gè)用戶(hù)的主機(jī)名與IP條目的關(guān)系。因此大家就不用再紛紛寫(xiě)入自己的hosts文件,僅僅需要定下一個(gè)計(jì)劃任務(wù)(crontab)讓其隔一段的時(shí)間就從 IANA 的服務(wù)器去下載hosts文件到本地,雖然這樣擁有一定的可行性,但是互聯(lián)網(wǎng)的發(fā)展是爆炸性,用戶(hù)的增長(zhǎng)是幾何的倍數(shù)增加,因此當(dāng)用戶(hù)數(shù)量再一次增加的時(shí)候,就是 IANA 的策略也已經(jīng)行不通了,因此就開(kāi)發(fā)出了 BIND(Berkeley Internet Name Domain,伯克利Internet名字域)使用BIND軟件來(lái)構(gòu)建域名服務(wù)器。而其構(gòu)建的方法和Linux的目錄結(jié)構(gòu)非常的相似,使用一種倒置的樹(shù)狀結(jié)構(gòu),如下圖:
當(dāng)然頂級(jí)域還有很多我就不一 一列舉了,因此現(xiàn)在使用 BIND 就對(duì)每一個(gè)的域名劃分到了不同的分支下面了,這樣不僅減輕了根服務(wù)器的壓力而且非常的容易尋找并且管理,并且根(.)依舊會(huì)能夠管理到每一個(gè)域名,但是其僅僅管理一級(jí)域就可以了,這樣可以極大的減輕根服務(wù)器的壓力。然后通過(guò)不斷的逐個(gè)查找就能夠找尋到我們所需要的信息。并且 IANA 也不再提供原本的 hosts文件了,變?yōu)橐粋€(gè)全球范圍的域名供應(yīng)商,管理 DNS 域名根和.int,.arpa等資源。相關(guān)的13個(gè)根服務(wù)器,1個(gè)為主根服務(wù)器在美國(guó)。其余12個(gè)均為輔根服務(wù)器,其中9個(gè)在美國(guó),歐洲2個(gè),位于英國(guó)和瑞典,亞洲1個(gè)位于日本。
4.誰(shuí)會(huì)用 DNS 服務(wù)器?對(duì)于這個(gè)問(wèn)題,很不好回答,但是我覺(jué)得如果大家感興趣,或者想要了解的都可以去接觸 DNS 服務(wù)器。
要開(kāi)始真正深入了解并配置 DNS 服務(wù)器了。
5.如何使用 DNS 服務(wù)器?對(duì)于如何使用 DNS服務(wù)器來(lái)說(shuō)是一個(gè)比較復(fù)雜的問(wèn)題,因此我們通過(guò)下面一些步驟來(lái)慢慢進(jìn)一步的了解DNS服務(wù)器
首先我們需要知道,DNS 服務(wù)器所使用的端口是(53/UDP,53/TCP;)使用BIND軟件來(lái)進(jìn)行使用的并且是在應(yīng)用層的一個(gè)協(xié)議,使用 C/S 架構(gòu)。并且當(dāng)我們安裝 BIND 之后就能通過(guò) named 服務(wù)來(lái)進(jìn)行啟動(dòng) DNS 服務(wù)了,當(dāng)然對(duì)于真正的了解到 DNS 服務(wù)器還是需要首先知道一些名詞的,隨后遇到的再慢慢說(shuō)起來(lái)。
FQDN:Fully Qualified Domain Name,也就是上文所說(shuō)的域名。
正向解析:FQDN ==> IP 表示通過(guò)DNS服務(wù)器FQDN解析為IP的過(guò)程
反向解析:IP==>FQDN 表示通過(guò)DNS服務(wù)器由IP查詢(xún)到FQDN
domain:邏輯概念,域
zone:物理概念,區(qū)域
DNS的服務(wù)器類(lèi)型:1主 DNS服務(wù)器(master)2輔助DNS服務(wù)器(slave)3緩存服務(wù)器4轉(zhuǎn)發(fā)器(forward)
下面這個(gè)圖能夠幫助我們知道什么是 domain 與 zone。
可以看到每一個(gè)zone下面都會(huì)有很多的資源,當(dāng)我們?cè)L問(wèn)其下面的資源時(shí),其對(duì)應(yīng)的主機(jī)就給我們回答,并且每個(gè)區(qū)都有自己的授權(quán)服務(wù)器,當(dāng)我們要在DNS服務(wù)器查詢(xún)FQDN的時(shí)候會(huì)給我們返回兩種類(lèi)型的答案,即權(quán)威答案(Authority Answer,AA)和非權(quán)威答案。
一、安裝 BIND 軟件
BIND軟件可以運(yùn)行在大部分的Linux主機(jī)上,并且在RHEL6.5及以后,在系統(tǒng)的光盤(pán)自帶了BIND服務(wù)的安裝文件。
而我們首先使用簡(jiǎn)單的方法進(jìn)行安裝(yum),首先查看與 bind相關(guān)的軟件包。
$ yum list | grep bind
一些主要軟件的作用如下:
bind :提供了 DNS 服務(wù)的主要程序及相關(guān)文件
bind-libs :提供了bind、bind-utils需要使用的函數(shù)庫(kù)
bind-utils :提供了對(duì) DNS 服務(wù)器的測(cè)試工具,如 nslookup等
接下來(lái)我們就安裝bind
$ yum install -y bind
二、配置 BIND 軟件
bind軟件的安裝之后會(huì)出現(xiàn)兩個(gè)很重要的路徑,一個(gè)是主配置文件/etc/named.conf 另一個(gè)是工作目錄/var/named ,我們分別來(lái)進(jìn)行一 一探索。
1.簡(jiǎn)單DNS服務(wù)器的主要配置
這是用于啟動(dòng) named 服務(wù)的主要配置文件,對(duì)于簡(jiǎn)單的DNS服務(wù)器來(lái)講其中主要分為兩個(gè)部分的定義,全局定義和區(qū)域定義。
對(duì)于全局定義的段使用如下的定義。
options {
directory /var/named;
};
注:named.conf 配置文件要求每一行的結(jié)束都需要一個(gè)分號(hào)結(jié)束
配置的含義就是將每個(gè)區(qū)域的資源記錄(Resource Record,簡(jiǎn)稱(chēng)RR)文件放在了/var/named/的目錄之下。
那么RR到底什么東西尼?
懵。。。,先記住向下看看
三.配置文件
在/etc/named.conf配置文件中除了剛剛定義的全局定義之外,就是各個(gè)區(qū)域(zone)的定義了。
通常對(duì)于每一個(gè)區(qū)域(zone)的簡(jiǎn)單定義就是如下的格式。
zone ZONE_NAME IN {
type master|slave|hint|forward;
file ZONE_NAME.zone
};
注:type 就表明了區(qū)域的 DNS服務(wù)器類(lèi)型。
file就是將這個(gè)區(qū)域的RR放在什么地方,相對(duì)路徑。
比較特別的是下面這個(gè)區(qū)域的定義,表示這是一個(gè)根域的dns服務(wù)器。
zone . IN {
type hint;
file named.ca
};
當(dāng)然,DNS的配置文件也支持使用acl來(lái)自定義,訪問(wèn)控制列表。并且默認(rèn)就存在這樣四個(gè)列表,none,any(任何主機(jī)),local(本機(jī)),以及l(fā)ocalnet(本地網(wǎng)絡(luò))。定義就如下:
acl acl_name{
statement;
};
如果安裝時(shí)候在/var/named/目錄下并沒(méi)有named.ca 的文件話可以使用dig 命令來(lái)生成named.ca文件,需要能夠訪問(wèn)互聯(lián)網(wǎng),否則查詢(xún)不到根服務(wù)器。
[root@rs1 named]# dig -t NS . >/var/naemd/named.ca
首先構(gòu)建一個(gè)最簡(jiǎn)單的 DNS服務(wù)器,也就是緩存 DNS 服務(wù)器。任何一個(gè)復(fù)雜的 DNS 服務(wù)器都是由簡(jiǎn)單的緩存服務(wù)器一步步變難的,覺(jué)得學(xué)習(xí)也是這個(gè)道理哈。
緩存 DNS 服務(wù)器:不負(fù)責(zé)解析任何區(qū)域(除了(本機(jī))localhost)
/etc/named.conf 配置如下
options {
directory /var/named;
};
//正向解析本機(jī)
zone localhost IN{
type master;
file named.localhost;
};
//反向解析本機(jī)
zone 0.0.127.in-addr.arpa IN{
type master;
file named.local;
};
反向解析比正相解析要復(fù)雜許多,區(qū)域名是比較特殊,為網(wǎng)斷名+in-addr.arpa
接下來(lái)的就是上面都提到過(guò)的各個(gè)區(qū)域的 RR 文件了,在里面會(huì)有下面幾個(gè)特殊的定義 。
TTL:Time-To-Live 每一個(gè)記錄的生存時(shí)間
SOA:Start Of Authority,起始授權(quán)記錄
A:Address IPV4的地址記錄
AAAA:IPV6的地址記錄
PTR:Pointer反向解析記錄,一般不能和A記錄出現(xiàn)在一起
NS:Name Server dns服務(wù)器的定義
MX:Mail eXchange 郵件的定義
CNAME:規(guī)范名字
對(duì)每一個(gè)資源記錄文件來(lái)說(shuō),首先定義的都應(yīng)該是這樣的一行
ZONE_NAME [TTL] IN SOA localhost.(ZONE_NAME的 DNS服務(wù)器名) admin.localhost.(管理員的郵箱)
(
2018091501 ; (版本號(hào))serial
1H ; (刷新時(shí)間)refresh
5M ; (重試時(shí)間,應(yīng)當(dāng)小于刷新時(shí)間)retry
1D ; (超時(shí)時(shí)間,設(shè)置嘗試幾天之后認(rèn)為主 DNS 服務(wù)器宕機(jī)了)expire
1H ; (否定回答,對(duì)方緩存多長(zhǎng)時(shí)間)minimum
)
如果一開(kāi)始在/var/named/下有一些文件,則可以看到有以下相應(yīng)的符號(hào)
$TTL 600 :設(shè)置全局的TTL時(shí)間,定義后可以不再使用TTL
$ORIGIN :默認(rèn)補(bǔ)充的字段,如果在一些地方使用的并非完整的FQDN則在后面補(bǔ)充上ORIGIN定義的字段,默認(rèn)就是/etc/named.conf中定義的區(qū)域名字(ZONE_NAME)
@:本文件在/etc/named.conf 配置文件中定義的區(qū)域
因此/var/named/named.localhost 的定義如下:
$TTL 600
@ IN SOA localhost. admin.localhost. (
20180913
1H
5M
1D
1H )
IN NS localhost.
localhost. IN A 127.0.0.1
對(duì)于每一行的定義如果和上一行的第一列相同,則可以省略
相應(yīng)的反向解析的配置文件
$TTL 600
@ IN SOA localhost. admin.localhost. (
20180913
1H
5M
1D
1H )
IN NS localhost.
1 IN PTR localhost.
注:1 表示的主機(jī)名,如上面我們所說(shuō)的如果沒(méi)有寫(xiě)全就會(huì)默認(rèn)補(bǔ)充上ORIGIN,所以其的全部就是1.0.0.127.in-addr.arpa
至此我們就構(gòu)建了一個(gè)最簡(jiǎn)單的緩存 DNS 服務(wù)器??梢允褂胋ind帶有的命令來(lái)查看配置文件是否有錯(cuò)。
named-checkconf
named-checkzone zone zone_file
然后我們使用 dig 命令來(lái)測(cè)試一下
@后面指定為我本地的服務(wù)器ip,因此對(duì)于不同的host 指定不同的ip,其他詳細(xì)的介紹查詢(xún)幫助文檔。
接下來(lái)我們就討論一個(gè)較為復(fù)雜的問(wèn)題,一個(gè) FQDN==> IP 到底發(fā)生了什么?
迭代查詢(xún):和普通的迭代算法一樣,就是一次次不斷的去請(qǐng)求。
遞歸查詢(xún):僅發(fā)出一次請(qǐng)求,一次應(yīng)答
對(duì)于發(fā)起查詢(xún)請(qǐng)求的客戶(hù)端,僅觸發(fā)了一次查詢(xún)并獲得了一次結(jié)果這就是遞歸查詢(xún),而對(duì)于當(dāng)前域內(nèi)的dns服務(wù)器,通過(guò)一次次不斷的迭代查找才獲得結(jié)果,因此就是迭代查詢(xún)。
這樣是一個(gè)能夠查詢(xún)到的一個(gè)過(guò)程,如果dns查詢(xún)不到我們要查詢(xún)的記錄會(huì)發(fā)什么?
對(duì)于這樣,就在SOA記錄的minimum給出了解釋?zhuān)缥覀儾樵?xún)ftp.a.com,但是當(dāng)dns再一次從根查詢(xún)到a.com的域內(nèi)發(fā)現(xiàn)并沒(méi)有ftp.a.com的這個(gè)子域,因此a.com.域就會(huì)給dns服務(wù)器一個(gè)否定回答,然后再由dns服務(wù)器將否定回答給客戶(hù)端。
以下就是一個(gè)dns服務(wù)接受到請(qǐng)求然后進(jìn)行查詢(xún)的主要流程。
dns 服務(wù)器查詢(xún)的詳細(xì)介紹
1.如果查詢(xún)請(qǐng)求是本機(jī)所負(fù)責(zé)的區(qū)域中的數(shù)據(jù)的話,要通過(guò)查詢(xún)區(qū)域數(shù)據(jù)文件返回結(jié)果
2.如果查詢(xún)請(qǐng)求不是本機(jī)所負(fù)責(zé)區(qū)域中的數(shù)據(jù)的話,就查詢(xún)緩存
3.如果緩存中沒(méi)有答案,則向根發(fā)起查詢(xún)請(qǐng)求,并不斷迭代
那么讓我們更深一步的去探索dns的功能吧
在上面我們搭建了一個(gè)簡(jiǎn)單的 DNS緩存服務(wù)器,現(xiàn)在讓我們來(lái)將他變成一個(gè)主DNS服務(wù)器,步驟很簡(jiǎn)單,
1.將主配置文件中,加入我們的正向解析域名以及反向解析域名。
2.在工作目錄下,添加相應(yīng)的數(shù)據(jù)文件。
3.重啟服務(wù),重新載入也可以的。
是不是很簡(jiǎn)單,首先是主配置文件,我的dns服務(wù)器的網(wǎng)絡(luò)是192.168.159.143.
zone athlete.run IN {
type master;
file athlete.run.zone;
};
zone 159.168.192.in-addr.arpa IN {
type master;
file athlete.reverse;
};
然后是工作目錄文件,我定義的是athlete.run.zone和athlete.reverse所以編輯兩個(gè)文件。
這個(gè)是athlete.run.zone文件
$TTL 60
@ IN SOA ns1 admin (
2018091401
1M
5S
1H
1D )
IN NS ns1
IN NS ns2
IN MX 10 mail
ns1 IN A 192.168.159.143
ns2 IN A 192.168.159.146
www IN A 192.168.159.143
mail IN A 192.168.159.143
剩下這個(gè)就是athlete.reverse文件了
$TTL 600
@ IN SOA ns1.athlete.run admin.athlete.run (
2018091403
1D
5M
7D
1D )
IN NS ns1.athlete.run.
143 IN PTR ns1.athlete.run.
143 IN PTR www.athlete.run.
最后
# systemctl reload named 或者 # systemctl restart named
最后用dig工具測(cè)試一下就可以了,當(dāng)然我這兩個(gè)文件可能寫(xiě)的比較簡(jiǎn)單,但是能使用的。
介紹了這么多 DNS的配置,讓我們換個(gè)話題發(fā)現(xiàn)一下。
如果是通過(guò)YUM安裝bind的話,會(huì)默認(rèn)給你安裝另一個(gè)工具叫做:rndc。
rndc:remote name domain controller,遠(yuǎn)程名稱(chēng)域控制器
通過(guò)名字就可以了解到,這個(gè)工作的特性了,所以為了安全使用的是tcp的953端口953/TCP,接下來(lái)讓我們使用這個(gè)工件吧。
首先rndc的使用也是有配置文件的,在哪里尼?
# rpm -ql bind | grep rndc
但是,一開(kāi)始/etc/rndc.conf這個(gè)目錄的文件是不存在,所以需要我們手動(dòng)通過(guò)rndc 命令來(lái)實(shí)現(xiàn)
值得一提的就是如果兩文件都存在的話,每次執(zhí)行命令就會(huì)給你警告,挺煩的,所以自己把握。
需要一提的是,這個(gè)文件里面的后幾行是需要拷貝的/etc/named.conf中的,因此,相應(yīng)的 vim 操作自己查詢(xún)一下吧。如果一切都完成的話,就可以通過(guò)一下命令來(lái)重新讀取了,當(dāng)然也可以重啟,但是在大型工作中,服務(wù)器某個(gè)應(yīng)用重啟會(huì)造成太多的損失,因此就需要我們通過(guò)重讀配置文件來(lái)重新應(yīng)用。
# rndc reload
出現(xiàn)這個(gè)標(biāo)志就是成功了,如果失敗了,那么就詳細(xì)的查看日志文件查看把!
# cat /var/log/message
對(duì)于rndc的其他主要使用的命令,我也總結(jié)在下面:
stop :停止 DNS服務(wù)器
reload:重新載入配置文件和區(qū)域文件
reload zone:重新載入某區(qū)域文件
reconfig:重新載入配置文件和發(fā)生過(guò)更新的區(qū)域文件
status:查看dns的詳細(xì)情況
querylog:使用查詢(xún)?nèi)罩荆ú煌扑]使用)
flush:清空緩存
還有一些其他使用幫助文檔,查看把。
到這里對(duì)一個(gè)DNS服務(wù)器應(yīng)該就有了一個(gè)中級(jí)的認(rèn)識(shí)了,接下了討論就是我們的更深一步的話題了。
子域授權(quán),我們可以通過(guò)自己來(lái)申請(qǐng)一個(gè)子域,例如 a.org 那么對(duì)這個(gè)子域來(lái)說(shuō)我們可以添加至多127個(gè)子域,也就是說(shuō)這個(gè)樹(shù)的深度最多到127層。而在每一個(gè)不同深層次的域,其的授權(quán)都是在上一級(jí)子域中授權(quán)的。比如上面圖片的例子,d.org 的子域www.d.org和ftp.d.org分別就是d.org的子域,并且www.d.org 子域的dns服務(wù)器授權(quán)是由d.org進(jìn)行。 在下一步的話就是edu.www.d.org 也可以使www.d.org授權(quán)的子域。 相應(yīng)授權(quán)的子域的dns配置文件就是在子域自己的區(qū)域中定義。
轉(zhuǎn)發(fā) DNS服務(wù)器
這個(gè)的理解也比較簡(jiǎn)單,就是在主配置文件中加入 forwarders { IP; };,比較特殊的就是分號(hào)的左右兩邊均需要空格,分號(hào)內(nèi)可以寫(xiě)多項(xiàng),不過(guò)需要分號(hào)隔開(kāi)。這樣就能實(shí)現(xiàn)在本地的查詢(xún)請(qǐng)求,本機(jī)會(huì)轉(zhuǎn)發(fā)至指定IP的DNS服務(wù)器去查詢(xún)。值得一提的就是對(duì)于轉(zhuǎn)發(fā)也是有類(lèi)別的。
first:如果DNS1去找DNS2請(qǐng)求解析,DNS2并未響應(yīng),則DNS1自己去解析
only:如果DNS1去找DNS2請(qǐng)求解析,DNS2未響應(yīng),則無(wú)查詢(xún)結(jié)果(希望全給了別人。。。)
所以我們定義轉(zhuǎn)發(fā)的話再加入一行轉(zhuǎn)發(fā)類(lèi)型,結(jié)果就是這樣,就能實(shí)現(xiàn)轉(zhuǎn)發(fā)。
forward first|only;
forwarders { IP };
當(dāng)然如果放在全局option段就是全局轉(zhuǎn)發(fā),特定的區(qū)域就是在查詢(xún)到這個(gè)區(qū)域的時(shí)候再轉(zhuǎn)發(fā)。
主從DNS服務(wù)器
對(duì)于每一個(gè)時(shí)常在線服務(wù)器來(lái)說(shuō),都應(yīng)該做出相應(yīng)的冗余,以免突然時(shí)刻主服務(wù)器宕機(jī)了,或者是數(shù)據(jù)丟失了,但是DNS服務(wù)器比較奇特的就是,當(dāng)主DNS服務(wù)器宕機(jī)之后,輔助的DNS服務(wù)器多次嘗試重連主DNS服務(wù)器如果沒(méi)有響應(yīng)的話,從DNS服務(wù)器會(huì)跟著主DNS服務(wù)器一起宕機(jī)。(雙宿雙飛。。。)
因此我們就要做好輔助的DNS服務(wù)器時(shí)刻保存主DNS服務(wù)器的數(shù)據(jù)文件,以免主DNS服務(wù)器宕機(jī)造成數(shù)據(jù)丟失。
因此說(shuō)到傳送,對(duì)于DNS服務(wù)器來(lái)說(shuō)有著兩種區(qū)域傳送:
完全增量傳送:axfr 一開(kāi)始進(jìn)行傳送的文件
增量傳送:ixfr 當(dāng)從服務(wù)器有了區(qū)域傳送文件后,以后的傳送都將是增量傳送
因此我們可以使用dig命令來(lái)查看我定義的區(qū)域的信息
可以看到這么多比較重要的信息,肯定不能白白的暴露給其他人,因此我們只能給特定的主機(jī)進(jìn)行區(qū)域傳送,這樣就需要在主配置文件中加入
allow-transfer { IP; };
要定義一個(gè)主從的DNS,主的服務(wù)器就是剛剛我們一直使用,從服務(wù)器的配置很簡(jiǎn)單,就另外啟動(dòng)一臺(tái)電腦或虛擬機(jī),然后使用yum安裝bind,并在配置文件中增加這樣一個(gè)區(qū)域。
zone athlete.run IN {
type slave;
masters { IP; };
file slaves/athlete.run.zone;
當(dāng)然slaves是安裝bind的時(shí)候自動(dòng)給我們創(chuàng)建的,因此我們可以它,當(dāng)然也可以自己定義地方,不過(guò)需要注意的是,DNS服務(wù)器啟動(dòng)的進(jìn)程屬主屬組均是named所以我們創(chuàng)建的文件也應(yīng)該均是named并且權(quán)限為640。對(duì)于這樣的文件可以一開(kāi)始不存在,然后啟動(dòng)從服務(wù)器,就可以看到相應(yīng)的文件生成。當(dāng)然在我做實(shí)驗(yàn)的時(shí)候,遇到了好多次這樣的現(xiàn)象,從主服務(wù)器傳送來(lái)的文件在從服務(wù)器看到的格式是data,然而其本身是一個(gè)ASCII TEXT的文件,所以我們就需要在從服務(wù)器的主配置文件中加入這樣一個(gè)定義
masterfile-format text;
這樣就一切完成了,當(dāng)我們更改了主DNS服務(wù)器的數(shù)據(jù)文件,并增加了版本號(hào)之后,主DNS服務(wù)器就會(huì)主動(dòng)的提醒從DNS服務(wù)器來(lái)更新文件。當(dāng)然這樣還是需要一些額外配置的。
主從同步:
主服務(wù)器:授權(quán)允許同步,有從DNS服務(wù)器的NS記錄,并且授權(quán)允許區(qū)域傳送
從服務(wù)器:定義區(qū)域
這樣就能完成主從復(fù)制了。
最后一個(gè)也就是DNS服務(wù)器至今最流行的一個(gè)應(yīng)用,CDN
CDN:Content Delivery Network ,內(nèi)容分發(fā)網(wǎng)絡(luò)
簡(jiǎn)單的說(shuō)CDN就是將各個(gè)大型的域名進(jìn)行解析到不同的IP,使不同的人來(lái)訪問(wèn)就進(jìn)入到不同的網(wǎng)段,但是網(wǎng)頁(yè)的頁(yè)面卻完全是一樣的
就像這樣,本來(lái)是一個(gè)DNS服務(wù)器,但是強(qiáng)行將其拆分成為兩個(gè)不同的DNS服務(wù)器域,左邊的人訪問(wèn)這個(gè)DNS服務(wù)器,會(huì)根據(jù)一些判斷然后讓其訪問(wèn)左邊的DNS服務(wù)器,而右邊的人是相同的,因此這也能夠叫做智能DNS,也稱(chēng)之為DNS的腦裂。這樣到底有什么用尼?
這個(gè)圖就介紹了,當(dāng)不同區(qū)域的用戶(hù)去請(qǐng)求同一個(gè)頁(yè)面的時(shí)候,DNS服務(wù)器就會(huì)根據(jù)客戶(hù)端的地理位置進(jìn)行檢測(cè),然后將其本地的數(shù)據(jù)文件存放的IP地址返回,這樣就減少了訪問(wèn)延遲,并且相當(dāng)與將數(shù)據(jù)推送到了每一個(gè)互聯(lián)網(wǎng)用戶(hù)的家門(mén)口。
介紹了這么多,那么到底怎么定義不同的區(qū)域尼?
其實(shí)定義很簡(jiǎn)單,就是除了全局段之外,再使用view來(lái)定義每一個(gè)視圖。
view VIEW_NAEM {
match-clients {I網(wǎng)段/掩碼;};
//一些區(qū)域的定義
}
那么匹配到的客戶(hù)端就會(huì)進(jìn)入到相應(yīng)的視圖之中進(jìn)行解析。
使用了視圖也有需要注意的地方:
1多個(gè)view內(nèi)可能需要對(duì)同一個(gè)區(qū)域進(jìn)行解析,但使用不同的區(qū)域解析庫(kù)文件。
2.一旦使用了視圖,所有的zone都只能定義在view中
3.僅有必要在匹配到允許遞歸請(qǐng)求的客戶(hù)端所在view中定義根區(qū)域
4.客戶(hù)端請(qǐng)求到達(dá)后,自上而下檢查每個(gè)view所服務(wù)的客戶(hù)端列表
最后的最后 - -,這其實(shí)和一般使用的DNS作用不大,但是還是有一些相關(guān)關(guān)系的,編譯安裝BIND
首先就去bind的官網(wǎng)下載bind的軟件包
將其解壓到我們本地,然后進(jìn)入和普通的應(yīng)用軟件一樣,configure make && make install
主要是我們手動(dòng)安裝的話什么都不會(huì)給我們提供,遠(yuǎn)遠(yuǎn)沒(méi)有yum簡(jiǎn)潔,但是可以使用自己的定制軟件,主要需要我們做到以下這些步驟
1.修改PATH環(huán)境變量,輸出二進(jìn)制程序的搜索路徑新路徑
2.導(dǎo)出庫(kù)文件搜索路徑
3.導(dǎo)出頭文件搜索路徑
4.導(dǎo)出幫助文件手冊(cè)搜索路徑
5.創(chuàng)建配置文件
到此我們終于聊完了DNS服務(wù)器相關(guān)的東西,不過(guò)還是相信自己知道的僅僅是一點(diǎn)點(diǎn),望自己能夠了解到更多的知識(shí)。
不忘初心,砥礪前行。