DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。
簡介
DNS提供域名解析服務。當我們瀏覽網頁時,在瀏覽器地址欄輸入的是網址,而不是ip地址。瀏覽器如何找到相應的網頁呢。這就是DNS的作用。無論是在Windows主機上面還是在linux主機上面,都設置得有DNS:
[root:named]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search roger.com
nameserver 172.16.253.113
通常在瀏覽器輸入的網址類似于www.yahoo.com.cn,這就叫完整主機名,即FQDN。www就是web網站服務器的主機名,yahoo.com.cn就是域名,其中,域名是層級架構的,在最頂層的是根服務器,主要負責頂級域名的管理,所謂頂級域名(TLD)就像.com,.cn,.net,.gov等,頂級域下面管理的是二級域名,如yahoo.com,再往下就是三級域名,如mail.yahoo.com等以此類推。各類頂級域具有不同的意義,如下:
名稱 | 意義 |
---|---|
com | 公司,行號,企業 |
org | 組織,機構 |
edu | 教育單位 |
gov | 政府單位 |
net | 網絡通訓 |
mil | 軍事單位 |
整個DNS根結構如下:
當我們在瀏覽器的地址欄輸入網址,諸如www.qq.com,那么它是怎么找到其對應的ip的呢:
1、在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。
2、如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。
3、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
5、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
6、如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
上面的查詢方式我們可以總結為遞歸查詢和迭代查詢:
遞歸查詢即我們將請求傳遞給設置的首選DNS后,它會一層一層的查詢,直至把查詢結果返回給我們,即使是返回的是一個查詢未找到的結果。
迭代查詢就是在查詢的過程中,根返回相應的頂級域地址,頂級域返回的是二級域地址,一層一層的找,這就是迭代查詢;
資源記錄(Resoursr Record,簡寫為RR)
資源記錄是組成了DNS各域記錄。這些記錄的類型有:A,AAAA,PTR,SOA,NS,CNAME,MX等,其中
SOA就是開始驗證(Start Of Authority)的縮寫;
NS就是DNS服務器(NameServer)的縮寫,后面記錄的數據是DNS服務器的意思;
A就是Address的縮寫,后面記錄的是對應的IPv4地址;
AAAA對應的是IPv6地址;
PTR是指向(PointTeR)的縮寫,后面記錄的是數據就是反解到的主機名;
CNAME是主機別名,一個主機名可以有多個別名,但IP地址是一樣的;
MX是郵件服務器Mail eXchanger;
資源記錄定義的格式為:
name []TTL] IN rr_type value
注意:
TTL就是time to live,表示該記錄別其他DNS服務器查詢到后被保留到對方服務器上的緩存當中并保持多少秒,個從全局繼承;
@可以用于應用當前區域的名字;
同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以輪流方式響應;
同一個名字也可以能有多個不同的定義的名字;通過多個不同的名字指向同一個值進行定義;僅表示通過多個名字可以找到同一個主機而已;
上面每種資源類型的定義方式如下:
SOA:
name:當前區域的名字,例如qq.com;
value:有多部分組成
1、當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
2、記錄當前區域管理員的郵箱地址,但是地址中不能使用@符號,一般用”.”替換;
3、主從服務協調屬性的定義以及否定的答案的一般統一TTL;
例如:
$ORIGIN .
$TTL 86400 ; 1 day ##全局TTL定義
roger.com IN SOA ns1.roger.com. admin.roger.com. (
15 ; serial ##序列號
86400 ; refresh (1 day) ##刷新時間
3600 ; retry (1 hour) ##重試時間
604800 ; expire (1 week) ##過期時間
3600 ; minimum (1 hour) ##否定答案的TTL值
)
以上5個參數的第一個序列號外其他四個的單位默認為秒,當然也可以指定單位如:D(天),M(分鐘),H(小時),W(周)。
NS記錄:
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如:ns.magedu.com.
注意:一個區域可以有多個NS記錄
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1) 相鄰的兩個資源記錄的name相同時,后續的可省略
(2) 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄
MX記錄:
name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名
一個區域內, MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄
A記錄:
name: 某主機的FQDN,例如www.magedu.com.
value: 主機名對應主機的IP地址
例如:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 4.4.4.4
$GENERATE 1-254 HOTS$ A 1.2.3.$
*.magedu.com. IN A 5.5.5.5 \
agedu.com. IN A 6.6.6.6
避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址;
AAAA:
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反過來寫, 1.2.3.4,要寫作4.3.2.1;而有特定后綴: in-addr.arpa.,所以完整寫法為: 4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
如1.2.3為網絡地址,可簡寫成:4 IN PTR www.magedu.com.
注意:網絡地址及后綴可省略;主機地址依然需要反著寫;
CNAME:
name: 別名的FQDN
value: 真正名字的FQDN
例如:
www.magedu.com. IN CNAME websrv.magedu.com
安裝調試DNS
安裝
DNS服務軟件包的名字的bind,直接使用yum安裝即可,安裝完成后,會在/etc/下面生成named開頭的多個配置文件:
[root:slaves]# ls /etc/named*
/etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key
[root:slaves]# ls /var/named/
data dynamic named.ca named.empty named.localhost named.loopback slaves
創建一臺DNS服務器
第一步:編輯配置文件,添加如下的配置:
[root:slaves]# vim /etc/named.rfc1912.zones
...
19 zone "roger.com" IN{ ##創建一個域名為roger.com
20 type master; ##設置為主DNS
21 file "roger.com.zone"; ##該域名的配置文件名字,保存在/etc/named.conf指定的位置
22 allow-update { 172.16.250.106; }; ##允許更新的主機
23 };
24
25 zone "253.16.172.in-addr.arpa" IN{ ##反解析庫,下面的配置一樣同上
26 type master;
27 file "named.172.16.253";
28 allow-update { 172.16.250.106; };
29 };
30
...
/etc/named.conf文件內容如下:
[root:named]# cat /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.
//
options {
listen-on port 53 { 127.0.0.1; }; ##定義了服務器監聽的在哪個ip的53端口上,可以注釋掉,就是監聽主機上所有IP的53端口
listen-on-v6 port 53 { ::1; };
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; }; ##僅本機允許查詢,可以注釋掉,就是默認都可以查詢
allow-transfer { 172.16.100.101; }; ##定義允許完全查詢的主機,如沒有可以添加
recursion yes; ##定義遞歸查詢
dnssec-enable no; ##DNS安全開關,注釋掉就默認為yes,下面一樣
dnssec-validation no;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; ##配置域的文件,也可以是本文件內
include "/etc/named.root.key";
然后在指定的位置創建并編輯文件如下:
[root:named]# cd /var/named/
[root:named]# cat roger.com.zone ##正向解析域
$ORIGIN .
$TTL 86400 ; 1 day
roger.com IN SOA ns1.roger.com. admin.roger.com. (
15 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
NS ns1.roger.com.
NS ns2.roger.com.
A 172.16.253.113
MX 10 mail1.roger.com.
$ORIGIN roger.com.
ftp A 172.16.253.114
ftp2 A 172.16.252.100
$TTL 7777 ; 2 hours 9 minutes 37 seconds
ftp3 A 172.16.100.123
A 12.12.12.12
A 12.12.12.14
A 12.12.12.15
ftp4 A 12.12.12.13
$TTL 86400 ; 1 day
mail1 A 172.16.253.114
ns1 A 172.16.253.113 ##本機DNS
ns2 A 172.16.100.101 ##另外一臺DNS,如果將其配置為從服務器,可以實現同步更新資源記錄,如果不設置,從服務器只能通過刷新時間(refresh (1 day))主動從主服務器獲取
websrv A 172.16.253.115
www CNAME websrv
[root:named]# cat /var/named/named.172.16.253 ##反向解析域
$TTL 1D
@ IN SOA ns1.roger.com. admin.roger.com. ( 02 1H 30M 1D 1D )
@ IN NS ns1.roger.com.
113 IN PTR ns1.roger.com.
113 IN PTR ns2.roger.com.
114 IN PTR mail1
114 IN PTR ftp
115 IN PTR websrv
115 IN PTR www
配置完成后重新啟動DNS服務,并且正向反向查詢:
[root:named]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
[root:named]# dig roger.com @127.0.0.1 ##如將本機的DNS設置為本機,可以不寫@127.0.0.1,其他機器上查詢就寫@IPDNS
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62595
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
## aa代表權威回答
;; QUESTION SECTION:
;roger.com. IN A
;; ANSWER SECTION:
roger.com. 86400 IN A 172.16.253.113
;; AUTHORITY SECTION:
roger.com. 86400 IN NS ns2.roger.com.
roger.com. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
ns2.roger.com. 86400 IN A 172.16.100.101
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 6 17:01:30 2016
;; MSG SIZE rcvd: 111
[root:named]# dig -x 172.16.253.113 @127.0.0.1 ##反向查詢一定要有-x ,否則就像誒成dig -t PTR 113.253.16.172.in-addr.arpa. @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 172.16.253.113 @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14533
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;113.253.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
113.253.16.172.in-addr.arpa. 86400 IN PTR ns2.roger.com.
113.253.16.172.in-addr.arpa. 86400 IN PTR ns1.roger.com.
;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 6 17:01:53 2016
;; MSG SIZE rcvd: 120
也可以用其他的主機進行查詢:
[root:~]# dig roger.com @172.16.253.113
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> roger.com @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3221
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;roger.com. IN A
;; ANSWER SECTION:
roger.com. 86400 IN A 172.16.253.113
;; AUTHORITY SECTION:
roger.com. 86400 IN NS ns2.roger.com.
roger.com. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
ns2.roger.com. 86400 IN A 172.16.100.101
;; Query time: 0 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:06:49 CST 2016
;; MSG SIZE rcvd: 122
[root:~]# dig -x 172.16.253.115 @172.16.253.113
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 172.16.253.115 @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65349
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;115.253.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
115.253.16.172.in-addr.arpa. 86400 IN PTR www.253.16.172.in-addr.arpa.
115.253.16.172.in-addr.arpa. 86400 IN PTR websrv.253.16.172.in-addr.arpa.
;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 86400 IN A 172.16.253.113
;; Query time: 1 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:07:23 CST 2016
;; MSG SIZE rcvd: 138
到此,DNS服務器搭建完成。
搭建DNS從服務器
在另外一臺服務器上面在/etc/named.rfc1912.zones里面編輯如下內容:
...
18
19 zone "253.16.172.in-addr.arpa" IN { ##反向解析與
20 type slave; #類型為從服務器
21 file "slaves/named.172.16"; ##資源庫文件保存為/var/named/下面的位置
22 masters {172.16.253.113;}; ##定義主服務器
23 };
24
25 zone "roger.com" IN { ##正向解析域
26 type slave; #類型為從服務器
27 file "slaves/roger.com.zone"; ##資源庫文件保存為/var/named/下面的位置
28 masters { 172.16.253.113; }; ##定義主服務器
29 allow-update { 172.16.250.106; }; ##定義了誰可以通過nsupdate命令遠程更新
30 };
...
編輯完成后,重啟named服務,就可以看見備份過來的資源庫了:
[root:slaves]# ll
total 12
-rw-r--r-- 1 named named 415 Dec 6 17:02 named.172.16
-rw-r--r-- 1 named named 669 Dec 6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1580 Dec 6 15:05 roger.com.zone.jnl
[root:slaves]# pwd
/var/named/slaves
如果主服務器的資源庫被修改了,從服務器會自動同步:
##在其它主機上通過nsupdate命令遠程更新
root:~]$ nsupdate
> server 172.16.253.113
> zone roger.com
> update add ftp4.roger.com. 6666 IN A 12.12.12.16 ##格式需嚴格匹配,否則會報錯
> send
>
###在主服務器上庫馬上有改變
[root:named]# ll
total 40
drwxrwx--- 2 named named 4096 Dec 6 10:17 data
drwxrwx--- 2 named named 4096 Dec 6 16:48 dynamic
-rw-r----- 1 named named 211 Dec 6 14:19 named.172.16.253
-rw-r----- 1 root named 3171 Jan 11 2016 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 Oct 11 22:16 named.loopback
-rw-r--r-- 1 named named 669 Dec 6 15:09 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec 6 17:20 roger.com.zone.jnl ##被更改資源庫
drwxrwx--- 2 named named 4096 May 11 2016 slaves
##從服務器上的庫
[root:slaves]# ll
total 12
-rw-r--r-- 1 named named 415 Dec 6 17:02 named.172.16
-rw-r--r-- 1 named named 669 Dec 6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec 6 17:20 roger.com.zone.jnl ##被同步的庫
上面的實驗是主服務器配置了從服務器的相關ip信息,所以在主服務器有更新時,會主動的將更新的庫推送上從服務器上面。如果在主服務器上面沒有配置從服務器的相關信息,要想更新,只能通過從服務器的主動拉的動作,才能將資源庫文件保存到從服務器上面,并且不能做到實時同步,只能根據資源記錄里面的刷新時間來更新。
為了安全,不能讓未授權的服務器獲得資源記錄,可以在/etc/named.conf文件中添加一行語句:
18 allow-transfer { 172.16.100.101; }; ##括號中的ip為允許獲取資源內容的ip,如有多個,用分號隔開,如允許任何人則為any;none表示沒有一個主機被允許。
子域
上面我們講了,DNS整個結構就是一個倒置的樹,在查詢的時候,要實現跌倒查詢,父域必須知道子域,子域不必知道父域,這就是子域授權。
要想實現子域授權,只需要在父域的配置文件將添加子域的對應ip和域,例如上面的例子,在roger.com域授權子域,只需在roger.com的RR配置文件里面指定子域,如shanghai:
shanghai NS ns3
ns3 A xxx.xxx.xxx.xxx
這樣就子域授權好了:
實驗
為了驗證上面的學習內容,做如下實驗。
我們要訪問一個域名為www.shanghai.roger.com,搭建一個環境,模擬整個訪問,拓撲如下:
在所有的服務器上面的/etc/name.conf配置文件中設置為如下:
...
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; }; ##注釋掉
...
28 */
29 recursion yes;
30
31 dnssec-enable no; ##改為no
32 dnssec-validation no; ##改為no
33
34 /* Path to ISC DLV key */
...
A、根域的設置:
##在/etc/named.conf中注釋掉以下信息
...
50 //zone "." IN {
51 // type hint;
52 // file "named.ca";
53 //};
...
##在/etc/named.rfc1912.zones中創建一個域
...
33 zone "."{
34 type master;
35 file "root.zone";
36 };
...
##在/var/named/下面創建文件root.zone并編輯成如下內容
1 $TTL 1D
2 @ IN SOA ns1 admin.com. ( 01 1D 1D 1D 1W )
3 @ NS ns1
4 ns1 A 172.16.252.81
5 com. NS ns2
6 ns2 A 172.16.253.113
##修改root.zone的文件屬性為以下屬性
-rw-r----- 1 root named 117 Dec 6 20:19 root.zone
## 完成后重啟服務
B、頂級域.com的設置
##添加.com域
vim /etc/named.rfc1912.zones
...
24 zone "com"{
25 type master;
26 file "com.zone";
27 };
...
##在/var/named下面創建com.zone并編輯為如下內容:
[root:named]# cat com.zone
$TTL 1D
@ IN SOA ns1.com. admin.com. ( 1 1D 1H 1D 1D )
NS ns1
ns1 A 172.16.253.113
roger NS ns2
ns2 A 172.16.100.101
##設置com.zone屬性如下:
[root:named]# chgrp named com.zone
[root:named]# chmod 640 com.zone
[root:named]# ll
total 44
-rw-r----- 1 root named 118 Dec 6 19:57 com.zone
##重啟服務
C、二級域名roger.com的設置
[root:named]# vim /etc/named.rfc1912.zones
...
24
25 zone "roger.com" IN {
26 type master;
27 file "roger.com.zone";
28 };
29
30 zone "localhost" IN {
...
[root:named]# cat /var/named/roger.com.zone
$TTL 86400 ; 1 day
roger.com. IN SOA ns1.roger.com. admin.roger.com. (
16 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
@ NS ns1.roger.com.
ns1 A 172.16.100.101
www CNAME web
web A 172.16.100.101
ftp A 172.16.100.101
* A 172.16.100.101
[root:named]# ll
total 32
...
-rw-r----- 1 root named 352 Dec 6 19:38 roger.com.zone
##重啟服務
D、電信服務器的配置
安裝完bind軟件包后,將指定”.“的文件named.ca里面的內容修改成:
[root:~]# cat /var/named/named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 172.16.252.81 ##根域IP地址
##測試能否找到www.roger.com
[root:~]# dig www.roger.com @127.0.0.1
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22996
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com. IN A
;; ANSWER SECTION:
www.roger.com. 84917 IN CNAME web.roger.com.
web.roger.com. 84917 IN A 172.16.100.101
;; AUTHORITY SECTION:
roger.com. 84917 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 84917 IN A 172.16.100.101
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 06 21:10:00 CST 2016
;; MSG SIZE rcvd: 110
##能夠解析到
最后,在用戶的機器上使用
[root:~]# dig www.roger.com @172.16.200.200 ##可以將172.16.200.200設置為該主機的DNS,就可以不加后面的@...,本次只能實驗。
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @172.16.252.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28905
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com. IN A
;; ANSWER SECTION:
www.roger.com. 84818 IN CNAME web.roger.com.
web.roger.com. 84818 IN A 172.16.100.101
;; AUTHORITY SECTION:
roger.com. 84818 IN NS ns1.roger.com.
;; ADDITIONAL SECTION:
ns1.roger.com. 84818 IN A 172.16.100.101
;; Query time: 1 msec
;; SERVER: 172.16.252.5#53(172.16.252.5)
;; WHEN: Tue Dec 06 21:11:39 CST 2016
;; MSG SIZE rcvd: 110
##解析完成
注意:在整個實驗中,每臺服務器的”.“文件都應該指向根服務器(172.16.252.81),建立的域配置文件要使用root的屬主,named的屬組,權限為640,設置好防火墻。
原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/62960