整個(gè)Internet大家庭中連接了數(shù)以億計(jì)的服務(wù)器,個(gè)人主機(jī),其中大部分的網(wǎng)站、郵件服務(wù)器都使用了域名形式的地址。很顯然這種地址形式要比使用IP地址更加直觀,且更容易被用戶記住。
在Windows搭建DNS服務(wù),可以參考博客:Windows Server 2016搭建DNS服務(wù)
如果想要搭建并管理好DNS服務(wù)器,那么必須了解的知識(shí)點(diǎn)有:
DNS系統(tǒng)在網(wǎng)絡(luò)中的作用就是維護(hù)一個(gè)地址數(shù)據(jù)庫(kù),其中記錄了各種主機(jī)域名和IP地址的對(duì)應(yīng)關(guān)系,以方便客戶程序提供正向和反向的地址查詢服務(wù),即:
正向解析:根據(jù)域名查找IP地址,即將指定的域名解析為相對(duì)應(yīng)的IP地址;
反向解析:根據(jù)IP地址查域名,即將指定的IP地址解析為相對(duì)應(yīng)的域名。
DNS的組成:
常見的頂級(jí)域名、國(guó)家域名:
DNS服務(wù)的工作原理:
根據(jù)所管理的區(qū)域地址數(shù)據(jù)的來源不同,DNS系統(tǒng)可以分為不同的類型,在同一臺(tái)DNS服務(wù)器中,相對(duì)于不同的區(qū)域來說,也擁有不同的身份,常見的幾種類型如下:
緩存域名服務(wù)器:只提供域名解析結(jié)果的緩存功能,目的在于提高查詢速度和效率,但是沒有自己控制的區(qū)域地址數(shù)據(jù)。構(gòu)建緩存域名服務(wù)器是,必須設(shè)置根域或指定其他DNS服務(wù)器作為解析來源;
主域名服務(wù)器:維護(hù)某一個(gè)特定DNS區(qū)域的地址數(shù)據(jù)庫(kù),對(duì)其中的解析記錄具有自主控制權(quán),是指定區(qū)域中唯一存在的權(quán)威服務(wù)器、官方服務(wù)器。構(gòu)建主域名服務(wù)器時(shí),需要自行建立所負(fù)責(zé)區(qū)域的地址數(shù)據(jù)文件;
從域名服務(wù)器:與主域名服務(wù)器提供完全相同的DNS解析服務(wù),通常用于DNS服務(wù)器的熱備份。對(duì)于客戶機(jī)來說,無(wú)論使用主域名服務(wù)器還是從域名服務(wù)器,查詢的結(jié)果都是一樣的。區(qū)別在于:從域名服務(wù)器提供的解析結(jié)果不是由自己決定的,而是來自于主域名服務(wù)器。構(gòu)建從域名服務(wù)器時(shí),需要指定主域名服務(wù)器的位置,以便服務(wù)器能自動(dòng)同步區(qū)域的地址數(shù)據(jù)庫(kù)。
DNS服務(wù)器的角色只是針對(duì)某一個(gè)特定的區(qū)域而言,比如:一個(gè)區(qū)域的主域名服務(wù)器可以同時(shí)是另一個(gè)區(qū)域的從域名服務(wù)器。
接下來詳細(xì)介紹如何在CentOS 7 中搭建DNS服務(wù):
搭建主域名服務(wù)器:
[root@localhost ~]# yum -y install bind* #通過yum的方式安裝bind服務(wù)
編寫主配置文件
[root@localhost ~]# vim /etc/named.conf #編寫bind服務(wù)的主配置文件 ………… #省略部分內(nèi)容 12 options { 13 listen-on port 53 { any; }; # 指定域名服務(wù)監(jiān)聽的網(wǎng)絡(luò)端口,默認(rèn)是本機(jī),不能對(duì)外提供服務(wù), #建議改為any ,表示任意主機(jī),也可以刪除; 14 listen-on-v6 port 53 { ::1; }; 15 directory "/var/named"; # 指定從/var/named目錄下讀取DNS數(shù)據(jù)文件; 16 dump-file "/var/named/data/cache_dump.db"; # 當(dāng)執(zhí)行導(dǎo)出命令時(shí)將DNS服務(wù)器的緩存數(shù)據(jù)存儲(chǔ)到指定的文件中; 17 statistics-file "/var/named/data/named_stats.txt"; # 指定named服務(wù)的統(tǒng)計(jì)文件, #當(dāng)執(zhí)行統(tǒng)計(jì)命令時(shí)會(huì)將內(nèi)存中的統(tǒng)計(jì)信息追加到該文件中; 18 memstatistics-file "/var/named/data/named_mem_stats.txt"; 19 allow-query { any; }; # 允許哪些客戶端訪問DNS服務(wù),默認(rèn)是本機(jī), #建議改為“any”,表示任意主機(jī),也可以刪除; ………… #省略部分內(nèi)容 56 zone "benet.com" in { 57 type master; #類型為主區(qū)域 58 file "benet.com.zone"; 59 }; # 添加正向解析數(shù)據(jù)文件的信息 ,服務(wù)器類型是主服務(wù)器, #文件名為“benet.com.zone” 60 zone "10.168.192.in-addr.arpa" in { 61 type master; 62 file "192.168.10.arpa"; 63 }; #編寫反向區(qū)域文件
區(qū)域類型:master(主區(qū)域);slave(輔助區(qū)域);hint(根區(qū)域)
編寫區(qū)域配置文件
[root@localhost ~]# cd /var/named [root@localhost named]# cp named.localhost benet.com.zone #復(fù)制原本正向區(qū)域的模板 [root@localhost named]# cp named.loopback 192.168.10.arpa #復(fù)制原本反向區(qū)域的模板 [root@localhost named]# vim benet.com.zone #編寫正向區(qū)域配置文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1.benet.com. ns1 IN A 192.168.10.1 www IN A 192.168.10.10 ftp IN CNAME www serial:序列號(hào)。可以供從服務(wù)器判斷何時(shí)獲取新數(shù)據(jù)的。 refresh:指定多長(zhǎng)時(shí)間從服務(wù)器要與主服務(wù)器進(jìn)行核對(duì), retry:如果從服務(wù)器試圖檢查主服務(wù)器的序列號(hào)時(shí), 主服務(wù)器沒有響應(yīng),則經(jīng)過這個(gè)時(shí)間后將重新進(jìn)行檢查 expire:將決定從服務(wù)器在沒有主服務(wù)器的情況下權(quán)威地持續(xù)提供域數(shù)據(jù)服務(wù)的時(shí)間長(zhǎng)短 minimum:高速緩存否定回答的存活時(shí)間
配置選項(xiàng)詳解:
[root@localhost named]# vim 192.168.10.arpa #編寫反向區(qū)域配置文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1.benet.com. 1 IN PTR ns1.benet.com. 10 IN PTR www.benet.com.
編寫完成后
[root@localhost named]# named-checkconf -z /etc/named.conf #檢查對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件 zone benet.com/IN: loaded serial 0 zone 10.168.192.in-addr.arpa/IN: loaded serial 0 zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 zone 0.in-addr.arpa/IN: loaded serial 0 [root@localhost named]# named-checkconf /etc/named.conf #檢查主區(qū)域配置文件 [root@localhost named]# named-checkzone benet.com benet.com.zone #檢查區(qū)域配置文件 zone benet.com/IN: loaded serial 0 OK [root@localhost named]# systemctl start named #啟動(dòng)DNS服務(wù) [root@localhost named]# nslookup > www.benet.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.benet.com Address: 192.168.10.10 > ns1.benet.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ns1.benet.com Address: 192.168.10.1
主域名服務(wù)器經(jīng)過測(cè)試沒問題!
搭建從域名服務(wù)器
[root@localhost ~]# yum -y install bind* #安裝bind服務(wù) [root@localhost ~]# vim /etc/named.conf #編寫主配置文件 ……………… #省略部分內(nèi)容 12 options { 13 listen-on port 53 { any; }; 14 listen-on-v6 port 53 { ::1; }; 15 directory "/var/named"; 16 dump-file "/var/named/data/cache_dump.db"; 17 statistics-file "/var/named/data/named_stats.txt"; 18 memstatistics-file "/var/named/data/named_mem_stats.txt"; 19 allow-query { any; }; 20 forwarders { 192.168.10.1; }; #轉(zhuǎn)發(fā)器,本機(jī)解析不了轉(zhuǎn)發(fā)到192.168.10.1 ……………… #省略部分內(nèi)容 57 zone "benet.com" in { 58 type slave; #區(qū)域類型為輔助區(qū)域 59 masters { 192.168.10.1; }; #主服務(wù)器為192.168.10.1 60 file "slaves/benet.com.zone"; #復(fù)制下來的文件保存到/var/named/slaves/目錄下 61 allow-transfer { 192.168.10.1; }; #允許從服務(wù)器上下載正向區(qū)域配置文件 62 }; 63 zone "10.168.192.in-addr.arpa" { 64 type slave; 65 masters { 192.168.10.1; }; 66 file "slaves/192.168.10.arpa"; 67 }; [root@localhost slaves]# named-checkconf -z /etc/named.conf #檢查named服務(wù)數(shù)據(jù)庫(kù)配置文件 zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 zone 0.in-addr.arpa/IN: loaded serial 0 [root@localhost /]# systemctl start named [root@localhost /]# nslookup > www.benet.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.benet.com Address: 192.168.10.10 > ns1.benet.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ns1.benet.com Address: 192.168.10.1 [root@localhost /]# ls /var/named/slaves/ benet.com.zone #從主域名服務(wù)器復(fù)制的正向區(qū)域文件
從域名服務(wù)器驗(yàn)證完成!
在Windows客戶機(jī)上如果出現(xiàn)錯(cuò)誤可使用命令“ipconfig /flushdns”刷新一下本地的DNS緩存!