根DNS域名解析的實現

一、實現從根,com,rj.com 模擬互聯網的DNS架構

DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。

接下來就一起開始搭建吧

首先,我們需要計劃好實驗環境,包括實驗的步驟思路

1)實驗環境(最好是畫圖展示,能使思路清晰)

a) ip地址

b) 系統版本(我這里使用Centos7)

c) 軟件版本(使用Centos7光盤內的版本,默認應該是bind-9.9.4)

2)實驗步驟思路

a) 搭建根服務器,將根服務器的信息拷貝到其他所有服務器上

b) 搭建com服務器,rj.com服務器,www.rj.com主機

c) 搭建運營商服務器

d) 配置客戶機DNS指向運營商服務器

e) 客戶機解析www.rj.com主機

客戶機-(dns指向)->運營商-(/var/named/named.ca)->根服務器-(/var/named/named.ca)->com服務器-(com.zone)->rj.com服務器-(rj.com.zone)->www.rj.com主機

二、實驗環境:

根服務器:

Name:rootdns

IP:192.168.99.60

com服務器:

Name:comdns

IP:192.168.99.61

rj.com服務器:

Name:rjcom

IP:192.168.99.62

www.rj.com主機:

Name:wwwrjcom

IP:192.168.99.63

運營商DNS服務器:

Name:dxdns

IP:192.168.99.64

客戶機:

IP:192.168.99.65

DNS:192.168.99.64

三、設計拓撲圖

根DNS域名解析的實現

四、服務器配置:

A、根服務器的配置

1、修改主機名(由于需要機器較多,便于自己識別)

[root@dns ~]# hostnamectl set-hostname rootdns
[root@rootdns ~]# 

2、配置網絡接口

[root@rootdns ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 
DEVICE=eno16777736
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.99.60
PREFIX=16

3、清除防火墻

[root@rootdns ~]# iptables -F

4、安裝bind

[root@rootdns ~]# yum install -y bind

5、編輯DNS主配文件

[root@rootdns ~]#  vim /etc/named.conf 
 //      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

不修改則默認只監聽在本機127.0.0.1并且只能從本機查詢,建議注釋掉上述兩行

dnssec-enable no;
dnssec-validation no;

上述兩項的yes改為no,這兩項yes是使用加密及簽名來保證DNS服務器通信安全的,由于我們沒有使用,所以必須改為no,否則下級DNS是無法與上級DNS進行通信的

zone "." IN {
type master;
file "named.ca";
};
修改根的類型:hint-->master

6、重寫根的解析文件/var/named/named.ca

[root@rootdns ~]# cd /var/named/
[root@rootdns named]# echo >named.ca ## 清空原來的數據
[root@rootdns named]# vim named.ca ## 手動輸入,也可以根據/var/named/下的模板修改
$TTL 1D
. IN SOA dns.root. admin.root. ( 1 1D 1H 1W 1D )
. IN NS dns.root.
dns.root. IN A 192.168.99.60
com IN NS dns.com.
dns.com. IN A 192.168.99.61
[root@rootdns named]# 

7、檢查配置文件語法有無錯誤

[root@rootdns named]# named-checkconf 
[root@rootdns named]# named-checkzone . named.ca ## 檢查根DNS配置文件
zone ./IN: loaded serial 1
OK
[root@rootdns named]# 

8、啟動根服務器

[root@rootdns named]# systemctl start named
[root@rootdns named]# ss -tnlp ## 查看端口是否啟動,默認53號端口

9、.服務器本機使用dig檢測解析效果

[root@rootdns named]# dig dns.root.
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.root.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26131
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.root. IN A
;; ANSWER SECTION:
dns.root. 86400 IN A 192.168.99.60
;; AUTHORITY SECTION:
. 86400 IN NS dns.root.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: Thu Apr  6 23:56:27 2017
;; MSG SIZE  rcvd: 66

能得出如上解析信息,說明dns.root服務器可以正常提供解析服務了

B、com服務器的配置

1、前面4步同上,只是主機名與IP地址改為對應信息就可以了

5、編輯DNS主配文件

[root@comdns ~]# vim /etc/named.conf 
 //      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

注釋掉上述兩行

dnssec-enable no;
dnssec-validation no;

上述兩項的yes改為no

zone "." IN {
type hint;
file "named.ca";
};
zone "com" IN {
type master;
file "com.zone";
};

根區域無需修改;新增com區域信息

6、復制.服務器上的named.ca文件到com服務器上

[root@rootdns named]# scp named.ca 192.168.99.61:/var/named/named.ca
## 在根服務器上操作,如果不在/var/named/目錄下要補上路徑

刪除named.ca的最后兩行

[root@comdns ~]# cd /var/named/
[root@comdns named]# cat named.ca ## 只保留根區域的信息即可
$TTL 1D
. IN SOA dns.root. admin.root. ( 1 1D 1H 1W 1D )
. IN NS dns.root.
dns.root. IN A 192.168.99.60
[root@comdns named]#

7、新建com域的解析數據庫,修改相應權限

[root@comdns named]# vim com.zone ## 新建區域文件,要和配置文件里面寫的名稱一致
$TTL 1D ## 格式可以參照/var/named/目錄下的文件
com. IN SOA dns.com. admin.com. ( 1 1D 1H 1W 1D )
com. IN NS dns.com.
dns.com. IN A 192.168.99.61
rj.com. IN NS dns.rj.com.
dns.rj.com. IN A 192.168.99.62
[root@comdns named]# chgrp named com.zone ## 修改文件所屬組為named組
[root@comdns named]# chmod o-r com.zone ## 修改其他人對此文件沒有任何權限

8、檢查配置文件語法有無錯誤

[root@comdns named]# named-checkconf 
[root@comdns named]# named-checkzone com com.zone 
zone com/IN: getaddrinfo(dns.rj.com) failed: Temporary failure in name resolution
zone com/IN: loaded serial 1
OK
[root@comdns named]#

這里報出了一個獲取dns.rj.com域信息失敗的錯誤,不用擔心,正是因為我們的下級域rj.com還沒有搭建出來

9、啟動dns.com服務器

[root@comdns named]# systemctl start named
[root@comdns named]# ss -tnlp  ## 查看端口是否啟動,默認53號端口

10、在dns.com服務器上測試解析效果

[root@comdns named]# dig dns.com. 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 974
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.com. IN A
;; ANSWER SECTION:
dns.com. 86400 IN A 192.168.99.61
;; AUTHORITY SECTION:
com. 86400 IN NS dns.com.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: Tue Apr 18 10:59:20 2017
;; MSG SIZE  rcvd: 66 

有結果和上述信息類似時說明dns.com服務器解析沒問題

[root@comdns named]# dig dns.root.
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.root.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33005
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.root. IN A
;; ANSWER SECTION:
dns.root. 86400 IN A 192.168.99.60
;; AUTHORITY SECTION:
. 86389 IN NS dns.root.
;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: 二 4月 18 17:47:04 CST 2017
;; MSG SIZE  rcvd: 66

有上述結果時說明com服務器是可以查詢到根的

C、rj.com服務器的配置

1、前4步和.服務器的配置操作相同,只是主機名與IP地址改為對應信息就可以了

5、編輯DNS主配文件

[root@rjcom ~]# vim /etc/named.conf 
 //      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

注釋掉上述兩行

dnssec-enable no;
dnssec-validation no;

上述兩項的yes改為no

zone "." IN {
        type hint;
        file "named.ca";
};
zone "rj.com" IN {
        type master;
        file "rj.com.zone";
};

根區域無需修改;新增rj.com區域

6、復制dns.com服務器上的named.ca文件到dns.rj.com服務器上

[root@rootdns named]# scp named.ca 192.168.99.62:/var/named/named.ca 
  ## 在根服務器上操作,如果不在/var/named/目錄下要補上路徑

刪除named.ca的最后兩行

[root@rjcom ~]# cd /var/named
[root@rjcom named]# cat named.ca ## 只保留根區域的信息即可
$TTL 1D
. IN SOA dns.root. admin.root. ( 1 1D 1H 1W 1D )
. IN NS dns.root.
dns.root. IN A 192.168.99.60
[root@rjcom named]# 

7、新建rj.com域的解析數據庫,修改相應權限

[root@rjcom named]# vim rj.com.zone
## 新建區域文件,要和配置文件里面寫的名稱一致
$TTL 1D ## 格式可以參照/var/named/目錄下的文件
@ IN SOA dns.rj.com. admin.rj.com. ( 1 1D 1H 1W 1D )
@ IN NS dns.rj.com.
dns.rj.com. IN A 192.168.99.62
www IN A 192.168.99.63
[root@rjcom named]# chgrp named rj.com.zone 
## 修改文件所屬組為named組
[root@rjcom named]# chmod o-r rj.com.zone
## 修改其他人對此文件沒有任何權限

8、檢查配置文件語法有無錯誤

[root@rjcom named]# named-checkconf
[root@rjcom named]# named-checkzone rj.com rj.com.zone
zone rj.com/IN: loaded serial 1
OK
[root@rjcom named]# 

9、啟動dns.rj.com服務器

[root@rjcom named]# systemctl start named
[root@rjcom named]# ss -tnlp ## 查看端口是否啟動,默認53號端口

10、在dns.rj.com服務器上測試解析效果

[root@rjcom named]# dig dns.rj.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.rj.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23110
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.rj.com. IN A
;; ANSWER SECTION:
dns.rj.com. 86400 IN A 192.168.99.62
;; AUTHORITY SECTION:
rj.com. 86400 IN NS dns.rj.com.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: 二 4月 18 17:40:04 CST 2017
;; MSG SIZE  rcvd: 72

有上述結果時說明dns.rj.com服務器解析沒問題

[root@rjcom named]# dig dns.root.
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.root.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8606
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.root. IN A
;; ANSWER SECTION:
dns.root. 86400 IN A 192.168.99.60
;; AUTHORITY SECTION:
. 86366 IN NS dns.root.
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: Tue Apr 18 10:59:20 2017
;; MSG SIZE  rcvd: 66

有上述結果時說明dns.rj.com是可以查詢到根的

運營商DNS服務器的配置

1、前4步和.服務器的配置操作相同,只是主機名與IP地址改為對應信息就可以了
5、編輯DNS主配文件

[root@dxdns ~]# vim /etc/named.conf 
 //      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

注釋掉上述兩行

dnssec-enable no;
dnssec-validation no;

上述兩項的yes改為no,zone區域無需修改

6、復制dns.com服務器上的named.ca文件到dns.dx服務器上

[root@rootdns ~]# scp named.ca 192.168.99.64:/var/named/named.ca
 ## 在根服務器上操作,如果不在/var/named/目錄下要補上路徑

刪除named.ca的最后兩行

[root@dxdns ~]# cd /var/named
[root@dxdns named]# cat named.ca ## 只保留根區域的信息即可
$TTL 1D
. IN SOA dns.root. admin.root. ( 1 1D 1H 1W 1D )
. IN NS dns.root.
dns.root. IN A 192.168.99.60
[root@dns named]#

7、檢查配置文件語法有無錯誤,由于沒有新增任何區域解析數據庫文件,所以無需檢查區域解析數據庫存文件

[root@dns named]# named-checkconf 

8、啟動dns.dx服務器

[root@dxdns named]# systemctl start named
[root@dxdns named]# ss -tnlp ## 查看端口是否啟動,默認53號端口

9、在dns.dx服務器上測試解析效果

[root@dns named]# dig dns.root. 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.root.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32756
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.root. IN A
;; ANSWER SECTION:
dns.root. 86400 IN A 192.168.99.60
;; AUTHORITY SECTION:
. 86136 IN NS dns.root.
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: Tue Apr 18 10:59:40 2017
;; MSG SIZE  rcvd: 66
[root@dns named]# 

能夠得到上述結果時,說明運營商的DNS服務器是可以尋找到根DNS的

[root@dns named]# dig www.rj.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dig www.rj.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 26532
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dig. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA dns.root. admin.root. 1 86400 3600 604800 86400
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 18 10:59:20 2017
;; MSG SIZE  rcvd: 81
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39968
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.rj.com. IN A
;; ANSWER SECTION:
www.rj. 85427 IN A 192.168.99.63
;; AUTHORITY SECTION:
rj.com. 85419 IN NS dns.rj.com.
;; ADDITIONAL SECTION:
dns.rj.com. 85419 IN A 192.168.99.62
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) ## 表示通過哪臺DNS服務器查詢,127表示本機
;; WHEN: Tue Apr 18 10:57:49 2017
;; MSG SIZE  rcvd: 92
[root@dns named]# 

能夠得到上述結果時,說明整個運營商的DNS服務器的轉發解析是完全沒問題的??梢蚤_始為客戶機提供DNS服務了

客戶機配置運營商DNS服務器IP地址做全網解析測試

[root@chen ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 
DEVICE=eno16777736
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.99.65
PREFIX=16
DNS1=192.168.99.64

客戶機的DNS地址指向運營商的DNS服務器IP

[root@chen ~]# dig dns.root.
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> dns.root.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31081
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;dns.root. IN A
;; ANSWER SECTION:
dns.root. 84609 IN A 192.168.99.60
;; AUTHORITY SECTION:
. 84609 IN NS dns.root.
;; Query time: 1 msec
;; SERVER: 192.168.99.64#53(192.168.99.64) ## 通過設置的dxdns服務器進行查詢
;; WHEN: Tue Apr 18 10:57:20 2017
;; MSG SIZE  rcvd: 66
[root@chen ~]# 

能夠得到上述結果時,說明客戶機是可以通過運營商的DNS服務器尋找到根DNS的

[root@chen ~]# dig www.rj.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.rj.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5575
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.rj.com. IN A
;; ANSWER SECTION:
www.rj.com. 84500 IN A 192.168.99.63
;; AUTHORITY SECTION:
rj.com. 84492 IN NS dns.rj.com.
;; ADDITIONAL SECTION:
dns.rj.com. 84492 IN A 192.168.99.62
;; Query time: 3 msec
;; SERVER: 192.168.99.64#53(192.168.99.64) ## 通過設置的dxdns服務器進行查詢
;; WHEN: Tue Apr 18 10:58:20 2017
;; MSG SIZE  rcvd: 92

到此為止,一個完整的模擬互聯網的DNS架構就完成了。

原創文章,作者:kang,如若轉載,請注明出處:http://www.www58058.com/79154

(0)
kangkang
上一篇 2017-04-24
下一篇 2017-04-25

相關推薦

  • 馬哥教育30期學員開學典禮

    ? ?? 早上背上書包去學校報到,很有一番學生時期去新學校的感覺,既興奮又緊張,一段新的人生歷程即將開始。 ? ?? 大學時曾經勸說我的同學別逃選修課,我說也許你苦學四年的專業比不上一節選修課對你的將來更有用,如今我卻用親身經歷驗證了這句話,我是通過大學的一堂選修課了解的Linux系統,開源軟件,沒想到多年后今天的我竟然也要入這行了。 ? ? ? 到教室后,…

    2018-03-26
  • SELinux在httpd服務端中的使用

    一、啟用SELinux策略并安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,使網站可訪問(以CentOS7系統操作) 1、首先查看本系統是否已經安裝httpd服務 2、查看httpd的配置文件所在路徑 3、創建主目錄為/website與網頁文件"index.html",并更改httpd服務為該路…

    Linux干貨 2016-09-16
  • PHP運行模式

    PHP運行模式有4鐘: 1)cgi 通用網關接口(Common Gateway Interface))2) fast-cgi 常駐 (long-live) 型的 CGI3) cli  命令行運行   (Command Line Interface)4)web模塊模式 (apache等web服務器運行的模塊模式) 1.  CGI(…

    Linux干貨 2015-04-10
  • iptables練習

    系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機; 系統默認策略設定: ~]# iptables -P INPUT DROP ~]# iptables -P OUPUT DROP 網絡說明…

    Linux干貨 2016-12-27
  • rpm包管理

    rpm包管理 rpm(RedHat Package Manager) 是RedHat公司發展的一種將軟件安裝到Linux系統的管理機制,也是一種數據庫記錄方法。 Linux系統上軟件的安裝主要分兩種方式,從廠商發布的tarball通過編譯來安裝;或者使用廠商已經在相應平臺上編譯好的二進制文件。 從源碼編譯安裝的程序,在漏洞修補以及軟件功能升級時太過麻煩,并且…

    Linux干貨 2016-11-18
  • 磁盤分區

    磁盤分區 一、分區方式兩種 MBR分區不能超過2個T按柱面分區主引導記錄存放在,0磁道0扇區 512bytes前446字節存放bootloader (軟件程序)64字節:分區表16個字節表示一個有效的分區 故只能分4個主分區。大于4個需要創建擴展分區,并在其中創建邏輯分區。2字節 55AABPT分區GPT:GUID(Globals Unique Identi…

    Linux干貨 2016-08-29
欧美性久久久久