Linux DNS服务配置与管理详解
域名系統 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 --> FQDN2.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注意:
2.6.2 SOA記錄
name: 當前區域的名字,例如“magedu.org.”
value: 有多部分組成
注意:
例如:admin.magedu.org
范例:
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.
注意:
范例:
magedu.org. IN NS ns1.magedu.org. magedu.org. IN NS ns2.magedu.org.2.6.4 MX記錄
name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名
注意:
范例:
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
例如:
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.32.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-utils3.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 websrv4.2 主配置文件語法檢查
named-checkconf4.3 解析庫文件語法檢查
named-checkzone "magedu.org" /var/named/magedu.org.zone4.4 配置生效
rndc reload systemctl reload namedservice named reload4.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.net4.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.44.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.64.6.3 前提準備
關閉SElinux關閉防火墻時間同步4.6.4 實現步驟
4.6.4.1 在DNS服務端安裝bind
yum install bind -y4.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.74.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 httpd4.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.org4.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.zone5 實現反向解析區域
反向區域:即將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從服務器
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.66.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.org7 實現子域
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.47.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.67.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 httpd7.2.3.4 客戶端測試
dig www.shanghai.magedu.orgwww.shanghai.magedu.org8 實現DNS轉發(緩存)服務器
8.1 DNS轉發
利用DNS轉發,可以將用戶的DNS請求,轉發至指定的DNS服務,而非默認的根DNS服務器,并將指定服務器查詢的返回結果進行緩存,提高效率。
注意:
被轉發的服務器需要能夠為請求者做遞歸,否則轉發請求不予進行
在全局配置塊中,關閉dnssec功能
dnssec-enable no;dnssec-validation no;8.2 轉發方式
8.2.1 全局轉發:
對非本機所負責解析區域的請求,全轉發給指定的服務器
在全局配置塊中實現:
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.68.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.org9 實現智能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工作原理
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/169.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 forever9.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.other9.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 httpd9.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 Other10 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/2411.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 restart11.4.2 實現WEB服務
#在web服務器192.168.8.68/24上實現yum install httpd echo www.magedu.org > /var/www/html/index.htmlsystemctl start httpd11.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 -yvim /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.58chgrp 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.zonesystemctl start named #第一次啟動 rndc reload #不是第一次啟動11.4.6 實現轉發目標的DNS服務器
#在轉發目標的DNS服務器192.168.8.18/24上實現 yum install bind -yvim /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.28systemctl start named #第一次啟動 rndc reload #不是第一次啟動11.4.7 實現本地只緩存DNS服務器
#在轉發目標的DNS服務器192.168.8.8/24上實現 yum install bind -yvim /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 nosystemctl start named #第一次啟動 rndc reload #不是第一次啟動11.4.8 客戶端測試
cat /etc/resolv.conf nameserver 192.168.8.8dig 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
總結
以上是生活随笔為你收集整理的Linux DNS服务配置与管理详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ansible roles角色实战案例:
- 下一篇: Linux安全技术和防火墙介绍