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