域名系統 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.1
www.magedu.org. IN A 2.2.2.2
mx1.magedu.org. IN A 3.3.3.3
mx2.magedu.org. IN A 4.4.4.4
$GENERATE 1-254 HOST$ IN A 1.2.3.$
*.magedu.org. IN A 5.5.5.5
magedu.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.1
ns2.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.1
ns2.magedu.org. IN A 3.3.3.2
ns3.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 ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 172.16.100.11 ns2 IN A 172.16.100.12 mx1 IN A 172.16.100.13 mx2 IN A 172.16.100.14 websrv IN A 172.16.100.11 websrv IN A 172.16.100.12 www IN CNAME websrv
4.2 主配置文件語法檢查
named-checkconf
4.3 解析庫文件語法檢查
named-checkzone "magedu.org" /var/named/magedu.org.zone
4.4 配置生效
rndc reload
systemctl reload named
service 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 @SERVER
dig -t axfr magedu.org @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net
4.5.2 host命令
命令格式:
host [-t type] name [SERVER]
范例
host -t NS magedu.org 172.16.0.1
host -t soa magedu.org
host -t mx magedu.org
host -t axfr magedu.org
host 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 COMMAND
COMMAND:
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.8
web服務器:192.168.8.7
DNS客戶端: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.zone
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042210 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master 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.zone
systemctl 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-eth0
DNS1=192.168.8.8
#centos7 以上版執行現下面命令生效
nmcli con reload
nmcli con up eth0
#centos 6 執行下面命令生效
service network restart
#有以下記錄,算是成功
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.23.129
#測試網頁,能顯示就是成功
curl www.magedu.org
www.magedu.org
4.7 允許動態更新
動態更新:可以通過遠程更新區域數據庫的資源記錄
實現動態更新,需要在指定的zone語句塊中:
Allow-update {any;};
范例:
chmod 770 /var/named
setsebool -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.1
ls -l /var/named/magedu.org.zone.jnl
cat /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.8
DNS從服務器:192.168.8.18
web服務器:192.168.8.7
DNS客戶端:192.168.8.6
6.3.3 前提準備
關閉SElinux
關閉防火墻
時間同步
6.3.4 實現步驟
6.3.4.1 主DNS服務端配置(參看前面案例)
yum install bind -y
vim /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.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 slave
master A 192.168.8.8
slave A 192.168.8.18
systemctl start named #第一次啟動服務
rndc reload #不是第一次啟動服務
6.3.4.2 從DNS服務器配置
yum install bind -y
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#不允許其它主機進行區域傳輸
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "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-eth0
DNS1=主服務器
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.1
ns2.shanghai.magedu.org. IN A 1.1.1.2
ns1.shenzhen.magedu.org. IN A 1.1.1.3
ns2.shenzhen.magedu.org. IN A 1.1.1.4
7.2 范例:實現DNS父域和子域服務
7.2.1 實驗目的
搭建DNS父域和子域服務器
7.2.2 環境要求
需要五臺主機
DNS父域服務器:192.168.8.8
DNS子域服務器:192.168.8.18
父域的web服務器:192.168.8.7,www.magedu.org
子域的web服務器:192.168.8.17,www.shanghai.magedu.org
DNS客戶端:192.168.8.6
7.2.3 前提準備
關閉SElinux
關閉防火墻
時間同步
7.2.3 實現步驟
7.2.3.1 在父域DNS服務器上實現主magedu.org域的主DNS服務
yum install bind -y
vim /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.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
shanghai NS shanghains
master A 192.168.8.8
shanghains A 192.168.8.18
websrv A 192.168.8.7
www CNAME websrv
systemctl start named #第一次啟動服務
rndc reload #不是第一次啟動服務
7.2.3.2 實現子域的DNS服務器
yum install bind -y
vim /etc/named.conf
#注釋掉下面兩行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "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.zone
vim /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 master
master A 192.168.8.18
websrv A 192.168.8.7
www CNAME websrv
systemctl 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.org
www.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.8
DNS主服務器:192.168.8.18
web服務器:192.168.8.7
DNS客戶端:192.168.8.6
8.3.3 前提準備
關閉SElinux
關閉防火墻
時間同步
8.3.4 實現步驟
8.3.4.1 實現轉發(只緩存)DNS服務器
yum install bind -y
vim /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 -y
vim /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.zone
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.8.18
websrv A 192.168.8.7
www CNAME websrv
systemctl 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/16
web服務器2:192.168.8.7/24
web服務器3:172.16.0.7/16
DNS客戶端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/16
ip a
1: 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 forever
2: 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 forever
3: 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 -y
vim /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; };
#其它略
# 創建view
view 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.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
vim /etc/named.rfc1912.zones.other
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.other";
};
chgrp named /etc/named.rfc1912.zones.bj
chgrp named /etc/named.rfc1912.zones.sh
chgrp named /etc/named.rfc1912.zones.other
9.4.4.4 創建區域數據庫文件
vim /var/named/magedu.org.zone.bj
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.8.8
websrv A 192.168.8.7
www CNAME websrv
vim /var/named/magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.8.8
websrv A 172.16.0.7
www CNAME websrv
vim /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 master
master A 192.168.8.8
websrv A 127.0.0.1
www CNAME websrv
chgrp named /var/named/magedu.org.zone.bj
chgrp named /var/named/magedu.org.zone.sh
chgrp named /var/named/magedu.org.zone.other
systemctl 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.html
systemctl start httpd
#在web服務器2:192.168.8.7/16
echo www.magedu.org in Beijing > /var/www/html/index.html
systemctl start httpd
#在web服務器3:172.16.0.7/16
yum install httpd
echo www.magedu.org in Shanghai > /var/www/html/index.html
systemctl start httpd
9.4.4.6 客戶端測試
#分別在三臺主機上訪問
#DNS客戶端1:192.168.8.6/24 實現,確保DNS指向192.168.8.8
curl www.magedu.org
www.magedu.org in Beijing
#DNS客戶端2:172.16.0.6/16 實現,確保DNS指向172.16.0.8
curl www.magedu.org
www.magedu.org in Shanghai
#DNS客戶端3:192.168.8.8 實現,,確保DNS指向127.0.0.1
curl www.magedu.org
www.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/24
org域DNS服務器:192.168.8.38/24
magedu.org域主DNS服務器:192.168.8.48/24
magedu.org域從DNS服務器:192.168.8.58/24
www.magedu.org的WEB服務器:192.168.8.68/24
11.3 前提準備
關閉SElinux
關閉防火墻
時間同步
11.4 實現步驟
11.4.1 各種主機的網絡配置(參看上面的環境要求)
#在客戶端配置DNS服務器地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.8.6
NETMASK=255.255.255.0
DNS1=192.168.8.8
ONBOOT=yes
service network restart
11.4.2 實現WEB服務
#在web服務器192.168.8.68/24上實現
yum install httpd
echo www.magedu.org > /var/www/html/index.html
systemctl start httpd
11.4.3 實現magedu.org域的主DNS服務器
#在magedu.org域主DNS服務器192.168.8.48/24上實現
yum install bind -y
vim /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 slave
master A 192.168.8.48
slave A 192.168.8.58
www A 192.168.8.68
chgrp 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 -y
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#不允許其它主機進行區域傳輸
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "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.thecarconnectin.com/33973.html
網友評論comments