一、實現從根,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
三、設計拓撲圖
四、服務器配置:
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架構就完成了。
原創文章,作者:renjin,如若轉載,請注明出處:http://www.www58058.com/78663