DNS: Domain Name Service
1、域名和主機名:
主機名形如www.baidu.com.(又稱FQDN,完全限定域名)
域名是包含N個主機名的範圍,如baidu.com域
2、域名解析或域名轉換
FQDN<—>IP,背後有查詢資料庫的過程;
FQDN和IP之間的對應關系為m:n;
3、發展過程
最初通過檔案存儲映射關系 —> 集中式資料庫存儲映射關系 —> 目前的分布式資料庫存儲映射關系
4、DNS的分布式資料存儲結構
####上級域隻知道其直接下級域,而下級域僅僅通過配置檔案知道根域####
根域
授權給NS管理各個直接下級域,并記錄着各直接下級域的NS伺服器的ip供客戶查找
頂級域
組織域:.com, .org, .net,etc
國家域:.cn, .jp,etc
反向域:IP—>FQDN(使用的是不同于FQDN—>IP的另一個資料庫)
二級域
常見的如baidu.com,ibm.com,etc
4、主機名解析
1>遞歸查找:請求者隻需要發起一次請求即可得到答案,###根域忽略遞歸查找請求###
2>疊代查找:請求者需要發起多次請求才能得到答案
一般采用組合的方式工作:前半段客戶機向ns發起遞歸查找,後半段ns對所請求的主機名進行疊代查找,得到結果後傳回給客戶機并緩存以供域内其他客戶機請求;
5、名字伺服器NS
1>主要功能:
@緩存域内主機對外部主機的名字查找結果(遞歸的方式工作),是以從一定程度上過濾了本地的DNS流量,減小本地帶寬消耗并且減小了根域主機和頂級域主機的負載;
@響應本域外主機名字解析請求,一般是請求權威答案,如果查找成功傳回權威應答并設定緩存時長TTL,如果查找失敗直接回複名字差錯(rcode标志位設定為3)并設定緩存時長TTL;如果請求非權威答案ns可以拒絕遞歸;
2>本地主機請求解析外部主機得到的答案一般是通過緩存得到的,又稱非權威應答,有可能會過期進而導緻解析結果錯誤,是以需要由權威域名解析伺服器定義緩存時間,緩存時間越長權威域名解析伺服器越空閑,但是主機名更新周期會更長;
3>域内主機向區域NS查找區域内的其他主機得到的一般都是權威應答,因為該NS伺服器一般為本域的授權伺服器,其答案具有權威性;
6、DNS伺服器類型
###主從DNS伺服器沒有優先級的差別###
1>主DNS伺服器:資料修改在此進行
2>輔助DNS伺服器:定期請求資料同步,如果長時間得不到應答,則輔助DNS伺服器也放棄
常用的配置參數
serial number(标示内容修改)、
refresh(同步時間間隔)、
retry(如果同步失敗下次重試時間)、
expire(主伺服器當機)、
nagative answer TTL(否定答案緩存時間)
3>緩存DNS伺服器:隻提供緩存,不接受任何權威答案請求
4>轉發器:隻對DNS進行轉發不緩存
7、DNS資料庫内容
資料庫中的每一個條目稱為一個資源記錄(RR)
資源記錄的格式:NAME + [TTL(緩存時間) ] IN(internet) RRT(資源記錄類型) VALUE
TTL 10; //定義了全局TTL之後RR中可以省略TTL字段
www.baidu.com. IN A 1.1.1.1
1.1.1.1 IN PTR www.baidu.com.
資源記錄類型:标示主機在域内扮演的角色
A(Address) : FQDN—>IPv4
AAAA: FQDN—>IPv6
PTR: IP—>FQDN
特殊的資源類型:
SOA(Start Of Authority):必須為第一個記錄,用于标示一個區域内部主從DNS如何同步以及起始授權對象,格式如下:
ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX(
serial number ;注釋資訊
refresh
retry
expire
na ttl)
baidu.com. 600 IN SOA ns1.baidu.com admin.baidu.com 1 1H 5M 1W 1D
說明:
I、時間機關:M(inute) H(our) D(ay) W(eek) S(econd)[default];
II、資料庫檔案中@用來表示區域名稱
III、mailbox中不能含有@符号:[email protected] —>admin.baidu.com
NS(Name Server): ZONE NAME —> FQDN of NS
baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.
ns1.baidu.com. IN A 1.1.1.2 //一般用不到此記錄,因為上級域已經指定了NS
ns2.baidu.com. IN A 1.1.1.5
MX(Mail eXchanger): ZONE NAME —> FQDN of MAIL
格式如下:
ZONE NAME TTL IN MX PRI VALUE
baidu.com. 600 IN MX 10 mail.baidu.com.
mail.baidu.com. 600 IN A 1.1.1.3
####其中PRI為0-99,數字越小級别越高####
CNAME: FQDN—>FQDN
www2.baidu.com IN CNAME www.baidu.com
www2的正式名稱為www,www2稱為www的别名;
8、域Domain和區域Zone
域是一個邏輯概念,區域是一個實體概念,其中域包含正向區域和逆向區域
如規劃baidu.com.域, 其中
ip為1.1.1.0/24
www 1.1.1.2
mail 1.1.1.3 MX
首先在擷取.com授權
baidu.com. IN NS ns.baidu.com
ns.baidu.com IN A 1.1.1.1
然後建立兩個區域檔案:
正向區域檔案
baidu.com. IN SOA
www(.baidu.com.) IN A 1.1.1.2 //簡寫會自動補區域名
mail IN MX //隻定義在正向區域
反向區域檔案
1.1.1.in-addr.arpa. IN SOA
1(.1.1.1.in-addr.arpa.) IN PTR www.baidu.com.
區域類型
主區域:master
從區域:slave
提示區域:hint,指明根域位址
轉發區域:forward,跳過根域直接轉到指定的域,值為{only | first}
zone “baidu.com” IN {
type forward;
forward first;
forwarders { 轉發目的ip;};
};
9、區域傳送:
完全區域傳送axfr,傳送整個區域檔案
增量區域傳送ixfr,隻傳送新增記錄
10、配置檔案
/etc/rc.d/init.d/named,named程序啟動控制腳本;
/etc/named.conf,主要包含bind程序的工作屬性的定義和區域的定義;
/etc/rndc.key,remote name domain controller密鑰檔案;
/etc/rndc.conf,遠端控制相關配置;
/var/named/*,區域資料檔案;
11、區域定義:
zone “ZONE NAME” IN {
type { master | slave | hint | forward };
};
主區域
file “區域資料檔案”
從區域
file “區域資料檔案”
masters { master1_ip; master2_ip; };
DNS查詢常用用戶端程式:
dig -t RT name [@ip]
如查詢test.com域的名字伺服器:dig -t NS test.com
dig -x ip
如查詢1.1.1.1對應的主機名:dig -x 1.1.1.1
host -t RT name //與1類似,隻是不能指定ip
nslookup:互動式
nslookup> server ip
nslookup> set q=RT
nslookup> NAME
子域定義:
SUB_ZONE_NAME IN NSNSSERVER_SUB_ZONE_NAME
NSSERVER_SUB_ZONE_NAME IN A IP
.com上授權子域baidu.com
baidu.com.IN NS ns1.baidu.com. //主DNS伺服器
ns2.baidu.com. //輔DNS伺服器
ns1.baidu.com.IN A 1.1.1.1
ns2.baidu.com.1.1.1.2
baidu.com上授權子域d1.baidu.com和d2.baidu.com
d1.baidu.com.IN NS ns1.d1.baidu.com.
d1.baidu.com.IN NS ns2.d1.baidu.com.
ns1.d1.baidu.com.IN A 2.2.2.2
ns2.d1.baidu.com.IN A 2.2.2.3
d2.baidu.com.IN NS ns1.d2.baidu.com.
d2.baidu.com.IN NS ns2.d2.baidu.com.
ns1.d2.baidu.com.IN A 3.3.3.3
ns2.d2.baidu.com.IN A 3.3.3.4
12、acl,通路控制清單
定義格式:
ack ACL_NAME {
ip;
…
};
###内置acl包含none和any###
13、CDN,Content Delivery Network内容分發網絡
智能DNS(view視圖)
緩存伺服器
view VIEW_NAME{
//每個視圖對應一個區域資料檔案;
//一旦定義了視圖,所有的區域都必須定義在視圖中
};
###################################################
之前遇到一個奇怪的問題,本機建了dns伺服器,但是dig @127.0.0.1的時候傳回拒絕(dns query refused),
換個本機其它的ip都行,一開始以為是沒有監聽或者不允許127.0.0.1查詢,檢視了幾遍配置檔案發現原來127.0.0.1
不屬于任何一個VIEW,最後加上localhost View之後就正常了,是以一定要确認所有的client都有對應的view。
###################################################
acl telecom {
1.1.1.1;
};
acl unicom {
2.2.2.2;
};
view telecom {
match-clients { telecom; };
zone “baidu.com” IN {
type master;
file “telecom.baidu.com.zone”;
};
};
view unicom {
match-clients{ any; };
zone “baidu.com” IN {
type master;
file “unicom.baidu.com.zone”;
};
};
14、日志記錄
query-log yes;
logging {
channel my_file {
file “log_msg” versions 3 size 10k;
severity dynamic;
};
category xfer-in { my_file; };
};