一、域名和服務概述
1.FQDN:Fully Qualified Domain Name,完全限定域名,全局唯一
FQDN是指主機名加上全路徑,全路徑中列出了序列中所有域成員。全域名可以從邏輯上準確地表示出主機在什么地方,也可以說全域名是主機名的一種完全表示形式。從全域名中包含的信息可以看出主機在域名樹中的位置。
2.TLD:Top Level Domain,頂級域名
(1)頂級域名:域名由兩個或兩個以上的詞構成,中間由點號分隔開,最右邊的那個詞
域名分層設計:倒置樹狀結構,上級包含下級,全球只有13個根節點
分布式數據庫系統:將一個大的書庫分割成多個小的數據庫,分布式管理
(2)分類
國家和地區頂級域名(countrycode top-level domains,nTLDs):國家都按照ISO3166國家代碼分配
國際頂級域名(generictop-level domains,gTLDs):組織域,.com, .net,.org, .gov, .edu, .mil
[圖示]
3.DNS:Domain Name System,域名服務(應用層協議)
因特網上作為域名和IP地址相互映射的一個分布式數據庫,C/S架構,而非IP數串訪問。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在53/udp、53/tcp端口。
C/S架構:Client:發起應用請求的程序;Server:響應請求(提供服務)的程序,監聽在端口;
傳輸層協議: TCP, UDP,SCTP
TCP: Transmission Control Protocol,面向連接的協議:雙方通信之前需要事先建立虛連接;
UDP:User Datagram Protocol,無連接的協議:雙方無須通信之前需要事先建立虛連接;
(1)DNS查詢類型
客戶主機—> 運營商or最近的DNS服務器
—-> 存在,返回
—-> 不存在—>進行分布式DNS系統根節點—>分布式運作向下迭代級別查詢
第一階段:遞歸查詢,從客戶機到自己所指向的DNS服務器
第二階段:迭代查詢(從分布式DNS系統頂端開始查詢)
(2)DNS名稱解析方式
1)正向解析:名稱 –> IP,域名轉換成ip地址的操作
2)反向解析:IP –> 名稱,ip地址轉換成域名的操作
以ip地址為線索查詢,最頂端位置名字:in-addr.arpa
eg:1.2.3.4 ==》寫成4.3.2.1.in-addr.arpa,網段3.2.1.in-addr.arpa
注意:二者的名稱空間,非為同一個空間,即非為同一棵樹狀結構體系;所以不是同一個解析庫;
域名服務代理商:godaddy、萬網 … …
(3)DNS服務器類型
1)負責解析至少一個域:主名稱服務器;輔助名稱服務器;
2)不負責解析:緩存名稱服務器;
4.DNS解析流程
首先查找本機HOSTS表,有就直接使用表中定義,無查找網絡連接中設置的DNS 服務器由他來解析。
Client –> hosts文件 –> DNS LocalCache (本地DNS緩存)–> DNS Server (recursion,遞歸請求) –>
—>自己負責解析的域:直接查詢數據庫并返回答案;
—>不是自己負責解析域:Server Cache –> iteration(迭代方式查找分布式DNS系統根)
解析答案分類:
1) 肯定答案:返回肯定答案
否定答案:不存在查詢的鍵,因此,不存在與其查詢鍵對應的值;
2) 權威答案:由直接負責的DNS服務器返回的答案;
非權威答案:從緩存中讀取的答案
二、DNS區域配置文件
1.DNS區域(zone)和域(domain)
區域是物理概念,域是邏輯概念
域:一段命名空間,一般包括正向解析區域和反向解析區域
正向解析區域:包含FQDN –> IP的轉換、正向解析庫
反向解析區域:包含IP –> FQDN的轉換、反向解析庫
2.區域數據庫文件
(1)資源記錄:ResourceRecord, 簡稱rr;
區域數據庫文件中的每一個記錄條目
(2)記錄有類型:A, AAAA, PTR,SOA, NS, CNAME, MX
SOA:StartOf Authority, 起始授權記錄; 一個區域解析庫有且只能有一個SOA記錄,而且必須放在第一條;
NS:NameService, 域名服務記錄;一個區域解析庫可以有多個NS記錄;其中一個為主的;
A: Address, 地址記錄,FQDN –> IPv4轉換;
AAAA:地址記錄, FQDN –> IPv6轉換;
CNAME:CanonicalName, 別名記錄;
PTR:Pointer,指針, 從IP –> FQDN實現反向解析地址
MX:Mail eXchanger, 郵件交換器;有優先級的概念,用數字0-99表示,數字越小優先級越高;
(3)資源記錄的定義格式:
語法:name [TTL] IN RR_TYPE value
name:名稱,可以為主機名、FQDN、IP,正向解析主機名是name,反向解析IP是name
TTL:緩存周期。DNS的緩存機制,可以統一定義,每條定義記錄中省略從全局繼承
IN:關鍵字,不能省略,指明其類型和值
RR_TYPE :資源區域數據庫的資源記錄的類型
value:值,可以包含多段組成
注意:資源區域數據庫的資源記錄類型不同,名稱和值會有特殊要求:
3.定義不同資源類型記錄格式
注意:
1)TTL可以從全局繼承;
2) @表示當前區域的名稱,任何時候用到可以使用@來取代;
3)相鄰的兩條記錄其name相同時,后面的那條記錄name可省略;
4)對于正向區域來說,各MX,NS等類型的記錄的value為FQDN,此FQDN應該有一個A記錄,非必須;
(1)SOA:任何一個數據庫此條必須存在且為第一條
name: 當前區域的名字,最后一個"."不能省略
value:有多部分組成
1) 當前區域的區域名稱(也可以使用主DNS服務器名稱);
2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般使用點號來替代;
3) (主從服務協調屬性的定義以及否定答案的TTL)
示例:
xuding.win. 86400 IN SOA xuding.win. admin.xuding.com. (
2017010801 ;serial
2H ;refresh
10M ;retry
1W ;expire
1D ;negative answer ttl
)
說明:
1)value在一對( )中書寫,可以寫在同一行用空格隔開,也可以分行書寫
2)value之后用";"其后可以進行注釋,也可以省略
3)value的單位有H小時、M分鐘、W周、D天
4)serial最長只能是十位數字組成,一般用"當前日期+版本號"方便管理
(2)NS:
name:當前區域的區域名稱
value:當前區域的某DNS服務器的名字
一個區域可以有多個ns記錄; 多個主機的名稱相同無意義
示例:
xuding.win. 86400 IN NS ns1.xuding.win.
xuding.win. 86400 IN NS ns2.xuding.win.
(3)MX:
name:當前區域的區域名稱
value:當前區域某郵件交換器的主機名;
MX記錄可以有多個;每個記錄的value之前有一個數字表示其優先級;
示例:
xuding.win. IN MX 10 mx1.xuding.win.
xuding.win. IN MX 20 mx2.xuding.win.
(4)A:
name:某個FQDN,例如www.xuding.win.
value:某IPv4地址;
一個主機可以有多個地址,一個二地址也可以有多個名字
示例:
www.xuding.win. IN A 1.1.1.1
www.xuding.win. IN A 1.1.1.2
bbs.xuding.win. IN A 1.1.1.1
(5)PTR:指針記錄
name:IP地址,有特定格式,IP反過來寫,而且加特定后綴;例如1.2.3.4的記錄應該寫為4.3.2.1.in-addr.arpa.;
value:FQND域名
示例:4.3.2.1.in-addr.arpa. IN PTR www.xuding.win.
(6)CNAME:
name:FQDN格式的別名;
value:FQDN格式的正式名字;
示例:web.magedu.com. IN CNAME www.xuding.win.
三、BIND程序配置DNS服務器
1.BIND:Berkeley Internet NameDomain,伯克利互聯網名稱域
BIND程序是DNS域名解析服務協議的實現,由ISC.org組織代為維護,該組織同時維護DHCP
2.BIND相關程序包:[root@localhost ~]# yum list all bind*
bind-libs:被bind(服務器包)和bind-utils包中的程序共同用到的庫文件;
bind-utils:bind客戶端程序集,例如dig,host, nslookup等;
bind:提供的dnsserver程序、以及幾個常用的測試程序;
bind-chroot:選裝,讓named運行于jail(容器沙箱)模式下;
注意:一般bind-libs和bind-utils在發行版安裝時候會自動安裝
3.BIND配置文件
(1)主配置文件:/etc/named.conf
可使用include指令包含進來其它文件:
/etc/named.iscdlv.key、/etc/named.rfc1912.zones、/etc/named.root.key
(2)解析庫文件:/var/named/ZONE_NAME.zone
1)一臺DNS服務器可同時為多個區域提供解析;
2) 必須要有根區域解析庫文件: CentOS上是named.ca文件;
3) 還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫;
正向:/var/named/named.localhost、 反向:/var/named/named.loopback
named.ca、named.localhost、named.loopback,rpm安裝后會自動生成,rpm包制作者提供該類文件
(3)rndc:remotename domain contoller,名稱域(遠程)控制工具
工作在953/tcp端口,但默認監聽于127.0.0.1地址,因此僅允許本地使用,不允許遠程;
NAMED啟動服務后/etc/named.conf默認仍然僅監聽172.0.0.1:53端口,且allow–query運行訪問為本地主機
4.主配置文件格式:每個配置語句必須以分號結尾
全局配置段:options{… … }
日志配置段:logging{… … }
區域配置段:zone {… … }定義由本機負責解析的區域,或轉發的區域;
(1)緩存名稱服務器的配置:
監聽能與外部主機通信的地址:listen-on port 53 { 172.0.0.1; 172.16.100.67; };
注意:花括號前后要有空格,每個地址之后必須以;結束,否則會語法錯誤
(2)測試時建議關閉dnssec,需要時開啟
dnssec-enableno;
dnssec-validationno;
dnssec-lookasideno;
(3)關閉僅允許本地查詢://allow-query { localhost; };
(4)檢查配置文件語法錯誤(默認檢查/etc/named.conf):named-checkconf
bind程序安裝完成之后,默認即可做緩存名稱服務器使用;如果沒有專門負責解析的區域,直接即可啟動服務;
CentOS6: service named start
CentOS7: systemctl start named.service
(5)查看此時的監聽端口:[root@localhost /]#netstat -tunlp
此時named服務已經開始監聽端口53/tcp 53/udp,rndc 程序開始監聽953/tcp
四、BIND測試工具:dig, host, nslookup
1.dig命令:用于測試dns系統,因此其不會查詢hosts文件
(1)反向解析測試:dig -x IP
注意,有正向解析,不一定能反向解析出域名,因為IP和FQDN不在一個樹狀結構系統上
(2)模擬完全區域傳送:
dig -t axfr DOMAIN [@server]
(3)正向解析:dig [-t RR_TYPE] name [@SERVER] [query options]
-t RR_TYPE:指明資源記錄類型
name:將名稱解析為指明的資源類型的
@SERVER:指明解析的服務器,指明服務器后,/etc/resolv.conf中配置的nameserver將無意義
query options額外查詢選項:
+[no]trace:[不]跟蹤解析過程;
+[no]recurse:[不]進行遞歸解析;
實例ONE:[root@localhost /]# dig-t A www.192171.org
實例TWO:[root@localhost /]# dig-t A www.sina.com
實例THREE:[root@localhost /]# dig+trace -t A www.192171.org #顯示其解析過程,基于迭代方式解析
2.host命令:
host [-t RR_TYPE] name SERVER_IP
實例:
[root@localhost/]# host -t A www.baidu.com
[root@localhost/]# host -t NS baidu.com
[root@localhost/]# host -t MX baidu.com
3.nslookup命令:
(1)命令行模式:nslookup [-options] [name] [server]
(2)交互式模式:
# nslookup>
server IP:以指定的IP為DNS服務器進行查詢;
set q=RR_TYPE:要查詢的資源記錄類型;
name:要查詢的名稱;
4.rndc命令:named服務控制命令
(1)rndc -h 顯示全部子
(2)rndc flush 清空服務器中dns緩存
(3)rndc stop :可關閉dns服務
(4)rndc reload 重載區域配置文件,可以致命一個區域名重新加載
(5)rndc status:查看DNS服務器狀態
五、DNS服務器正向區域配置
1.配置主配置文件/etc/named.conf的options段
==========================================================================
options{
listen-onport 53 { 127.0.0.1; 172.16.49.2; };
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 { localhost; };
recursionyes;
dnssec-enableno;
dnssec-validationno;
dnssec-lookasideno;
=========================================================================
2.定義區域:在主配置文件中或主配置文件輔助配置文件中實現;
/etc/named.con文件一般只有根"."文件區域的配置信息
但其能包含include"/etc/named.rfc1912.zones"文件中定義自定義的區域
一般在/etc/named.rfc1912.zones,rfc1912:遵循1912規范的各區域請求注解文檔
============================在/etc/named.rfc1912.zones中追加====================================
zone "xuding.win" IN {
typemaster;
file"xuding.win.zone";
};
===============================================================================================
3.建立區域數據文件(主要記錄為A或AAAA記錄)
在/var/named目錄下建立區域數據文件,例如/var/named/xuding.win.zone;
1) $TTL 變量,全局繼承此處的緩存周期,單位是秒
2) @代替/etc/named.rfc1912.zones配置的ZONE_NAME,也可以自己定義補全宏:$ORIGIN xuding.win.
3) 定義第二條記錄,若寫全稱最后一個點絕對不能省略
簡寫時會自動補全/etc/named.rfc1912.zones配置的ZONE_NAME,此時一定不能有這個點
示例格式:ns1==ns1.xuding.win.
4) 同一個地址可以有兩個名字
5) 一臺DNS服務器上配置可以為正常的在互聯網上運行的服務器解析,指向為www的具體地址
www IN A [www服務器地址]
6) 可以定義別名類型:例如web IN CNAME www #定義別名
4.權限及屬組修改:
#chgrp named /var/named/magedu.com.zone
#chmod o= /var/named/magedu.com.zone
5.檢查語法錯誤:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
[root@localhost named]# named-checkconf 檢查配置文件時候,因為鏈接到會一起檢查語法
[root@localhost named]# named-checkzonexuding.win /var/named/xuding.win.zone 檢查區域和區域文件語法
zonexuding.win/IN: loaded serial 2016011001
OK
6.讓服務器重載配置文件和區域數據文件
#rndc reload 或
#systemctl reload named.service
[root@localhost named]# rndc reload 重讀配置文件裝載區域
serverreload successful
7.測試主機正向區域配置是否成功
[root@localhost named]# dig -t A www.xuding.win @172.16.49.2 測試本機
六、配置解析一個反向區域
1. 定義區域
在主配置文件中或主配置文件輔助配置文件中實現;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:反向區域的名字,反寫的網段地址.in-addr.arpa :例如49.16.172.in-addr.arpa
2.定義區域解析庫文件(主要記錄為PTR)
示例,區域名稱為49.16.172.in-addr.arpa;
$TTL3600
$ORIGIN 49.16.172.in-addr.arpa.
@ IN SOA ns1.xuding.win. xuding19931202.163.com. (
2017010801
1H
10M
3D
12H)
IN NS ns1.xuding.win.
2 IN PTR www.xuding.win.
3.權限及屬組修改:
# chgrp named /var/named/172.16.49.zone
# chmod o= /var/named/172.16.49.zone
4.檢查語法錯誤:
#named-checkzone ZONE_NAME ZONE_FILE
#named-checkconf
5.讓服務器重載配置文件和區域數據文件
#rndc reload 或
#systemctl reload named.service
Nicolo:http://xuding.blog.51cto.com/4890434/1733319
原創文章,作者:Nicolo,如若轉載,請注明出處:http://www.www58058.com/15733