基礎認知篇
DNS服務的概述
DNS是Domain Name System 的縮寫,即域名系統。DNS服務主要功能是將域名轉換爲相應的IP地址,提供DNS服務的系統就是DNS服務器。形如它能夠把www.baidu.com這樣的域名轉換爲61.135.169.125這樣的IP地址;沒有DNS,瀏覽baidu.com這個網站時,就必須用61.135.169.125這麼難記的數字來訪問。
DNS服務器可以分爲3種,即主域名服務器(Master DNS)、輔助域名服務器(Slave DNS)、緩存服務器。
uMaster DNS:本身提供DNS 服務,並且本身含有區域數據文件。
uSlave DNS:和Master一起提供DNS服務,當Master服務器上的配置信息修改的時候,會同步更新到Slave服務器上
u緩存服務器:沒有自己的區域數據文件,只是幫助客戶端向外部DNS請求查詢,然後將查詢的結果保存到它的緩存中。
在linux系統下DNS服務的功能是通過bind軟件實現的,幾乎每個linux發行版都自帶了這個DNS服務軟件。下面將具體講述DNS服務的安裝、配置和使用。
服務器搭建篇
第一部分:主DNS服務的搭建實現(包含知識點闡述)
環境介紹:CentOS6.4-x86_64
bind版本:bind 9.8.2-0.17.rc1.el6
一.安裝bind軟件:
CentOS系統下安裝bind時,一般都需要同時安裝bind-utils、bind-chroot、ypbind、bind-libs和caching-nameserver幾個支持bind的軟件包。
注:bind-chroot:安裝上這個包之後讓named進程有限的活動在/var/named/chroot/中防止******導致服務器的崩潰。這裏就不安裝了,因爲安裝之後除了路徑改變之後其他均不變。所以爲了更好的熟悉過程就暫時不裝了。
上面的幾個軟件包都可以從系統光盤中查找,可以通過指向yum源進行安裝:
[root@localhost ~]#yum install bind
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 查看安裝軟件生成的配置文件 [root@localhost ~] # rpm -qc bind /etc/logrotate .d /named /etc/named .conf #主配置文件 /etc/named .iscdlv.key /etc/named .rfc1912.zones #事先定義好的區域文件 /etc/named .root.key #實現事務簽名的密鑰文件 /etc/rndc .conf /etc/rndc .key /etc/sysconfig/named /var/named/named .ca /var/named/named .empty /var/named/named .localhost /var/named/named .loopback |
二.配置DNS服務
l 準備工作:
dig(域信息搜索器)命令是個用於詢問 DNS 域名服務器的靈活的工具。他執行 DNS 搜索,顯示從受請求的域名服務器返回的答覆。多數 DNS 管理員利用 dig 作爲DNS 問題的故障診斷,因爲他靈活性好、易用、輸出清楚。雖然通常情況下 dig 使用命令行參數,但他也能夠按批處理模式從文檔讀取搜索請求。不同於早期版本,dig 的 BIND9 實現允許從命令行發出多個查詢。除非被告知請求特定域名服務器,dig 將嘗試 /etc/resolv.conf 中列舉的任何服務器。當未指定任何命令行參數或選項時,dig 將對“.”(根)執行 NS 查詢。
dig命令格式:
dig –t 資源記錄類型名稱@server-ip |
dig –x IP @server-ip 反向解析 |
dig –t axfr zone 驗證完全區域傳送 |
dig –t ixfr zone 驗證增量區域傳輸(通常需要指定序列號) |
l 配置工作:
主配置文件:named.conf,主要作用是定義區域,定義各區域的全局配置,定義視圖,定義日誌,注意每個完整語句都要使用分號結尾,否則視爲語法錯誤。
bind安裝完畢之後,主程序目錄默認爲/var/named。
1).named.conf文件詳解
1 2 3 4 5 6 7 8 | [root@localhost ~] # vim /etc/named.conf // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind * /sample/ for example named configuration files.
在named.conf配置文件中主要使用” // ”進行註釋信息,還可以使用/*、*/將多行註釋 |
1 2 3 4 5 6 7 8 9 | options {
listen-on port 53 { 127.0.0.1; }; #由於這裏監聽的地址是本機所以啓動之後只會本機當服務器端本機當客戶端進行通信;所以要改成外部地址或註釋不要。
listen-on-v6 port 53 { ::1; }; #這裏是IPV6的監聽地址也可註釋
directory "/var/named" ; #定義工作目錄的,就是區域文件的存放路徑,一般指定相對路徑都是相對於這個文件路徑的。
dump- file "/var/named/data/cache_dump.db" ;
statistics- file "/var/named/data/named_stats.txt" ;
memstatistics- file "/var/named/data/named_mem_stats.txt" ;
allow-query { localhost; }; #DNS定義完成之後允許誰來訪問,這裏定義的爲只允許本地查詢,所以可以註釋不要。
#這是定義全局選項的,定義之後對所有區域都生效哦。 |
1 2 3 4 5 6 | logging {
channel default_debug {
file "data/named.run" ;
severity dynamic;
};
#定義日誌選項的 |
1 2 3 4 5 | zone "." IN {
type hint;
file "named.ca" ; };
#定義區域文件的 |
1 2 3 | include "/etc/named.rfc1912.zones" ; include "/etc/named.root.key" ;
#包含其他文件,意思就是可以將這些文件讀取進來 |
2).定義本地區域文件解析
首先更改/etc/named.rfc1912.zones主區域配置文件,在文件尾部新增下面一段內容:
1 2 3 4 5 | zone "magedu.com" IN {
type master;
file "magedu.com.zone" ; #定義的是相對路徑
allow-update { none; }; }; |
上面這段設置是用zone關鍵字來定義的一個正向區域,對應的域名爲magedu.com。在這裏type類型有三種,他們分別爲master、slave、hint,含義如下:
master:表示定義的主域名服務器
slave:表示定義的是輔助域名服務器
hint:表示是互聯網中的根域名服務器
file用來指定存放DNS記錄的文件(一般都是區域名稱.zone),allow-update定義是否允許客戶主機或服務器自行更新DNS記錄,上面指定的這個正向區域不允許更新DNS記錄。
1 2 3 4 5 | zone "18.16.172.in-addr.arpa" IN {
type master;
file "172.16.18.zone" ;
};
#這段設置是定義一個IP爲172.16.18.*的反向區域 |
3).定義區域數據文件:
[root@localhost ~]# cd /var/named/ #切換到區域文件存放目錄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@localhost named] # vim magedu.com.zone #編輯正向區域文件 $TTL 86400 #一天的時間秒鐘計算,看你的需求你需要多少寫多少 @ IN SOA dns.magedu.com. admin.magedu.com. (
2013081401
2H
10M
7D
6H )
IN NS dns #若不寫全會自動同步名稱,若不寫全不能以”.”結尾
IN MX 10 mail dns IN A 172.16.18.20 mail IN A 172.16.18.2 www IN A 172.16.18.6 www IN A 172.16.18.7 #若一個主機名兩個地址可以實現“負載均衡“ ftp IN CNAME www |
下面我們分析一下我們已經設定好的magedu.com正向區域數據文件的格式和含義:
可以看出,區域數據文件的內容很簡單。
第一行是一個TTL設定,定義區域數據文件裏面的各項記錄的宏,缺少此行不影響使用,但是會出現警告信息。
第二行是一個SOA記錄的設定,“@“代表相應的域名,也就是在/etc/named.rfc1912.zones,如在這裏表示magedu.com,IN表示後面的數據使用的是Internet標準。SOA表示目前區域授權開始。每一個區域數據文件只能有一個SOA,不能重複,並且必須是所負責的zone中第一個”記錄“。在SOA後面分別指定這個區域的授權主機名稱和管理者的郵箱。
注:授權主機名和管理員信箱後面都要有一個”.”。由於”@”在區域數據文件中有其他含義,因此管理員郵箱地址中用”.”代替“@“符號。
接下來包含在括弧內的5組數字是作爲服務器同步信息而設置的,含義如下:
第一段表示配置文件的修改版本,格式是年月日加上修改的次數,每次修改這個配置文件時都應該修改這個數值,因爲當DNS進行信息同步時,會比較這個數值的值。如果這個數值比自身的數值大,就進行更新,否則忽略更新。(這個設置很重要,如果修改區域數據後沒有更新該值,那麼所做的更改就不會同步到其他DNS服務器)
第二段表示用來設定DNS服務器進行同步的間隔時間又稱刷新時間。只通知給本區域解析庫文件中定義NS記錄的所有主機;
第三段表示同步更新失敗之後,在進行重試的間隔時間。
第四段表示同步更新失敗之後,多長時間清除對應的記錄,又稱過期時間
第五段表示否定的TTL值
接下來是對域名解析的具體設置,第1列表示不同的主機域名,但是省略了後面的域信息(若爲空白表示與上面域名相同)。例如:”www”其實是www.magedu.com等。“IN“後面的指令含義說明如下:
NS:用來定義這個主機是個域名服務器,是個區域名稱
MX:定義郵件服務器,這裏需要定義優先級的哦!這裏定義的交換級別爲10
A:定義了一個A記錄,即域名到IP的記錄
CNAME:定義了域名的別名
[root@localhostnamed]# cp magedu.com.zone 172.16.18.zone #定義反向區域文件
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@localhost named] # vim 172.16.18.zone #編輯反向區域文件 $TTL 86400 @ IN SOA dns.magedu.com. admin.magedu.com. (
2013081401
2H
10M
7D
6H )
IN NS dns.magedu.com. #這裏必須寫全,不然會默認成dns.18.16.172 20 IN PTR dns.magedu.com. 2 IN PTR mail.magedu.com. 6 IN PTR www.magedu.com. 7 IN PTR www.magedu.com. |
分析:可以看出,反向區域文件基本結構和正向區域數據文件基本完全相同,只不過這裏多出了一個PTR選項。PTR用來定義一個反向記錄,也就是通過IP可以查到對應的域名信息。最後四行的第一列表示是主機的IP地址,只不過省略了網絡地址部分,系統會自動補全,如20對應的是172.16.18.20.
至此,DNS文件配置部分已經基本配置完成,從過程可以看出DNS配置文件對格式的要求非常嚴格。因此,在以後的配置中要格外的小心。
4).定義區域文件的權限關係:
1 2 3 4 5 6 7 8 9 10 11 | [root@localhost named] # ls -l total 36 -rw-r--r-- 1 root root 470 Jul 28 13:56 172.16.18.zone drwxrwx--- 2 named named 4096 Jul 28 10:51 data drwxrwx--- 2 named named 4096 Jul 28 13:52 dynamic -rw-r--r-- 1 root root 504 Jul 28 13:56 magedu.com.zone -rw-r----- 1 root named 1892 Feb 18 2008 named.ca -rw-r----- 1 root named 152 Dec 15 2009 named.empty -rw-r----- 1 root named 152 Jun 21 2007 named.localhost -rw-r----- 1 root named 168 Dec 15 2009 named.loopback drwxrwx--- 2 named named 4096 Feb 22 11:10 slaves |
在這裏我們通過編輯創建的magedu.com.zone文件,然後將該文件的權限屬組更改成系統默認設定權限,這個授權很重要,要不然DNS無法正常工作。
1 2 3 4 | [root@localhost named] # chmod 640 magedu.com.zone [root@localhost named] # chmod 640 172.16.18.zone [root@localhost named] # chown :named magedu.com.zone [root@localhost named] # chown :named 172.16.18.zone |
這裏的named屬組屬主都是創建DNS時系統默認創建的。
5).檢查區域文件語法錯誤與否:
1 2 3 4 5 6 7 8 | [root@localhost named] # named-checkconf #檢查主配置文件語法,無信息輸出說明配置成功 [root@localhost named] # named-checkzone "magedu.com" /var/named/magedu.com.zone #檢查zone語法錯誤與否 zone magedu.com /IN : loaded serial 2013081401 OK
[root@localhost named] # named-checkzone "18.16.172.in-addr.arpa" /var/named/172.16.18.zone zone 18.16.172. in -addr.arpa /IN : loaded serial 2013081401 OK |
三.測試DNS配置
在對DNS文件的所有配置完成後,需要重啓服務,以使配置生效。由於我們這裏還未啓動過服務所以執行如下命令啓動DNS服務:
1 2 3 | [root@localhost etc] # service named start #啓動服務 Generating /etc/rndc .key: [ OK ] #也許讀取速度會很慢,稍等! Starting named: [ OK ] |
建議:若之前啓動過服務,配置完成之後想重新啓動新數據,建議不要使用restart重啓,因爲這樣可能導致網絡服務斷掉,所以要使用reload重新載入信息。
1 2 | [root@localhost named] # service named reload Reloading named: [ OK ] |
下面我們使用dig命令對DNS正向區域解析情況進行測試。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@localhost named] # dig -t A www.magedu.com @172.16.18.20 #解析A記錄 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t A www.magedu.com @172.16.18.20 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 44158 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 172.16.18.6 www.magedu.com. 86400 IN A 172.16.18.7 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS dns.magedu.com. ;; ADDITIONAL SECTION: dns.magedu.com. 86400 IN A 172.16.18.20 ;; Query time : 1 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 14:31:54 2013 ;; MSG SIZE rcvd: 98 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@localhost named] # dig -t NS magedu.com @172.16.18.20 #解析NS記錄 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS magedu.com @172.16.18.20 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 41920 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;magedu.com. IN NS ;; ANSWER SECTION: magedu.com. 86400 IN NS dns.magedu.com. ;; ADDITIONAL SECTION: dns.magedu.com. 86400 IN A 172.16.18.20 ;; Query time : 1 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 14:39:00 2013 ;; MSG SIZE rcvd: 62 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | root@localhost named] # dig -t SOA magedu.com @172.16.18.20 #解析SOA記錄 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t SOA magedu.com @172.16.18.20 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 60898 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;magedu.com. IN SOA ;; ANSWER SECTION: magedu.com. 86400 IN SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600 #這裏全部以秒爲單位進行顯示 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS dns.magedu.com. ;; ADDITIONAL SECTION: dns.magedu.com. 86400 IN A 172.16.18.20 ;; Query time : 1 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 14:44:34 2013 ;; MSG SIZE rcvd: 104 |
下面我們使用dig命令對DNS反向區域解析情況進行測試
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@localhost named] # dig -x 172.16.18.20 #反向區域解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.18.20 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 13525 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;20.18.16.172. in -addr.arpa. IN PTR ;; ANSWER SECTION: 20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com. ;; AUTHORITY SECTION: 18.16.172. in -addr.arpa. 86400 IN NS dns.magedu.com. ;; ADDITIONAL SECTION: dns.magedu.com. 86400 IN A 172.16.18.20 ;; Query time : 1 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 15:56:49 2013 ;; MSG SIZE rcvd: 101 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@localhost named] # dig -t axfr 18.16.172.in-addr.arpa #反向完全區域解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr 18.16.172. in -addr.arpa ;; global options: +cmd 18.16.172. in -addr.arpa. 86400 IN SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600 18.16.172. in -addr.arpa. 86400 IN NS dns.magedu.com. 2.18.16.172. in -addr.arpa. 86400 IN PTR mail.magedu.com. 20.18.16.172. in -addr.arpa. 86400 IN PTR dns.magedu.com. 6.18.16.172. in -addr.arpa. 86400 IN PTR www.magedu.com. 7.18.16.172. in -addr.arpa. 86400 IN PTR www.magedu.com. 18.16.172. in -addr.arpa. 86400 IN SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600 ;; Query time : 5 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 16:02:04 2013 ;; XFR size: 7 records (messages 1, bytes 220) |
從上面的輸出信息可以看出,DNS都可以正確解析,說明我們的配置沒有問題,DNS服務器已經正常工作了。
小拓展:如何不用指向本機就能做本地解析??
#直接將DNS指向本機即可
1 2 3 4 | [root@localhost named]# vim /etc/resolv.conf # Generated by NetworkManager nameserver 172.16 . 18.20
#直接將DNS指向本機即可 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@localhost named] # dig -t axfr magedu.com #正向完全區域解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t axfr magedu.com ;; global options: +cmd magedu.com. 86400 IN SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600 magedu.com. 86400 IN NS dns.magedu.com. magedu.com. 86400 IN MX 10 mail.magedu.com. dns.magedu.com. 86400 IN A 172.16.18.20 ftp .magedu.com. 86400 IN CNAME www.magedu.com. mail.magedu.com. 86400 IN A 172.16.18.2 www.magedu.com. 86400 IN A 172.16.18.6 www.magedu.com. 86400 IN A 172.16.18.7 magedu.com. 86400 IN SOA dns.magedu.com. admin.magedu.com. 2013081401 7200 600 604800 21600 ;; Query time : 1 msec ;; SERVER: 172.16.18.20 #53(172.16.18.20) ;; WHEN: Sun Jul 28 15:00:08 2013 ;; XFR size: 9 records (messages 1, bytes 231) |
本文出自 “起點夢想” 博客,請務必保留此出處http://pangge.blog.51cto.com/6013757/12730