域名系統 DNS
本章內容
-名字決議介紹
-DNS服務作業原理
-實作主服務器
-實作反向決議區域
-實作從服務器
-實作子域
-實作轉發
-實作智能DNS
-DNS排錯
-實作Internet 的DNS構架
1 名字決議介紹和DNS
當前TCP/IP網路中的設備之間進行通信,是利用和依賴于IP地址實作的,但數字形式的IP地址是很難記憶的,當網路設備眾多,想要記住每個設備的IP地址,可以說是“不可能完成的任務”,那么如何解決這一難題呢?我們可以給每個網路設備起一個友好的名稱,如:www.magedu.org,這種由文字組成的名稱,顯而易見要更容易記憶,但是計算機不會理解這種名稱的,我們可以利用一種名字決議服務將名稱轉化成(決議)成IP地址,從而我們就可以利用名稱來直接訪問網路中設備了,而實作此服務的方法是多樣的,如下面所述:
本地名稱決議組態檔:hosts
Linux: /etc/hosts
windows: %WINDIR%/system32/drivers/etc/hosts
122.10.117.2 www.magedu.org
93.46.8.89 www.google.com
DNS:Domain Name System 域名系統,應用層協議,是互聯網的一項服務,它作為將域名和IP地址相互映射的一個分布式資料庫,能夠使人更方便地訪問互聯網
基于C/S架構,服務器端:53/udp, 53/tcp
BIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的DNS軟體實作
1.1 DNS域名結構

- 根域
- 一級域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,arpa
三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域 - 二級域名:magedu.com
- 三級域名:study.magedu.com
- 最多可達到127級域名
ICANN(The Internet Corporation for Assigned Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統的管理
1.2 DNS服務作業原理

1.3 DNS查詢型別
- 遞回查詢:最終結果,負責到底
- 迭代查詢:最好結果,不負責到底
1.4 名稱服務器
Name Server,域內負責決議本域內的名稱的DNS服務器
根名稱服務器:13組負責決議根域的DNS服務器
1.5 決議型別
-
FQDN –> IP 正向決議
-
IP –> FQDN 反向決議
注意:正反向決議是兩個不同的名稱空間,是兩棵不同的決議樹
1.6 完整的查詢請求經過的流程
Client -->hosts檔案 --> Client DNS Service Local Cache --> DNS Server (recursion) --> DNS Server Cache -->iteration(迭代) --> 根--> 頂級域名DNS-->二級域名DNS…
2 DNS 服務相關概念和技術
2.1 DNS服務器的型別
主DNS服務器
從DNS服務器
快取DNS服務器(轉發器)
2.1.1 主DNS服務器
管理和維護所負責決議的域內決議庫的服務器
2.1.2 從DNS服務器
從主服務器或從服務器“復制”(區域傳輸)決議庫副本
- 序列號:決議庫版本號,主服務器決議庫變化時,其序列遞增
- 重繪時間間隔:從服務器從主服務器請求同步決議的時間間隔
- 重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
- 過期時長:從服務器聯系不到主服務器時,多久后停止服務
- 通知機制:主服務器決議庫發生變化時,會主動通知從服務器
2.2 區域傳輸
完全傳輸:傳送整個決議庫
增量傳輸:傳遞決議庫變化的那部分內容
2.3 決議形式
正向:FQDN( Fully Qualified Domain Name) --> IP
反向: IP --> FQDN
2.4 負責本地域名的正向和反向決議庫
正向區域
? 反向區域
2.5 決議答案
肯定答案:存在對應的查詢結果
否定答案:請求的條目不存在等原因導致無法回傳結果
權威答案:直接由存有此查詢結果的DNS服務器(權威服務器)回傳的答案
非權威答案:由其它非權威服務器回傳的查詢答案
2.6 各種資源記錄
區域決議庫:由眾多RR組成:
資源記錄:Resource Record, RR
記錄型別:A, AAAA, PTR, SOA, NS, CNAME, MX
-
SOA:Start Of Authority,起始授權記錄;一個區域決議庫有且僅能有一個SOA記錄,必須位于決議庫的第一條記錄
-
A:internet Address,作用,FQDN –> IP
-
AAAA:FQDN –> IPv6
-
PTR:PoinTeR,IP –> FQDN
-
NS:Name Server,專用于標明當前區域的DNS服務器
-
CNAME : Canonical Name,別名記錄
-
MX:Mail eXchanger,郵件交換器
-
TXT:對域名進行標識和說明的一種方式,一般做驗證記錄時會使用此項,如:SPF(反垃圾郵件)記錄,https驗證等,如下示例:
_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
2.6.1 資源記錄定義的格式
name [TTL] IN rr_type value
注意:
- TTL可從全域繼承
- 使用 “@” 符號可用于參考當前區域的名字
- 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式回應
- 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機
2.6.2 SOA記錄
name: 當前區域的名字,例如“magedu.org.”
value: 有多部分組成
注意:
- 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字
- 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換
例如:admin.magedu.org - 主從服務區域傳輸相關定義以及否定的答案的統一的TTL
范例:
magedu.org. 86400 IN SOA ns.magedu.org. nsadmin.magedu.org. (
2015042201 ;序列號
2H ;重繪時間
10M ;重試時間
1W ;過期時間
1D ;否定答案的TTL值
)
2.6.3 NS記錄
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns.magedu.org.
注意:
- 相鄰的兩個資源記錄的name相同時,后續的可省略
- 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄
- 一個區域可以有多個NS記錄
范例:
magedu.org. IN NS ns1.magedu.org.
magedu.org. IN NS ns2.magedu.org.
2.6.4 MX記錄
name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名
注意:
- 一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高
- 對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄
范例:
magedu.org. IN MX 10 mx1.magedu.org.
IN MX 20 mx2.magedu.org.
2.6.5 A記錄
name: 某主機的FQDN,例如:www.magedu.org.
value: 主機名對應主機的IP地址
避免用戶寫錯名稱時給錯誤答案,可通過泛域名決議進行決議至某特定地址
范例:
www.magedu.org. IN A 1.1.1.1www.magedu.org. IN A 2.2.2.2mx1.magedu.org. IN A 3.3.3.3mx2.magedu.org. IN A 4.4.4.4GENERATE 1-254 HOST IN A 1.2.3.$*.magedu.org. IN A 5.5.5.5magedu.org. IN A 6.6.6.6
范例:阿里云

2.6 6 AAAA記錄
name: FQDN
? value: IPv6
2.6.7 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.org.#如1.2.3為網路地址,可簡寫成:4 IN PTR www.magedu.org.
2.6.8 CNAME別名記錄
name: 別名的FQDN
? value: 真正名字的FQDN
例如:
www.magedu.org. IN CNAME websrv.magedu.org.
2.7 子域授權
每個域的名稱服務器,都是通過其上級名稱服務器在決議庫進行授權,類似根域授權tld
glue record:粘合記錄,父域授權子域的記錄
范例:
.com. IN NS ns1.com..com. IN NS ns2.com.ns1.com. IN A 2.2.2.1ns2.com. IN A 2.2.2.2#magedu.org. 在.com的名稱服務器上,決議庫中添加資源記錄magedu.org. IN NS ns1.magedu.org.magedu.org. IN NS ns2.magedu.org.magedu.org. IN NS ns3.magedu.org.ns1.magedu.org. IN A 3.3.3.1ns2.magedu.org. IN A 3.3.3.2ns3.magedu.org. IN A 3.3.3.3
2.8 互聯網域名
-
域名注冊
代理商:萬網, 新網, godaddy
-
注冊完成以后,想自己用專用服務來決議
管理后臺:把NS記錄指向的服務器名稱,和A記錄指向的服務器地址

3 DNS軟體bind
DNS服務器軟體:bind,powerdns,unbound
3.1 BIND相關程式包
yum list all bind*
- bind:服務器
- bind-libs:相關庫
- bind-utils: 客戶端
- bind-chroot: 安全包,將dns相關檔案放至 /var/named/chroot/
范例:安裝bind軟體
[root@centos8 ~]#dnf -y install bind bind-utils
3.2 BIND包相關檔案
-
BIND主程式:/usr/sbin/named
-
服務腳本和Unit名稱:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
-
主組態檔:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
-
管理工具:/usr/sbin/rndc:remote name domain controller,默認與bind安裝在同一主機,且只能通過127.0.0.1連接named行程,提供輔助性的管理功能;953/tcp
-
決議庫檔案:/var/named/ZONE_NAME.ZONE
注意:
(1) 一臺物理服務器可同時為多個區域提供決議
(2) 必須要有根區域檔案;named.ca
(3) 應該有兩個(如果包括ipv6的,應該更多)實作localhost和本地回環地址的決議庫
3.3 主組態檔
- 全域配置:options {};
- 日志子系統配置:logging {};
- 區域定義:本機能夠為哪些zone進行決議,就要定義哪些zone
zone “ZONE_NAME” IN {};
注意:
- 任何服務程式如果期望其能夠通過網路被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上
- 快取名稱服務器的配置:監聽外部地址即可
- dnssec: 建議關閉dnssec,設為no
4 實作主DNS服務器
4.1 主DNS服務器配置
-
在主組態檔中定義區域
vim /etc/named.conf #注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };zone "ZONE_NAME" IN {type {master|slave|hint|forward};file "ZONE_NAME.zone";}; -
定義區域決議庫檔案
? 出現的內容
? 宏定義
? 資源記錄范例:區域資料庫
$TTL 86400$ORIGIN magedu.org.@ IN SOA ns1.magedu.org. admin.magedu.org ( 2015042201 1H 5M 7D 1D )IN NS ns1IN NS ns2IN MX 10 mx1IN MX 20 mx2ns1 IN A 172.16.100.11ns2 IN A 172.16.100.12mx1 IN A 172.16.100.13mx2 IN A 172.16.100.14websrv IN A 172.16.100.11websrv IN A 172.16.100.12www IN CNAME websrv
4.2 主組態檔語法檢查
named-checkconf
4.3 決議庫檔案語法檢查
named-checkzone "magedu.org" /var/named/magedu.org.zone
4.4 配置生效
rndc reload systemctl reload namedservice named reload
4.5 測驗和管理工具
4.5.1 dig 命令
dig只用于測驗dns系統,不會查詢hosts檔案進行決議
命令格式:
dig [-t type] name [@SERVER] [query options]query options: +[no]trace:跟蹤決議程序 : dig +trace magedu.org +[no]recurse:進行遞回決議
范例:
#測驗反向決議dig -x IP = dig –t ptr reverseip.in-addr.arpa#模擬區域傳送dig -t axfr ZONE_NAME @SERVERdig -t axfr magedu.org @10.10.10.11dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1dig -t NS . @114.114.114.114dig -t NS . @a.root-servers.net
4.5.2 host命令
命令格式:
host [-t type] name [SERVER]
范例
host -t NS magedu.org 172.16.0.1host -t soa magedu.orghost -t mx magedu.orghost -t axfr magedu.orghost 1.2.3.4
4.5.3 nslookup命令
nslookup 可以支持互動和非互動式兩種方式執行
全令格式:
nslookup [-option] [name | -] [server]
互動式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢
set q=RR_TYPE: 指明查詢的資源記錄型別
NAME: 要查詢的名稱
4.5.4 rndc 命令
利用rndc工具可以實作管理DNS功能
rndc 監聽埠: 953/tcp
命令格式:
rndc COMMANDCOMMAND: status: 查看狀態 reload: 多載主組態檔和區域決議庫檔案 reload zonename: 多載區域決議庫檔案 retransfer zonename: 手動啟動區域傳送,而不管序列號是否增加 notify zonename: 重新對區域傳送發通知 reconfig: 多載主組態檔 querylog: 開啟或關閉查詢日志檔案/var/log/message trace: 遞增debug一個級別 trace LEVEL: 指定使用的級別 notrace:將除錯級別設定為 0 flush:清空DNS服務器的所有快取記錄
4.6 實戰案例:實作DNS正向主服務器
4.6.1 實驗目的
搭建DNS正向主服務器,實作web服務器基于FQDN的訪問
4.6.2 環境要求
需要三臺主機DNS服務端:192.168.8.8web服務器:192.168.8.7DNS客戶端:192.168.8.6
4.6.3 前提準備
關閉SElinux關閉防火墻時間同步
4.6.4 實作步驟
4.6.4.1 在DNS服務端安裝bind
yum install bind -y
4.6.4.2 修改bind 組態檔
vim /etc/named.conf #注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };vim /etc/named.rfc1912.zones #加上下面內容zone "magedu.org" IN { type master; file "magedu.org.zone";};
4.6.4.3 DNS區域資料庫檔案
cp -p /var/named/named.localhost /var/named/magedu.org.zone#如果沒有加-p選項,需要修改所有者或權限,chgrp named magedu.org.zonevim /var/named/magedu.org.zone $TTL 1D@ IN SOA master admin.magedu.org. ( 2019042210 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.8 www A 192.168.8.7
4.6.4.4 檢查組態檔和資料庫檔案格式,并啟動服務
named-checkconf named-checkzone magedu.org /var/named/magedu.org.zonesystemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
4.6.4.5 實作WEB服務
#安裝http服務yum install httpd #配置主頁面echo www.magedu.org > /var/www/html/index.html#啟動服務systemctl start httpd
4.6.4.6 在客戶端實作測驗
vim /etc/sysconfig/network-scripts/ifcfg-eth0DNS1=192.168.8.8#centos7 以上版執行現下面命令生效nmcli con reloadnmcli con up eth0#centos 6 執行下面命令生效service network restart#有以下記錄,算是成功cat /etc/resolv.conf # Generated by NetworkManagernameserver 192.168.23.129#測驗網頁,能顯示就是成功curl www.magedu.org www.magedu.org
4.7 允許動態更新
動態更新:可以通過遠程更新區域資料庫的資源記錄
實作動態更新,需要在指定的zone陳述句塊中:
Allow-update {any;};
范例:
chmod 770 /var/namedsetsebool -P named_write_master_zones on nsupdate>server 127.0.0.1>zone magedu.org>update add ftp.magedu.org 88888 IN A 8.8.8.8>send>update delete www.magedu.org A>send #測驗dig ftp.magedu.org @127.0.0.1ls -l /var/named/magedu.org.zone.jnlcat /var/named/magedu.org.zone
5 實作反向決議區域
反向區域:即將IP反向決議為FQDN
區域名稱:網路地址反寫.in-addr.arpa.
示例:
172.16.100. --> 100.16.172.in-addr.arpa.
(1) 定義區域
zone "ZONE_NAME" IN { type {master|slave|forward}; file "網路地址.zone"};
(2) 定義區域決議庫檔案
注意:不需要MX,以PTR記錄為主
范例:
$TTL 86400$ORIGIN 8.168.192.in-addr.arpa.@ IN SOA ns1.magedu.org. admin.magedu.org. ( 2015042201 1H 5M 7D 1D ) IN NS ns1.magedu.org.11 IN PTR ns1.magedu.org.11 IN PTR www.magedu.org.12 IN PTR mx1.magedu.org.12 IN PTR www.magedu.org.13 IN PTR mx2.magedu.org.
6 實作從服務器
只有一臺主DNS服務器,存在單點失敗的問題,可以建立主DNS服務器的備份服務器,即從服務器來實作DNS服務的容錯機制,從服務器可以自動和主服務器進行單向的資料同步,從而和主DNS服務器一樣,也可以對外提供查詢服務,但從服務器不提供資料更新服務,
6.1 DNS從服務器
- 應該為一臺獨立的名稱服務器
- 主服務器的區域決議庫檔案中必須有一條NS記錄指向從服務器
- 從服務器只需要定義區域,而無須提供決議庫檔案;決議庫檔案應該放置于/var/named/slaves/目錄中
- 主服務器得允許從服務器作區域傳送
- 主從服務器時間應該同步,可通過ntp進行
- bind程式的版本應該保持一致;否則,應該從高,主低
6.2 定義從區域
格式:
zone "ZONE_NAME" IN { type slave; masters { MASTER_IP; }; file "slaves/ZONE_NAME.zone";};
6.3 實戰案例:實作DNS從服務器
6.3.1 實驗目的
搭建DNS主從服務器架構,實作DNS服務冗余
6.3.2 環境要求
需要四臺主機DNS主服務器:192.168.8.8DNS從服務器:192.168.8.18web服務器:192.168.8.7DNS客戶端:192.168.8.6
6.3.3 前提準備
關閉SElinux關閉防火墻時間同步
6.3.4 實作步驟
6.3.4.1 主DNS服務端配置(參看前面案例)
yum install bind -yvim /etc/named.conf#注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#只允許從服務器進行區域傳輸allow-transfer { 從服務器IP;}; vim /etc/named.rfc1912.zones #加上這段zone "magedu.org" { type master; file "magedu.org.zone";};cp -p /var/named/named.localhost /var/named/magedu.org.zone#如果沒有-p,需要改權限,chgrp named magedu.org.zonevim /var/named/magedu.org.zone $TTL 1D@ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master NS slavemaster A 192.168.8.8slave A 192.168.8.18systemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
6.3.4.2 從DNS服務器配置
yum install bind -yvim /etc/named.conf// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#不允許其它主機進行區域傳輸allow-transfer { none;};vim /etc/named.rfc1912.zoneszone "magedu.org" { type slave; masters { 主服務器IP;}; file "slaves/magedu.org.slave";};systemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務 ls /var/named/slaves/magedu.org.slave #查看區域資料庫檔案是否生成
6.3.4.3 客戶端測驗主從DNS服務架構
vim /etc/sysconfig/network-scripts/ifcfg-eth0DNS1=主服務器DNS2=從服務器#驗證從DNS服務器是否可以查詢dig www.magedu.org curl www.magedu.org#在主服務器上停止DNS服務systemctl stop named#驗證從DNS服務器仍然可以查詢dig www.magedu.org curl www.magedu.org
7 實作子域
7.1 子域委派授權
將子域委派給其它主機管理,實作分布式DNS資料庫
正向決議區域子域方法
范例:定義兩個子域區域
shanghai.magedu.org. IN NS ns1.ops.magedu.org.shanghai.magedu.org. IN NS ns2.ops.magedu.org.shenzhen.magedu.org. IN NS ns1.shenzhen.magedu.org.shenzhen.magedu.org. IN NS ns2.shenzhen.magedu.org.ns1.shanghai.magedu.org. IN A 1.1.1.1ns2.shanghai.magedu.org. IN A 1.1.1.2ns1.shenzhen.magedu.org. IN A 1.1.1.3ns2.shenzhen.magedu.org. IN A 1.1.1.4
7.2 范例:實作DNS父域和子域服務
7.2.1 實驗目的

搭建DNS父域和子域服務器
7.2.2 環境要求
需要五臺主機DNS父域服務器:192.168.8.8DNS子域服務器:192.168.8.18父域的web服務器:192.168.8.7,www.magedu.org子域的web服務器:192.168.8.17,www.shanghai.magedu.orgDNS客戶端:192.168.8.6
7.2.3 前提準備
關閉SElinux關閉防火墻時間同步
7.2.3 實作步驟
7.2.3.1 在父域DNS服務器上實作主magedu.org域的主DNS服務
yum install bind -yvim /etc/named.conf#注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#只允許從服務器進行區域傳輸allow-transfer { 從服務器IP;}; dnssec-enable no; dnssec-validation no;vim /etc/named.rfc1912.zones #加上這段zone "magedu.org" { type master; file "magedu.org.zone";};cp -p /var/named/named.localhost /var/named/magedu.org.zone#如果沒有-p,需要改權限,chgrp named magedu.org.zonevim /var/named/magedu.org.zone $TTL 1D@ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastershanghai NS shanghainsmaster A 192.168.8.8shanghains A 192.168.8.18 websrv A 192.168.8.7 www CNAME websrvsystemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
7.2.3.2 實作子域的DNS服務器
yum install bind -yvim /etc/named.conf #注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };allow-transfer { none;}; vim /etc/named.rfc1912.zoneszone "shanghai.magedu.org" { type master; file "shanghai.magedu.org.zone";};cp -p /var/named/named.localhost /var/named/shanghai.magedu.org.zone#如果沒有-p,需要改權限,chgrp named magedu.org.zonevim /var/named/shanghai.magedu.org.zone $TTL 1D@ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.18websrv A 192.168.8.7www CNAME websrvsystemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
7.2.3.4 在父域和子域的web服務器上安裝httpd服務
#父域的web服務器利用上面案例(略)#在子域的web服務器上安裝http服務yum install httpd #配置主頁面echo www.shanghai.magedu.org > /var/www/html/index.html#啟動服務systemctl start httpd
7.2.3.4 客戶端測驗
dig www.shanghai.magedu.orgwww.shanghai.magedu.org
8 實作DNS轉發(快取)服務器
8.1 DNS轉發
利用DNS轉發,可以將用戶的DNS請求,轉發至指定的DNS服務,而非默認的根DNS服務器,并將指定服務器查詢的回傳結果進行快取,提高效率,
注意:
-
被轉發的服務器需要能夠為請求者做遞回,否則轉發請求不予進行
-
在全域配置塊中,關閉dnssec功能
dnssec-enable no;dnssec-validation no;
8.2 轉發方式
8.2.1 全域轉發:
對非本機所負責決議區域的請求,全轉發給指定的服務器
在全域配置塊中實作:
Options { forward first|only; forwarders { ip;};};
8.2.2 特定區域轉發
僅轉發對特定的區域的請求,比全域轉發優先級高
zone "ZONE_NAME" IN { type forward; forward first|only; forwarders { ip;};};
first:先轉發至指定DNS服務器,如果無法決議查詢請求,則本服務器再去根服務器查詢
only: 先轉發至指定DNS服務器,如果無法決議查詢請求,則本服務器將不再去根服務器查詢
8.3 實戰案例:實作DNS forward(快取)服務器
8.3.1 實驗目的
搭建DNS轉發(快取)服務器
8.3.2 環境要求
需要四臺主機DNS只快取服務器:192.168.8.8DNS主服務器:192.168.8.18web服務器:192.168.8.7DNS客戶端:192.168.8.6
8.3.3 前提準備
關閉SElinux關閉防火墻時間同步
8.3.4 實作步驟
8.3.4.1 實作轉發(只快取)DNS服務器
yum install bind -yvim /etc/named.conf #注釋掉兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };forward first;forwarders { 192.168.8.18;}; #關閉dnsec功能dnssec-enable no;dnssec-validation no;systemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
8.3.4.2 實作主DNS服務器
yum install bind -yvim /etc/named.conf #注釋掉兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };vim /etc/named.rfc1912.zones #加上下面這段zone "magedu.org" { type master; file "magedu.org.zone";};cp -p /var/named/named.localhost /var/named/magedu.org.zone#如果沒有-p,需要改權限,chgrp named magedu.org.zonevim /var/named/magedu.org.zone$TTL 1D@ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.18websrv A 192.168.8.7 www CNAME websrvsystemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
8.3.4.3 web服務器配置(參看前面案例,略)
8.3.4.4 在客戶端測驗
#客戶端配置(參看前面案例,略)dig www.magedu.org curl www.magedu.org
9 實作智能DNS

9.1 GSLB
GSLB:Global Server Load Balance全域負載均衡
GSLB是對服務器和鏈路進行綜合判斷來決定由哪個地點的服務器來提供服務,實作異地服務器群服務質量的保證
GSLB主要的目的是在整個網路范圍內將用戶的請求定向到最近的節點(或者區域)
GSLB分為基于DNS實作、基于重定向實作、基于路由協議實作,其中最通用的是基于DNS決議方式
范例:查詢VIP使用網宿的CDN服務
[root@centos6 ~]#dig www.vip.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.vip.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44153;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 0;; QUESTION SECTION:;www.vip.com. IN A;; ANSWER SECTION:www.vip.com. 180 IN CNAME www.vip.com.wscdns.com.#wscdn 網宿服務商www.vip.com.wscdns.com. 60 IN A 111.206.176.92;; AUTHORITY SECTION:wscdns.com. 172800 IN NS dns2.wscdns.info.wscdns.com. 172800 IN NS dns3.wscdns.org.wscdns.com. 172800 IN NS dns4.wscdns.info.wscdns.com. 172800 IN NS dns5.cdn30.org.wscdns.com. 172800 IN NS dns1.wscdns.org.;; Query time: 1290 msec;; SERVER: 10.0.0.18#53(10.0.0.18);; WHEN: Wed Feb 12 18:05:17 2020;; MSG SIZE rcvd: 200[root@centos6 ~]#
9.2 CDN (Content Delivery Network)內容分發網路

9.2.1 CDN作業原理
- 用戶向瀏覽器輸入www.a.com這個域名,瀏覽器第一次發現本地沒有dns快取,則向網站的DNS服務器請求
- 網站的DNS域名決議器設定了CNAME,指向了www.a.tbcdn.com,請求指向了CDN網路中的智能DNS負載均衡系統
- 智能DNS負載均衡系統決議域名,把對用戶回應速度最快的IP節點回傳給用戶;
- 用戶向該IP節點(CDN服務器)發出請求
- 由于是第一次訪問,CDN服務器會通過Cache內部專用DNS決議得到此域名的原web站點IP,向原站點服務器發起請求,并在CDN服務器上快取內容
- 請求結果發給用戶
9.2.2 CDN服務商
- 服務商:阿里,騰訊,藍汛,網宿,帝聯等
- 智能DNS: dnspod dns.la
9.3 智能DNS相關技術
9.3.1 bind中ACL
acl: 把一個或多個地址歸并為一個集合,并通過一個統一的名稱呼叫
注意:只能先定義后使用;因此一般定義在組態檔中,處于options的前面
格式:
acl acl_name { ip; net/prelen; ……};
范例:
acl beijingnet { 172.16.0.0/16; 10.10.10.10;};
9.3.2 bind有四個內置的acl
- none 沒有一個主機
- any 任意主機
- localhost 本機
- localnet 本機的IP同掩碼運算后得到的網路地址
9.3.3 訪問控制的指令:
- allow-query {}: 允許查詢的主機;白名單
- allow-transfer {}:允許區域傳送的主機;白名單
- allow-recursion {}: 允許遞回的主機,建議全域使用
- allow-update {}: 允許更新區域資料庫中的內容
9.3.4 view 視圖
9.3.4.1 View:視圖,將ACL和區域資料庫實作對應關系,以實作智能DNS
- 一個bind服務器可定義多個view,每個view中可定義一個或多個zone
- 每個view用來匹配一組客戶端
- 多個view內可能需要對同一個區域進行決議,但使用不同的區域決議庫檔案
注意:
- 一旦啟用了view,所有的zone都只能定義在view中
- 僅在允許遞回請求的客戶端所在view中定義根區域
- 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端串列
9.3.4.2 view 格式
view VIEW_NAME { match-clients { beijingnet; }; zone “magedu.org” { type master; file “magedu.org.zone.bj”; }; include “/etc/named.rfc1912.zones”;};view VIEW_NAME { match-clients { shanghainet; }; zone “magedu.org” { type master; file “magedu.org.zone.sh”; }; include “/etc/named.rfc1912.zones”;};
9.4 實戰案例:利用view實作智能DNS
9.4.1 實驗目的
搭建DNS主從服務器架構,實作DNS服務冗余
9.4.2 環境要求
需要五臺主機DNS主服務器和web服務器1:192.168.8.8/24,172.16.0.8/16web服務器2:192.168.8.7/24web服務器3:172.16.0.7/16DNS客戶端1:192.168.8.6/24 DNS客戶端2:172.16.0.6/16
9.4.3 前提準備
關閉SElinux關閉防火墻時間同步
9.4.4 實作步驟
9.4.4.1 DNS 服務器的網卡配置
#配置兩個IP地址#eth0:192.168.8.8/24#eth1: 172.16.0.8/16ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:f9:8d:90 brd ff:ff:ff:ff:ff:ff inet 192.168.8.8/24 brd 192.168.8.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fef9:8d90/64 scope link valid_lft forever preferred_lft forever3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:f9:8d:11 brd ff:ff:ff:ff:ff:ff inet 172.16.0.8/16 brd 172.16.0.255 scope global noprefixroute eth1 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe11:8d90/64 scope link valid_lft forever preferred_lft forever
9.4.4.2 主DNS服務端組態檔實作view
yum install bind -yvim /etc/named.conf#在檔案最前面加下面行acl beijingnet { 192.168.8.0/24;};acl shanghainet { 172.16.0.0/16;};acl othernet { any;};#注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#其它略# 創建viewview beijingview { match-clients { beijingnet;}; include "/etc/named.rfc1912.zones.bj";};view shanghaiview { match-clients { shanghainet;}; include "/etc/named.rfc1912.zones.sh";};view otherview { match-clients { othernet;}; include "/etc/named.rfc1912.zones.other";};include "/etc/named.root.key";
9.4.4.3 實作區域組態檔
vim /etc/named.rfc1912.zones.bjzone "." IN { type hint; file "named.ca";};zone "magedu.org" { type master; file "magedu.org.zone.bj";};vim /etc/named.rfc1912.zones.shzone "." IN { type hint; file "named.ca";};zone "magedu.org" { type master; file "magedu.org.zone.sh";};vim /etc/named.rfc1912.zones.otherzone "." IN { type hint; file "named.ca";};zone "magedu.org" { type master; file "magedu.org.zone.other";};chgrp named /etc/named.rfc1912.zones.bjchgrp named /etc/named.rfc1912.zones.shchgrp named /etc/named.rfc1912.zones.other
9.4.4.4 創建區域資料庫檔案
vim /var/named/magedu.org.zone.bjTTL 1D@ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.8websrv A 192.168.8.7 www CNAME websrvvim /var/named/magedu.org.zone.shTTL 1D@ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.8websrv A 172.16.0.7 www CNAME websrvvim /var/named/magedu.org.zone.other$TTL 1D@ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS mastermaster A 192.168.8.8websrv A 127.0.0.1 www CNAME websrvchgrp named /var/named/magedu.org.zone.bjchgrp named /var/named/magedu.org.zone.shchgrp named /var/named/magedu.org.zone.othersystemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
9.4.4.5 實作位于不同區域的三個WEB服務器
#分別在三臺主機上安裝http服務#在web服務器1:192.168.8.8/24實作yum install httpd echo www.magedu.org in Other > /var/www/html/index.htmlsystemctl start httpd #在web服務器2:192.168.8.7/16echo www.magedu.org in Beijing > /var/www/html/index.htmlsystemctl start httpd #在web服務器3:172.16.0.7/16yum install httpd echo www.magedu.org in Shanghai > /var/www/html/index.htmlsystemctl start httpd
9.4.4.6 客戶端測驗
#分別在三臺主機上訪問#DNS客戶端1:192.168.8.6/24 實作,確保DNS指向192.168.8.8curl www.magedu.orgwww.magedu.org in Beijing #DNS客戶端2:172.16.0.6/16 實作,確保DNS指向172.16.0.8curl www.magedu.orgwww.magedu.org in Shanghai#DNS客戶端3:192.168.8.8 實作,,確保DNS指向127.0.0.1curl www.magedu.orgwww.magedu.org in Other
10 DNS排錯
范例:
dig A example.com; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523...
SERVFAIL:The nameserver encountered a problem while processing the query.
可使用dig +trace排錯,可能是網路和防火墻導致
NXDOMAIN:The queried name does not exist in the zone.
可能是CNAME對應的A記錄不存在導致
REFUSED:The nameserver refused the client’s DNS request due to policy restrictions.
可能是DNS策略導致
范例:
dig A example.com; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523...SERVFAIL:The nameserver encountered a problem while processing the query.
可使用dig +trace排錯,可能是網路和防火墻導致
NXDOMAIN:The queried name does not exist in the zone.
可能是CNAME對應的A記錄不存在導致
REFUSED:The nameserver refused the client’s DNS request due to policy restrictions.
可能是DNS策略導致
11 實戰案例:綜合案例,實作Internet 的DNS 服務架構
11.1 實驗目的

搭建DNS實作internet dns架構
11.2 環境要求
需要8臺主機DNS客戶端:192.168.8.6/24 本地DNS服務器(只快取):192.168.8.8/24轉發目標DNS服務器:192.168.8.18/24根DNS服務器:192.168.8.28/24org域DNS服務器:192.168.8.38/24magedu.org域主DNS服務器:192.168.8.48/24magedu.org域從DNS服務器:192.168.8.58/24www.magedu.org的WEB服務器:192.168.8.68/24
11.3 前提準備
關閉SElinux關閉防火墻時間同步
11.4 實作步驟
11.4.1 各種主機的網路配置(參看上面的環境要求)
#在客戶端配置DNS服務器地址vim /etc/sysconfig/network-scripts/ifcfg-ens33NAME=eth0DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.8.6NETMASK=255.255.255.0DNS1=192.168.8.8ONBOOT=yesservice network restart
11.4.2 實作WEB服務
#在web服務器192.168.8.68/24上實作yum install httpd echo www.magedu.org > /var/www/html/index.htmlsystemctl start httpd
11.4.3 實作magedu.org域的主DNS服務器
#在magedu.org域主DNS服務器192.168.8.48/24上實作yum install bind -yvim /etc/named.conf#注釋掉下面兩行// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#只允許從服務器進行區域傳輸allow-transfer { 從服務器IP;}; vim /etc/named.rfc1912.zones #加上這段zone "magedu.org" { type master; file "magedu.org.zone";};vim /var/named/magedu.org.zone $TTL 1D@ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master NS slavemaster A 192.168.8.48slave A 192.168.8.58www A 192.168.8.68chgrp named /var/named/magedu.org.zone systemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務
11.4.4 實作magedu.org域的從DNS服務器配置
#在magedu.org域從DNS服務器192.168.8.58/24上實作yum install bind -yvim /etc/named.conf// listen-on port 53 { 127.0.0.1; };// allow-query { localhost; };#不允許其它主機進行區域傳輸allow-transfer { none;};vim /etc/named.rfc1912.zoneszone "magedu.org" { type slave; masters { 主服務器IP;}; file "slaves/magedu.org.slave";};systemctl start named #第一次啟動服務rndc reload #不是第一次啟動服務 ls /var/named/slaves/magedu.org.slave #查看區域資料庫檔案是否生成
11.4.5 實作org域的主DNS服務器
#在org域的主DNS服務器192.168.8.38/24上實作
yum install bind -y
vim /etc/named.conf
#注釋掉兩行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
vim /etc/named.rfc1912.zones
#加上這段
zone "org" {
type master;
file "org.zone";
};
vim /var/named/org.zone
$TTL 1D
@ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3D )
NS master
magedu NS mageduns1
magedu NS mageduns2
master A 192.168.8.38
mageduns1 A 192.168.8.48
mageduns2 A 192.168.8.58
chgrp named /var/named/org.zone
systemctl start named #第一次啟動服務
rndc reload #不是第一次啟動服務
11.4.6 實作根域的主DNS服務器
#在根域的主DNS服務器192.168.8.28/24上實作
yum install bind -y
vim /etc/named.conf
#注釋掉兩行,第13行和第21行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#將下面行改為:
zone "." IN {
type master;
file "root.zone";
};
vim /var/named/root.zone
$TTL 1D
@ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3D )
NS master
org NS orgns
master A 192.168.8.28
orgns A 192.168.8.38
#安全加固
chgrp named /var/named/root.zone
chmod 640 /var/named/root.zone
systemctl start named #第一次啟動
rndc reload #不是第一次啟動
11.4.6 實作轉發目標的DNS服務器
#在轉發目標的DNS服務器192.168.8.18/24上實作
yum install bind -y
vim /etc/named.conf
#注釋掉兩行,第13行和第21行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
vim /var/named/named.ca
. 518400 IN NS a.root-servers.net.
a.root-servers.net. 3600000 IN A 192.168.8.28
systemctl start named #第一次啟動
rndc reload #不是第一次啟動
11.4.7 實作本地只快取DNS服務器
#在轉發目標的DNS服務器192.168.8.8/24上實作
yum install bind -y
vim /etc/named.conf
#注釋掉兩行,第13行和第21行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
forward only;
forwarders { 192.168.8.18;};
dnssec-enable no;
dnssec-validation no
systemctl start named #第一次啟動
rndc reload #不是第一次啟動
11.4.8 客戶端測驗
cat /etc/resolv.conf
nameserver 192.168.8.8
dig www.magedu.org
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.magedu.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40755
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.org. IN A
;; ANSWER SECTION:
www.magedu.org. 86181 IN A 192.168.8.68
;; AUTHORITY SECTION:
magedu.org. 86181 IN NS ns2.magedu.org.
magedu.org. 86181 IN NS ns1.magedu.org.
;; ADDITIONAL SECTION:
ns2.magedu.org. 86181 IN A 192.168.8.48
ns1.magedu.org. 86181 IN A 192.168.8.58
;; Query time: 1 msec
;; SERVER: 192.168.8.8#53(192.168.8.8)
;; WHEN: Fri May 10 17:28:39 CST 2019
;; MSG SIZE rcvd: 127 成功
curl www.magedu.org
www.magedu.org
參考鏈接:http://www.yunweipai.com/33973.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293280.html
標籤:其他
