全套學習資料移步至公眾號【學神來啦】
本節所講內容:
??5.1 ?DNS服務器常見概念
??5.2 ?DNS服務器安裝及相關配置文件
??5.3 ?實戰:為公司內網搭建一個DNS服務器
??5.4 ?實戰:DNS遞歸查詢和搭建DNS轉發服務器
??5.5 ?實戰:搭建DNS主從服務器
實驗環境:
DNS服務端:xuegod63.cn ??IP:192.168.1.63
DNS客戶端:xuegod64.cn ??IP:192.168.1.64
特別說明:
在以下的實驗當中,配置文件中的內容說明或調整配置時,如書面上沒有出現的內容并在實驗主機中的配置文件中出現的內容,則不需要修改,僅需要修改書面上出的加粗字體部分的內容。
DNS(Domain Name System)域名系統,在TCP/IP 網絡中有非常重要的地位,能夠提供域名與IP地址的解析服務,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。
DNS 是一個分布式數據庫,命名系統采用層次的邏輯結構,如同一棵倒置的樹,這個邏輯的樹形結構稱為域名空間,由于DNS 劃分了域名空間,所以各機構可以使用自己的域名空間創建DNS信息,如圖 5-1 所示。
圖 5-1 DNS樹形結構示意圖
DNS 樹的每個節點代表一個域,通過這些節點,對整個域名空間進行劃分,成為一個層次結構。
域名空間的每個域的名字,通過域名進行表示。
域名:通常由一個完全合格域名(FQDN)標識。FQDN能準確表示出其相對于DNS 域樹根的位置,也就是節點到DNS 樹根的完整表述方式,從節點到樹根采用反向書寫,并將每個節點用“.”分隔,對于DNS 域google 來說,其完全正式域名(FQDN)為google.com。
例如,google為com域的子域,其表示方法為google.com,而www為google域中的子域,可以使用www.google.com表示。
注意:通常,FQDN 有嚴格的命名限制,長度不能超過256 字節,只允許使用字符a-z,0-9,A-Z
和減號(-)。點號(.)只允許在域名標志之間(例如“google.com”)或者FQDN 的結尾使用。
域名不區分大小,由最頂層到下層,可以分成:根域、頂級域、二級域、子域。
Internet 域名空間的最頂層是根域(root),其記錄著Internet 的重要DNS 信息,由Internet域名注冊授權機構管理,該機構把域名空間各部分的管理責任分配給連接到Internet 的各個組織,“.”全球有13個根(root)服務器
DNS 根域下面是頂級域,也由Internet 域名注冊授權機構管理。共有3 種類型的頂級域。
組織域:采用3個字符的代號,表示DNS 域中所包含的組織的主要功能或活動。比如com 為商業機構組織,edu 為教育機構組織,gov 為政府機構組織,mil 為軍事機構組織,net 為網絡機構組織,org 為非營利機構組織,int 為國際機構組織。
地址域:采用兩個字符的國家或地區代號。如cn 為中國,kr 為韓國,us 為美國。
反向域:這是個特殊域,名字為in-addr.arpa,用于將IP 地址映射到名字(反向查詢)。
對于頂級域的下級域,Internet 域名注冊授權機構授權給 Internet 的各種組織。當一個組織獲得了對域名空間某一部分的授權后,該組織就負責命名所分配的域及其子域,包括域中的計算機和其他設備,并管理分配的域中主機名與 IP?地址的映射信息。
區是DNS 名稱空間的一部分,其包含了一組存儲在 DNS 服務器上的資源記錄。
使用區的概念,DNS 服務器回答關于自己區中主機的查詢,每個區都有自己的授權服務器。
5.1.3 ?主域名服務器與輔助域名服務器
當本區的輔助服務器啟動時,它與該區的主控服務器進行連接并啟動一次區傳輸,區輔助服務器定期與區主控服務器通信,查看區數據是否改變。如果改變了,它就啟動一次數據更新傳輸。
每個區必須有主服務器,另外每個區至少要有一臺輔助服務器,否則如果該區的主服務器崩潰了,就無法解析該區的名稱。
輔助服務器的優點:
容錯能力
配置輔助服務器后,在該區主服務器崩潰的情況下,客戶機仍能解析該區的名稱。一般把區的主服務器和區的輔助服務器安裝在不同子網上,這樣如果到一個子網的連接中斷,DNS 客戶機還能直接查詢另一個子網上的名稱服務器。
減少廣域鏈路的通信量
如果某個區在遠程有大量客戶機,用戶就可以在遠程添加該區的輔助服務器,并把遠程的客戶機配置成先查詢這些服務器,這樣就能防止遠程客戶機通過慢速鏈路通信來進行DNS 查詢。
減輕主服務器的負載
輔助服務器能回答該區的查詢,從而減少該區主服務器必須回答的查詢數。
(1) DNS 服務器
運行DNS 服務器程序的計算機,儲存DNS 數據庫信息。DNS 服務器會嘗試解析客戶機的查詢請求。在解答查詢時,如果DNS 服務器能提供所請求的信息,就直接回應解析結果,如果該DNS 服務器沒有相應的域名信息,則為客戶機提供另一個能幫助解析查詢的服務器地址,如果以上兩種方法均失敗,則回應客戶機沒有所請求的信息或請求的信息不存在。
(2)DNS 緩存
DNS 服務器在解析客戶機請求時,如果本地沒有該DNS 信息,則可以會詢問其他DNS 服務器,當其他域名服務器返回查詢結果時,該DNS 服務器會將結果記錄在本地的緩存中,成為DNS 緩存。當下一次客戶機提交相同請求時,DNS 服務器能夠直接使用緩存中的DNS 信息進行解析。
(3) DNS查詢方式: 遞歸查詢和迭代查詢
一個DNS查詢過程,通過8個步驟的解析過程就使得客戶端可以順利訪問www.163.com這個域名,但實際應用中,通常這個過程是非常迅速的,如圖 5-2 所示。
圖 5-2 DNS查詢過程示意圖
<1> 客戶機提交域名解析請求,并將該請求發送給本地的域名服務器。
<2> 當本地的域名服務器收到請求后,就先查詢本地的緩存。如果有查詢的DNS 信息記錄,則直接返回查詢的結果。如果沒有該記錄,本地域名服務器就把請求發給根域名服務器。
<3> 根域名服務器再返回給本地域名服務器一個所查詢域的頂級域名服務器的地址。
<4> 本地服務器再向返回的域名服務器發送請求。
<5> 接收到該查詢請求的域名服務器查詢其緩存和記錄,如果有相關信息則返回客戶機查詢結果,否則通知客戶機下級的域名服務器的地址。
<6> 本地域名服務器將查詢請求發送給返回的DNS 服務器。
<7> 域名服務器返回本地服務器查詢結果(如果該域名服務器不包含查詢的DNS 信息,查詢過程將重復<6>、<7>步驟,直到返回解析信息或解析失敗的回應。
<8> 本地域名服務器將返回的結果保存到緩存,并且將結果返回給客戶機。
(1) 遞歸查詢
遞歸查詢是一種DNS 服務器的查詢模式,在該模式下DNS 服務器接收到客戶機請求,必須使用一個準確的查詢結果回復客戶機。如果DNS 服務器本地沒有存儲查詢DNS 信息,那么該服務器會詢問其他服務器,并將返回的查詢結果提交給客戶機。
(2)迭代查詢
DNS 服務器另外一種查詢方式為迭代查詢,當客戶機發送查詢請求時,DNS 服務器并不直接回復查詢結果,而是告訴客戶機另一臺DNS 服務器地址,客戶機再向這臺DNS 服務器提交請求,依次循環直到返回查詢的結果為止。
正向解析:
正向解析是指域名到IP 地址的解析過程,如圖 5-3所示。
圖 5-3 正向解析域名
反向解析:
反向解析是從IP 地址到域名的解析過程。反向解析的作用為服務器的身份驗證,如圖 5-4 所示。
http://dns.aizhan.com/
圖 5-4 反向解析域名
1. SOA 資源記錄
每個區在區的開始處都包含了一個起始授權記錄(Start of Authority Record),簡稱SOA 記錄。
SOA 定義了域的全局參數,進行整個域的管理設置。一個區域文件只允許存在唯一的SOA 記錄。
2. NS 資源記錄
NS(Name Server)記錄是域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析。每個區在區根處至少包含一個NS 記錄。
3. A 資源記錄
地址(A)資源記錄把FQDN 映射到IP 地址。 因為有此記錄,所以DNS服務器能解析FQDN域名對應的IP 地址。
4. PTR 資源記錄
相對于A 資源記錄,指針(PTR)記錄把IP地址映射到FQDN。 用于反向查詢,通過IP地址,找到域名。
5. CNAME 資源記錄
別名記錄(CNAME)資源記錄創建特定FQDN 的別名。用戶可以使用CNAME 記錄來隱藏用戶網絡的實現細節,使連接的客戶機無法知道真正的域名。
例:ping百度時,解析到了百度的別名服務器。百度cname=www.a.shifen.com的別名,如圖 5-5 所示。
圖 5-5 FQDN別名
6. MX 資源記錄
郵件交換(MX)資源記錄,為DNS 域名指定郵件交換服務器,郵件交換服務器是為DNS 域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另一不同類型的郵件傳送者。轉發郵件指把郵件發送到最終目的服務器,用簡單郵件傳輸協議SMTP 把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件經過一定時間的排隊。
DNS的模式: C/S 模式
NDS監聽的端口號:
[root@xuegod63 ~]# vim /etc/services? #查看services文件。
端口:
tcp/53 ??udp/53 ???#用于客戶端查詢
tcp/953 udp/953 ??#用于DNS主從同步
BIND 簡介:
BIND 全稱為Berkeley Internet Name Domain(伯克利因特網名稱域系統),BIND 主要有三個版本:BIND4、BIND8、BIND9。
BIND8版本:融合了許多提高效率、穩定性和安全性的技術,而BIND9 增加了一些超前的理念:IPv6支持、密鑰加密、多處理器支持、線程安全操作、增量區傳送等等。
安裝程序:
[root@xuegod63 ~]# yum –y install bind bind-chroot bind-utils
bind-9.9.4-50.el7.x86_64 ?????#該包為DNS 服務的主程序包。
bind-chroot-9.9.4-50.el7.x86_64 ????#提高安全性。
#bind-chroot是bind的一個功能,使bind可以在一個chroot?的模式下運行,也就是說,bind運行時的/(根)目錄,并不是系統真正的/(根)目錄,只是系統中的一個子目錄而已,這樣做的目的是為了提高安全性,因為在chroot的模式下,bind可以訪問的范圍僅限于這個子目錄的范圍里,無法進一步提升,進入到系統的其他目錄中。
bind-utils-9.9.4-50.el7.x86_64.rpm? ??#該包為客戶端工具,系統默認已經安裝的了,它用于搜索域名指令。
[root@xuegod63 ~]# ls /etc/named.conf
/etc/named.conf
named.conf 是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括區域數據。
/var/named/ 目錄為DNS數據庫文件存放目錄,每一個域文件都放在這里
[root@xuegod63 ~]# systemctl start named#啟動DNS服務。
[root@xuegod63 ~]# systemctl enable named#設置為開機自動啟動。
[root@xuegod63 Packages]# netstat -antup | grep 53#查看53號端口是否監聽。
tcp ?????0 ?????0 127.0.0.1:53 ??????????0.0.0.0:* ?????LISTEN ???????11135/named ????????
tcp ?????0 ?????0 ::1:53 ????????? ???:::* ??????????LISTEN ??????11135/named ????????
udp ?????0 ????0 127.0.0.1:53 ??? ??0.0.0.0:* ???????????? ??11135/named ????????
在客戶端上配置好DNS服務器地址。
[root@xuegod64 ~]# vim /etc/resolv.conf #編輯resolv.conf文件,添加DNS,此文件的生效范圍是全局的,即是所有網卡的可以有效。
# Generated by NetworkManager
nameserver 202.106.46.151
修改網卡配置文件添加DNS,此方式添加的DNS僅生效當前網卡。
[root@xuegod64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33?
DNS1=202.106.46.151
配置DNS服務器解析:xuegod.cn
[root@xuegod63 ~]# cp /etc/named.conf ?/etc/named.conf.bak? #備份DNS原有的配置文件,便于后期恢復。
[root@xuegod63 named]# vim /etc/named.conf? #編輯DNS配置。
DNS配置中,整體分3段,如圖 5-6 所示。
options:對全局生效。
zone:針對某個區域生效。
圖 5-6 DNS配置
重點講解type參數,如圖 5-7 所示。
圖 5-7 file參數
type 字段指定區域的類型,對于區域的管理至關重要,一共分為六種:
Master:主DNS 服務器:擁有區域數據文件,并對此區域提供管理數據
Slave:輔助DNS 服務器:擁有主DNS 服務器的區域數據文件的副本,輔助DNS 服務器會從主DNS服務器同步所有區域數據。
Stub:stub 區域和slave 類似,但其只復制主DNS 服務器上的NS 記錄而不像輔助DNS 服務器會復制所有區域數據。
Forward:一個forward zone 是每個域的配置轉發的主要部分。一個zone 語句中的type forward可以包括一個forward 和/或forwarders 子句,它會在區域名稱給定的域中查詢。如果沒有forwarders 語句或者forwarders 是空表,那么這個域就不會有轉發,消除了options 語句中有關轉發的配置。
Hint:根域名服務器的初始化組指定使用線索區域hint zone,當服務器啟動時,它使用根線索來查找根域名服務器,并找到最近的根域名服務器列表。
5.3 ?實戰:為公司內網搭建一個DNS服務器
修改配置文件,授權DNS服務器管理xuegod.cn 區域,并把該區域的區域文件命名為xuegod.cn
[root@xuegod63 ~]#?vim /etc/named.conf#編輯DNS配置文件,修改如下配置文件區域的內容,其他區域不需要做修改,保持默認。
options {
????????listen-on port 53 { any; };? #把原來的127.0.0.1改為any。
????????listen-on-v6 port 53 { any; };? #把原來的::1,改為any。
????????directory ??????"/var/named";
????????dump-file ??????"/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
????????allow-query ????{ any; };? #把原來的localhost,改為any。
????????recursion yes;
????????dnssec-enable yes;
????????dnssec-validation yes;
????????dnssec-lookaside auto;? #加入此項。
zone "xuegod.cn" IN {? #把原來的 . 改為xuegod.cn。
????????type master;? ? #把原來的hint,改為master。
????????file "xuegod.cn.zone";? #把原來的named.ca,改為xuegod.cn.zone。
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@xuegod63 ~]# cd /var/named? #切換工作目錄至/var/named目錄下。
[root@xuegod63 named]# cp -a named.localhost ?xuegod.cn.zone? #復制named.localhost文件為xuegod.cn.zone文件,在復制過程中需要加-a選項,保持原有的權限。
[root@xuegod63 named]# vim xuegod.cn.zone? #編輯該文件中的內容,如圖 5-8 所示。
圖 5-8 xuegod.cn.zone文件
$TTL 1D
xuegod.cn. IN SOA dns.xuegod.cn. ?root.xuegod.cn. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
xuegod.cn. ????? NS ?????dns.xuegod.cn.
dns.xuegod.cn. ? A ??????192.168.1.63
www.xuegod.cn. ???A ??????192.168.1.63
www1.xeugod.cn. ??CNAMEwww.xuegod.cn.
配置文件參數說明:
$TTL 1D:設置有效地址解析記錄的默認緩存時間,默認為1天也就是1D。
xuegod.cn. ??IN SOA dns. xuegod.cn. root. xuegod.cn.
#原來的@表示當前的域xuegod.cn.,為方便大家記憶,在此直接寫成xuegod.cn.
#設置SOA記錄為:dns.xuegod.cn. ?
#在此配置文件中寫域名時,都把根 . 也需要寫上。
#域管理郵箱root.xuegod.cn. 由于@有其他含義,所以用“.”代替@。
0 :更新序列號,用于標示數據庫的變換,可以在10位以內,如果存在輔助DNS區域,建議每次更新完數據庫,手動加1。
1D :刷新時間,從域名服務器更新該地址數據庫文件的間隔時間,默認為1天。
1H :重試延時,從域名服務器更新地址數據庫失敗以后,等待多長時間,默認為1小時。
1W :到期,失效時間,超過該時間仍無法更新地址數據庫,則不再嘗試,默認為一周。
3H :設置無效地址解析記錄(該數據庫中不存在的地址)默認緩存時間。設置無效記錄,最少緩存時間為3小時。
NS @ :域名服務器記錄,用于設置當前域的DNS服務器的域名地址,
A 127.0.0.1: 設置域名服務器的A記錄,地址為ipv4的地址127.0.0.1,可以設置成192.168.100.102
AAAA ::1:設置域名服務器的A記錄,地址為ipv6的地址。
資源記錄參數詳解:
CNAME 資源記錄
別名(CNAME)資源記錄用于為某個主機指定一個別名
CNAME 資源記錄語法格式:
別名 CNAME 主機名
www1.xuegod.cn. ?CNAMEwww.xuegod.cn.
MX 資源記錄
MX(郵件交換器)資源記錄提供郵件傳遞信息。該記錄會指定區域內的郵件服務器名稱。
MX 資源記錄語法格式:
mail ?A 192.168.1.63
?MX 192.168.1.63
PTR 資源記錄
指針(PTR)資源記錄。該記錄與A 記錄相反,用于查詢IP 地址與主機名的對應關系。
根區域是一個較為特殊的區域,記錄列出了全球根域名服務器的信息,域名通常用“.”表示,如表 5-1 所示。
表 5-1 根區域設置及對應區域文件
重啟DNS服務器:
[root@xuegod63 named]# systemctl restart named
[root@xuegod64 ~]# vim /etc/resolv.conf
nameserver 192.168.1.63? #DNS修改為xuegod63主機IP。
[root@xuegod64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33? #配置網卡。
DEVICE="ens33"
HWADDR="00:0C:29:A7:3D:8D"
NM_CONTROLLED="yes"
BOOTPROTO=static
ONBOOT="yes"
IPADDR=192.168.1.64
NETMASK=255.255.255.0
[root@xuegod64 ~]# systemctl restart network? #重啟動網絡服務。
[[root@xuegod63 ~]# pingwww.xuegod.cn#ping 域名測試。
PING www.xuegod.cn (192.168.1.63) 56(84) bytes of data.
64 bytes from xuegod63.cn (192.168.1.63): icmp_seq=1 ttl=64 time=0.196 ms
64 bytes from xuegod63.cn (192.168.1.63): icmp_seq=2 ttl=64 time=0.160 ms
5.4 ?實戰:DNS遞歸查詢和搭建DNS轉發服務器
[root@xuegod63 etc]# vim /etc/named.conf? #修改DNS配置文件,修改如下內容。
options {
????????listen-on port 53 { any ; };? #把原來的127.0.0.1改為any。
????????listen-on-v6 port 53 { any; };? #把原來的::1,改為any。
????????directory ??????"/var/named";
????????dump-file ??????"/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
????????allow-query ????{ any; };? #把原來的localhost,改為any。
????????recursion yes; ???? #默認是支持遞歸查詢。
????????#dnssec-enable yes; ??
????????#dnssec-validation yes;
????????#dnssec-lookaside auto;
只需要把以上三條內容注釋了,其它內容不用改,這樣客戶端才能通過這個DNS進行遞歸查詢,把dns加密通訊功能關閉,才可以和根服務器時行迭代查詢。
重啟DNS服務,使配置文件生效:
[root@xuegod63 ~]# systemctl restart named
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.
64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms
64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms
[root@xuegod63 ~]# vim /etc/named.conf
options {
????????listen-on port 53 { any; };? #把原來的127.0.0.1改為any。
????????listen-on-v6 port 53 { any; };? #把原來的::1,改為any。
????????directory ??????"/var/named";
????????dump-file ??????"/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
????????allow-query ????{ any; };? #把原來的localhost,改為any。
????????recursion yes; ???? #允許遞歸查詢
????????#dnssec-enable yes; ?? #注釋以下三行。
????????#dnssec-validation yes;
????????#dnssec-lookaside auto;
zone "xuegod.cn" IN {
# ??????type master;? #注釋此項
????????type forward;? #添加此項,類型為轉發。
# ??????file "xuegod.cn.zone"; #注釋此項
forward ?only ; ??? #僅執行轉發操作,only:僅轉發,first:先查找本地zone,再轉發。
forwarders ?{ 8.8.8.8; }; ??? #指定轉發查詢請求的DNS服務器列表。
};
重啟DNS服務,使配置文件生效:
[root@xuegod63 ~]# systemctl restart named
在xuegod64主機上進行測試:
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.105) 56(84) bytes of data.
64 bytes from 61.135.169.105: icmp_seq=1 ttl=55 time=318 ms
64 bytes from 61.135.169.105: icmp_seq=3 ttl=55 time=147 ms
5.5 ?實戰:搭建DNS主從服務器
1. 搭建一個主DNS服務器A,配置內容如下
[root@xuegod63 ~]# vim /etc/named.conf
options {
????????listen-on port 53 { any; };? #把原來的127.0.0.1改為any。
????????listen-on-v6 port 53 { any; };? #把原來的::1,改為any。
????????directory ??????"/var/named";
????????dump-file ??????"/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
????????allow-query ????{ any; };? #把原來的localhost,改為any。
????????recursion yes;
????????#dnssec-enable yes;
????????#dnssec-validation yes;
????????#dnssec-lookaside auto;
zone "xuegod.cn" IN {
????????type master;? ? ? #指定類型為master。
????????file "xuegod.cn.zone";? ? #指定為xuegod.cn.zone。
????????allow-transfer { 192.168.1.0/24; };? #指定允許哪個網段的從DNS服務器,可以同步主DNS服務器zone文件,不寫默認為所有。
};
include "/etc/named.rfc1912.zones";
重啟DNS服務,使配置文件生效:
[root@xuegod63 ~]# systemctl restart named
2. 從DNS服務器的配置
要求:主從系統時間一定要保持一致。
安裝程序:
[root@xuegod64 ~]# yum install bind bind-chroot bind-utils -y
[root@xuegod64 ~]# systemctl start named
[root@xuegod64 ~]# vim /etc/named.conf
options {
????????listen-on port 53 { any; };
????????listen-on-v6 port 53 { any; };
????????directory ??????"/var/named";
????????dump-file ??????"/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
????????allow-query ????{ any; };
????????recursion yes;
????????#dnssec-enable yes;
????????#dnssec-validation yes;
???
zone "xuegod.cn" IN {
????????type slave;
????????file "slaves/xuegod.cn.zone.file";
????????masters { 192.168.1.63; };
};
include "/etc/named.rfc1912.zones";
注:這樣從DNS服務器就可以從主DNS服務器上獲取DNS解析記錄信息了。寫時注意slave slaves ?master ?單詞的書寫,有的加s有的不加
重啟從DNS服務器會在:/var/named/slaves文件夾下自動創建一個文件xuegod.cn.zone.file 這個文件是從DNS服務器從主DNS服務器上獲取的數據
這樣隨便一個DNS就可以獲取主DNS服務器的解析記錄,不安全,文章的后面會講如何進行主從認證。
注:主DNS記錄中應該有兩NS記錄,一條是主DNS的NS記錄,一條是從DNS服務器的域名記錄。
測試:
[root@xuegod64 etc]# systemctl restart named? #重啟DNS服務。
[root@xuegod64 etc]# ls /var/named/slaves/ ??#看到這個文件,說明成功了
xuegod.cn.zone.file
5.5.2 ?zone文件中的其它記錄信息。 通過DNS做負載均衡
編輯主DNS服務器上/var/name/ xuegod.cn.zone的配置文件:
[root@xuegod63 ~]# cd ?/var/named
[root@xuegod63 named]# vim xuegod.cn.zone
$TTL 1D
xuegod.cn. IN SOA dns.xuegod.cn. root.xuegod.cn. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
xuegod.cn.? NS dns.xuegod.cn.
dns.xuegod.cn.? A ? 192.168.1.63
www.xuegod.cn. 1 ?A ?????192.168.1.63 #DNS做簡單的負載均衡,1表示此記錄在客戶端保存1秒。
www.xuegod.cn. 1 ?A ??????192.168.1.64
www.xuegod.cn. 1 ?A ??????192.168.1.1
#DNS做簡單的負載均衡,1表示此記錄在客戶端保存1秒。這樣客戶訪問www.xuegod.cn時,可以解析成192.168.1.63或192.168.1.64或192.168.1.1 從而實現負載均衡
www1.xeugod.cn. ?CNAME ??www.xuegod.cn.
xuegod.cn. ???????MX ?10 ?mail.xuegod.cn. ??? #添加郵件記錄
mail.xuegod.cn. ???A ???192.168.1.63
bbs.xuegod.cn. ???CNAME ?www.xuegod.cn.
主服務器重啟時,會主動給從服務器發送信息,讓從服務器更新自己的記錄,通訊端口采用TCP 的53端口。
注:TSIG (主從DNS的時間必須一樣)
1. 同步時間
[root@xuegod63?~]# yum -y install ntp? #安裝ntp工具。
[root@xuegod63 named]# vim /etc/ntp.conf ?? #查看ntp服務器。
[root@xuegod63 named]# ntpdate 0.rhel.pool.ntp.org? ?#同步時間。
2. 生成密鑰,進行主從認證(在主DNS服務器上操作)
[root@xuegod63 chroot]# rpm -qf `which dnssec-keygen `
bind-9.9.4-50.el7.x86_64
dnssec-keygen命令使用格式:dnssec-keygen -a hmac-md5 -b 128 -n HOST 名字
[root@xuegod63 etc]# cd /var/named/chroot/? #切換工作目錄。
[root@xuegod63 chroot]# dnssec-keygen -a hmac-md5 -b 128 -n HOST abc ?#生成一對對稱鑰匙
選項說明:
?-a hmac-md5? #-a選項指定加密算法,采用hmac-md5加密算法。
-b 128? #-b選項指定密鑰長度,生成的密鑰長度為128位。
-n?? ? #密鑰類型。我們選擇主機類型:HOST 。
-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
abc? ? #為生成密鑰的名字
在生成的過程中需要的時間比較長,因為生成密鑰需要一些隨機事件,因此可以通過移動鼠標或執行find / 來產生一些隨機事件,整個過程等待大約2分鐘。
[root@xuegod63 chroot]# find / ???
3. 查看生成的密鑰對
[root@xuegod63 chroot]# ls
dev ?etc ?Kabc.+157+36589.key ?Kabc.+157+36589.private ?usr ?var
?
[root@xuegod63 chroot]# cat Kabc.+157+54214.private ???
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: nVk1s0B6XVB4BFfkr+vdfQ== ??#這是密鑰
[root@xuegod63 chroot]# cat Kabc.+157+54214.key
abc. IN KEY 512 3 157 nVk1s0B6XVB4BFfkr+vdfQ==
4. 修改主DNS配置
[root@xuegod63 chroot]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory? "/var/named";
dump-file? "/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query ????{ any; };
recursion yes;
dnssec-enable yes; ??? #取原來注釋
dnssec-validation yes;? ? #取原來注釋
dnssec-lookaside auto;? #取原來注釋
key abckey { ??????????#先定義密鑰的名字
????????algorithm hmac-md5;
????????secret "nVk1s0B6XVB4BFfkr+vdfQ==";
?};
zone "xuegod.cn." IN {
type master;
file "xuegod.cn.zone";
allow-transfer { key abckey; }; ????? #采用密鑰進行同步
};
include "/etc/named.rfc1912.zones";
5. 重啟服務:
[root@xuegod63 chroot]# systemctl restart named
6. 從DNS 服務器:192.168.1.64
步驟:首先定義密鑰 ---》而后采用密鑰進行同步。
[root@xuegod64 chroot]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory? "/var/named";
dump-file? "/var/named/data/cache_dump.db";
????????statistics-file "/var/named/data/named_stats.txt";
????????memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query ????{ any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
key abckey { ???? #先定義密鑰名
????????algorithm hmac-md5;
????????secret "nVk1s0B6XVB4BFfkr+vdfQ==";
????????
};
zone "xuegod.cn." IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.1.63 key abckey; }; ?? #采用密鑰進行同步。
};
include "/etc/named.rfc1912.zones";
7. 重啟服務進行測試:
[root@xuegod63 chroot]# cd
[root@xuegod63 ~]# systemctl restart named
8. 從DNS服務器上測試:
[root@xuegod64 ~]# rm -rf /var/named/slaves/xuegod.cn.zone.file
[root@xuegod64 ~]# systemctl restart named
[root@xuegod64 ~]# ls /var/named/slaves/
xuegod.cn.zone.file
5.5.4 ?測試工具
nslookup 測試域名解析
非交互式模式
語法: nslookup 域名或IP地址
例:
[root@xuegod63 chroot]# nslookup www.xuegod.cn
Server:? 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: www.xuegod.cn
Address: 101.200.128.35
交互模式
[root@xuegod63 ~]# nslookup? #直接輸入命令,并回車,而后輸入需要解析的域名
> www.g.cn
Server:? 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: www.g.cn
Address: 203.208.40.95
Name: www.g.cn
Address: 203.208.40.79
Name: www.g.cn
Address: 203.208.40.88
Name: www.g.cn
Address: 203.208.40.87
>
5.5.5??命令dig
Linux下使用dig命令來查詢域名信息,當然也可以使用nslookup,但dig比nslookup更方便更強大一些。
安裝:
[root@xuegod63 ~]# rpm -qf `which dig`
bind-utils-9.7.3-8.P3.el6.x86_64
例:使用114.114.114.114 DNS服務器解析www.xuegod.cn
[root@xuegod63 ~]# dig @114.114.114.114 www.xuegod.cn
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> @114.114.114.114 www.suegod.cn
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 58632
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.suegod.cn.? IN A
;; AUTHORITY SECTION:
cn.? 3600 IN SOA a.dns.cn. root.cnnic.cn. 2023818223 7200 3600 2419200 21600
;; Query time: 40 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: 三 10月 17 19:40:01 CST 2018
;; MSG SIZE ?rcvd: 84
更多學習資料請移步至公眾號【學神來啦】