1. 程式人生 > >02: DNS服務基礎 特殊解析 DNS子域授權 快取DNS 總結和答疑

02: DNS服務基礎 特殊解析 DNS子域授權 快取DNS 總結和答疑

Top

NSD SERVICES DAY02

  1. 案例1:搭建單區域DNS伺服器
  2. 案例2:特殊DNS解析
  3. 案例3:配置DNS子域授權
  4. 案例4:搭建並測試快取DNS

1 案例1:搭建單區域DNS伺服器

1.1 問題

本例要求要求為DNS區域tedu.cn搭建一臺DNS伺服器,以便使用者能通過域名的方式訪問網站。測試階段主要提供以下正向記錄:

  1. svr7.tedu.cn ---> 192.168.4.7
  2. pc207.tedu.cn ---> 192.168.4.207
  3. www.tedu.cn ---> 192.168.4.100

配置完成後在客戶機上驗證查詢結果。

1.2 方案

快速構建DNS伺服器的基本過程:

  1. 安裝 bind、bind-chroot 包
  2. 建立主配置檔案 /etc/named.conf
  3. 建立地址庫檔案 /var/named/.. ..
  4. 啟動 named 服務

配置及使用DNS客戶端的基本過程:

  1. 修改配置檔案/etc/resolv.conf,新增nameserver=DNS伺服器地址
  2. 使用host命令查詢,提供目標域名作為引數

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:配置DNS伺服器svr7

1)安裝 bind、bind-chroot 包

 
  1. [[email protected] ~]# yum -y install bind bind-chroot
  2. .. ..

2)建立主配置檔案 /etc/named.conf

 
  1. [[email protected] ~]# mv /etc/named.conf /etc/named.conf.origin         //備份預設配置
  2. [[email protected] ~]# vim /etc/named.conf                             //建立新配置
  3. options {
  4. directory "/var/named";                         //地址庫預設存放位置
  5. };
  6. zone "tedu.cn" {                                 //定義正向DNS區域
  7. type master;                                     //主區域
  8. file "tedu.cn.zone";                             //自定義地址庫檔名
  9. };

3)建立地址庫檔案 /var/named/tedu.cn.zone

 
  1. [[email protected] ~]# cd /var/named/                             //進地址庫目錄
  2. [[email protected] named]# cp -p named.localhost tedu.cn.zone     //參考範本建地址庫檔案
  3. [[email protected] named]# vim tedu.cn.zone                         //修訂地址庫記錄
  4. $TTL 1D                                         //檔案開頭部分可保持不改
  5. @ IN SOA @ rname.invalid. (
  6. 0 ; serial
  7. 1D ; refresh
  8. 1H ; retry
  9. 1W ; expire
  10. 3H ) ; minimum
  11. @ NS svr7.tedu.cn.                         //本區域DNS伺服器的FQDN
  12. svr7 A 192.168.4.7                         //為NS主機提供A記錄
  13. pc207 A 192.168.4.207                         //其他正向地址記錄.. ..
  14. www A 192.168.4.100

4)啟動 named 服務,並設定開機自啟

 
  1. [[email protected] named]# systemctl restart named
  2. [[email protected] named]# systemctl enable named
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

步驟二:配置DNS客戶機pc207並測試

1)修改配置檔案/etc/resolv.conf,指定預設使用哪一臺DNS伺服器

 
  1. [[email protected] ~]# vim /etc/resolv.conf
  2. nameserver 192.168.4.7
  3. .. ..

2)使用host命令查詢,提供目標域名作為引數

 
  1. [[email protected] ~]# host svr7.tedu.cn
  2. svr7.tedu.cn has address 192.168.4.7
  3. [[email protected] ~]# host pc207.tedu.cn
  4. pc207.tedu.cn has address 192.168.4.207
  5. [[email protected] ~]# host www.tedu.cn
  6. www.tedu.cn has address 192.168.4.100

使用host測試DNS查詢結果時,如果不方便修改/etc/resolv.conf檔案,也可以採用“host 目標域名 DNS伺服器地址”形式臨時指定使用哪一臺DNS伺服器。

 
  1. [[email protected] ~]# host pc207.tedu.cn 192.168.4.7
  2. Using domain server:
  3. Name: 192.168.4.7
  4. Address: 192.168.4.7#53
  5. Aliases:
  6.  
  7. pc207.tedu.cn has address 192.168.4.207

2 案例2:特殊DNS解析

2.1 問題

沿用案例1,本例要求掌握DNS輪詢、泛域名解析的配置,實現的目標如下:

  1. 為站點 www.tedu.cn 提供DNS輪詢解析,三臺Web伺服器節點的IP地址分別為:192.168.4.100、192.168.4.110、192.168.4.120
  2. 配置泛域名解析實現以下解析記錄:任意名稱.tedu.cn ---> 119.75.217.56

2.2 方案

DNS輪詢:FQDN ---> IP地址1、IP地址2、.. ..

泛域名解析(站點名不確定):多個FQDN ---> 一個IP地址

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:配置DNS輪詢

1)修改DNS伺服器上tedu.cn區域的地址庫檔案,在末尾新增輪詢地址記錄

 
  1. [[email protected] ~]# vim /var/named/tedu.cn.zone
  2. .. ..
  3. www        A    192.168.4.100
  4. www        A    192.168.4.110
  5. www        A    192.168.4.120

2)重啟系統服務named

 
  1. [[email protected] named]# systemctl restart named

3)在客戶機pc207上測試輪詢記錄

針對目標www.tedu.cn執行多次查詢,觀察第1條結果的變化:

 
  1. [[email protected] ~]# host www.tedu.cn
  2. www.tedu.cn has address 192.168.4.100         //第1個結果為192.168.4.100
  3. www.tedu.cn has address 192.168.4.110
  4. www.tedu.cn has address 192.168.4.120
  5.  
  6. [[email protected] ~]# host www.tedu.cn
  7. www.tedu.cn has address 192.168.4.120         //第1個結果為192.168.4.120
  8. www.tedu.cn has address 192.168.4.110
  9. www.tedu.cn has address 192.168.4.100
  10.  
  11. [[email protected] ~]# host www.tedu.cn
  12. www.tedu.cn has address 192.168.4.110         //第1個結果為192.168.4.110
  13. www.tedu.cn has address 192.168.4.120
  14. www.tedu.cn has address 192.168.4.100

步驟二:配置多對一的泛域名解析

1)修改DNS伺服器上指定區域的地址庫檔案,在末尾新增*通配地址記錄

 
  1. [[email protected] ~]# vim /var/named/tedu.cn.zone
  2. .. ..
  3. * A 119.75.217.56

2)重啟系統服務named

 
  1. [[email protected] named]# systemctl restart named

3)在客戶機pc207上測試多對一的泛域名解析記錄

當查詢未知站點(地址庫中沒有明確記錄)時,以 * 對應的IP地址反饋:

 
  1. [[email protected] ~]# host station123.tedu.cn
  2. station123.tedu.cn has address 119.75.217.56
  3. [[email protected] ~]# host movie.tedu.cn
  4. movie.tedu.cn has address 119.75.217.56
  5. [[email protected] ~]# host tts8.tedu.cn
  6. tts8.tedu.cn has address 119.75.217.56

3 案例3:配置DNS子域授權

3.1 問題

沿用案例1,本例要求為上下級兩個DNS區域建立父子關聯,實現客戶機向父DNS也可以查詢到子域內的FQDN,基本要求如下:

  1. 構建父DNS(tedu.cn)伺服器
  2. 構建子DNS(bj.tedu.cn)伺服器
  3. 在父DNS上配置子域授權
  4. 測試子域授權查詢

3.2 方案

為一個DNS區域新增授權子域時,需要修改此區域的地址庫,新增以下記錄:

 
  1. 子域域名.         IN NS     子DNS的FQDN.
  2. 子DNS的FQDN.     IN A        子DNS的IP地址

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:構建父DNS(tedu.cn)伺服器

1)將svr7配置為父DNS伺服器,確認配置

主配置檔案/etc/named.conf:

 
  1. [[email protected] ~]# viim /etc/named.conf
  2. options {
  3.      directory "/var/named";
  4. };
  5. zone "tedu.cn" {
  6.      type master;
  7.      file "tedu.cn.zone";
  8. };
  9. .. ..

正向地址庫檔案:

 
  1. [[email protected] ~]# vim /var/named/tedu.cn.zone
  2. $TTL 1D
  3. @    IN SOA    @ rname.invalid. (
  4.                     0    ; serial
  5.                     1D    ; refresh
  6.                     1H    ; retry
  7.                     1W    ; expire
  8.                     3H )    ; minimum
  9. @        NS    svr7.tedu.cn.
  10. svr7        A    192.168.4.7
  11. pc207    A    192.168.4.207
  12. www        A    192.168.4.100
  13. .. ..

確保服務已啟用:

 
  1. [[email protected] ~]# systemctl restart named

2)測試 —— 向父DNS可成功查詢到父區域中的站點

 
  1. [[email protected] ~]# host www.tedu.cn 192.168.4.7
  2. Using domain server:
  3. Name: 192.168.4.7
  4. Address: 192.168.4.7#53
  5. Aliases:
  6.  
  7. www.tedu.cn has address 192.168.4.100
  8. .. ..

步驟二:構建子DNS(bj.tedu.cn)伺服器

1)將pc207配置為子DNS伺服器,確認配置

安裝軟體包bind、bind-chroot:

 
  1. [[email protected] ~]# yum -y install bind bind-chroot
  2. .. ..

建立主配置檔案/etc/named.conf:

 
  1. [[email protected] ~]# mv /etc/named.conf /etc/named.conf.origin     //備份預設配置
  2. [[email protected] ~]# vim /etc/named.conf                             //建立新配置
  3. options {
  4. directory "/var/named";
  5. };
  6. zone "bj.tedu.cn" {                             //定義子DNS的正向區域
  7. type master;
  8. file "bj.tedu.cn.zone";
  9. };

建立地址庫配置檔案:

 
  1. [[email protected] ~]# cd /var/named/                             //進地址庫目錄
  2. [[email protected] named]# cp -p named.localhost tedu.cn.zone     //參考範本建地址庫檔案
  3. [[email protected] named]# vim bj.tedu.cn.zone                     //修訂地址庫記錄
  4. $TTL 1D                                         //檔案開頭部分可保持不改
  5. @ IN SOA @ rname.invalid. (
  6. 0 ; serial
  7. 1D ; refresh
  8. 1H ; retry
  9. 1W ; expire
  10. 3H ) ; minimum
  11. @ NS pc207.bj.tedu.cn.                     //本區域DNS伺服器的FQDN
  12. pc207 A 192.168.4.207                     //為NS主機提供A記錄
  13. www A 1.2.3.4                             //新增測試記錄 www.bj.tedu.cn

2)啟動系統服務named,並設定開機自啟

 
  1. [[email protected] named]# systemctl restart named
  2. [[email protected] named]# systemctl enable named
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

3)測試 —— 向子DNS可成功查詢到子區域中的站點

 
  1. [[email protected] ~]# host www.bj.tedu.cn 192.168.4.207
  2. Using domain server:
  3. Name: 192.168.4.207
  4. Address: 192.168.4.207#53
  5. Aliases:
  6.  
  7. www.bj.tedu.cn has address 1.2.3.4

步驟三:在父DNS上配置子域授權

1)測試 —— 未配置子域授權時,向父DNS無法正確查詢到子區域中的站點

若父DNS配置有 * 泛域名,則反饋的結果為對應的IP地址119.75.217.56,而不是子DNS中記錄的1.2.3.4:

 
  1. [[email protected] ~]# host www.bj.tedu.cn 192.168.4.7
  2. Using domain server:
  3. Name: 192.168.4.7
  4. Address: 192.168.4.7#53
  5. Aliases:
  6.  
  7. www.bj.tedu.cn has address 119.75.217.56

若父DNS未配置有 * 泛域名,則找不到解析結果(not found):

 
  1. [[email protected] ~]# host www.bj.tedu.cn 192.168.4.7
  2. Using domain server:
  3. Name: 192.168.4.7
  4. Address: 192.168.4.7#53
  5. Aliases:
  6.  
  7. Host www.bj.tedu.cn not found: 3(NXDOMAIN)

2)修改父DNS區域tedu.cn的地址庫,新增授權子域資訊

 
  1. [[email protected] ~]# vim /var/named/tedu.cn.zone
  2. .. ..
  3. bj.tedu.cn. NS     pc207.bj.tedu.cn.             //子區域及子DNS主機名
  4. pc207.bj.tedu.cn. A     192.168.4.207                 //子DNS的IP地址
  5.  
  6. [[email protected] named]# systemctl restart named             //重啟服務

步驟四:測試子域授權查詢

測試 —— 成功配置子域授權以後,向父DNS可以正確查詢到子區域中的站點:

 
  1. [[email protected] ~]# host www.bj.tedu.cn 192.168.4.7
  2. Using domain server:
  3. Name: 192.168.4.7
  4. Address: 192.168.4.7#53
  5. Aliases:
  6.  
  7. www.bj.tedu.cn has address 1.2.3.4

4 案例4:搭建並測試快取DNS

4.1 問題

本例要求熟悉快取DNS的工作過程,準備一臺可上網的RHEL7虛擬機器,並完成下列任務:

  1. 安裝 bind、bind-chroot 包
  2. 搭建並測試基於全域性轉發器的快取DNS

注意:若所在機房不具備訪問網際網路DNS條件,此案例改由學員自行在家完成。

4.2 方案

權威/官方DNS伺服器的特點:

  • 至少管理一個DNS區域,,需要IANA等官方機構授權
  • 典型應用:根域DNS、一級域DNS、二級域DNS、三級域DNS、.. ..

快取DNS伺服器的特點:

  • 不需要管理任何DNS區域,但是能夠替客戶機查詢,而且通過快取、複用查詢結果來加快響應速度
  • 典型應用:ISP服務商、企業區域網

快取DNS伺服器的解析記錄來源:

  • 方式1:全域性轉發:將請求轉發給指定的公共DNS(其他快取DNS),請求遞迴服務
  • 方式2:根域迭代:依次向根、一級、二級……域的DNS伺服器迭代

4.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:為虛擬機器pc207提供上網條件

1)為虛擬機器新增一塊新的網絡卡,選擇NAT或Bridge模式

若選擇NAT模式(地址轉換),則新加網絡卡的上網引數由虛擬化平臺自動設定。

若選擇Bridge模式(橋接),則新加網絡卡的上網引數需要參考真實網路的主機,必要時請網路管理員提供支援。

此處所列地址資訊可幫助大家理解上網條件,但不作為練習的配置依據:

 
  1. [[email protected] ~]# ifconfig eth1                     //檢查新增網絡卡的IP地址
  2. eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  3. inet 192.168.70.129 netmask 255.255.255.0 broadcast 192.168.70.255
  4. .. ..
  5. [[email protected] ~]# route -n                         //確認已配好預設閘道器
  6. Kernel IP routing table
  7. Destination Gateway Genmask Flags Metric Ref Use Iface
  8. 0.0.0.0 192.168.70.2 0.0.0.0 UG 100 0 0 eth1
  9. 192.168.70.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
  10. .. ..
  11. [[email protected] ~]# cat /etc/resolv.conf             //確認第一DNS為外部可用DNS地址
  12. nameserver 192.168.70.2
  13. .. ..

2)確保從主機pc207可訪問到外部DNS

訪問預設DNS可用(本機正常連網需要):

 
  1. [[email protected] ~]# host www.qq.com
  2. www.qq.com has address 111.30.132.101
  3. www.qq.com has IPv6 address 240e:e1:8100:28::2:16

訪問指定DNS可用(全域性轉發的前提條件):

 
  1. [[email protected] ~]# host www.qq.com 202.106.0.20     //國內公共DNS伺服器之一
  2. Using domain server:
  3. Name: 202.106.0.20
  4. Address: 202.106.0.20#53
  5. Aliases:
  6.  
  7. www.qq.com has address 111.30.132.101
  8. www.qq.com is an alias for qq.com.edgesuite.net.
  9. qq.com.edgesuite.net is an alias for a1574.b.akamai.net.
  10. www.qq.com is an alias for qq.com.edgesuite.net.
  11. qq.com.edgesuite.net is an alias for a1574.b.akamai.net.

步驟二:將pc207配置為快取DNS(全域性轉發式)

1)安裝bind、bind-chroot軟體包

 
  1. [[email protected] ~]# yum -y install bind bind-chroot
  2. .. ..

2)建立主配置檔案/etc/named.conf

當收到來自客戶機的DNS查詢請求時,轉發到外網的其他DNS伺服器

 
  1. [[email protected] ~]# vim /etc/named.conf
  2. options {
  3. forwarders { 202.106.0.20; };
  4. };

3)啟動系統服務named,並設定開機自啟

 
  1. [[email protected] ~]# systemctl restart named
  2. [[email protected] ~]# systemctl enable named

4)可向快取DNS伺服器pc207查詢到公共域名(百度、網易等站點)

 
  1. [[email protected] ~]# host www.baidu.com 192.168.4.207         //查百度的站點IP
  2. Using domain server:
  3. Name: 192.168.4.207
  4. Address: 192.168.4.207#53
  5. Aliases:
  6.  
  7. www.baidu.com is an alias for www.a.shifen.com.
  8. www.a.shifen.com has address 111.13.100.92
  9. www.a.shifen.com has address 111.13.100.91
  10.  
  11. [[email protected] ~]# host www.163.com 192.168.4.207             //查網易的站點IP
  12. Using domain server:
  13. Name: 192.168.4.207
  14. Address: 192.168.4.207#53
  15. Aliases:
  16.  
  17. www.163.com is an alias for www.163.com.lxdns.com.
  18. www.163.com.lxdns.com is an alias for 163.xdwscache.ourglb0.com.
  19. 163.xdwscache.ourglb0.com has address 111.11.31.104
  20. 163.xdwscache.ourglb0.com has address 111.11.31.114