域名分級
根域: .
頂級域: .com .cn .org .net
域: baidu.com qq.com sina.com
主機: www.baidu.com mail.sina.com
DNS解析過程
如在qq.com域下面有臺client,其dns-server是dns.qq.com,則client訪問www.baidu.com(dns為ns.baidu.com)時,先請求dns.qq.com,dns.qq.com查詢緩存中有沒有www.baidu.com條目的緩存,如果有,則直接返回www.baidu.com的IP,如果沒有,則請求如下:
1. 請求 `根域`(`.`),查詢`.com`域的管理Server IP
2. 請求`.com`域,查詢`baidu.com`域的管理Server IP,也就是 `ns.baidu.com`
3. 請求`ns.baidu.com`,查詢域中`www`主機的IP
此時,dns.qq.com
將查詢得到的www.baidu.com
的IP返回給Client,同時緩存,在緩存還沒失效之前有其他Client再次請求www.baidu.com
時,則直接從緩存中取,不再查詢。對于client來說是遞歸的(client->dns.qq.com),對于dns-server來說是迭代的(上述123過程),
DNS Server只依據(jù)條目響應查詢,不負責是否存在
dns的分類
1.權(quán)威DNS:
權(quán)威DNS是經(jīng)過上一級授權(quán)對域名進行解析的服務器,同時它可以把解析授權(quán)轉(zhuǎn)授給其他人
2.遞歸DNS:
負責接受用戶對任意域名查詢,并返回結(jié)果給用戶。
3.轉(zhuǎn)發(fā)DNS:
負責接受用戶查詢,并返回結(jié)果給用戶。
權(quán)威應答與非權(quán)威應答
如果DNS服務器在自己的區(qū)域文件里找到了客戶端需要查詢的記錄,否則就是非權(quán)威應答
TTL值
TTL(Time- To-Live),簡單的說它表示一條域名解析記錄在DNS服務器上被緩存時間.當各地的DNS服務器接受到解析請求時,就會向域名指定的DNS服務器發(fā)出解析請求從而獲得解析記錄;在獲得這個記錄之后,記錄會在DNS服務器中保存一段時間,這段時間內(nèi)如果再接到這個域名的解析請求,DNS服務器將不再向DNS服務器發(fā)出請求,而是直接返回剛才獲得的記錄;而這個記錄在DNS服務器上保留的時間,就是TTL值,默認單位是秒(s)。
一.增大TTL值,可以節(jié)約域名解析時間
二.減小TTL值,可以減少更換IP(A記錄)后到生效的時間
資源記錄(Resource Record, RR)格式
@表示繼承
A記錄(正向)
將域名指向一個IPv4地址,FQDN-->IPv4
FQDN:Full Qualified Domain Name,完全限定域名,如 mail.sina.com
RRT:Resource Record Type,資源記錄類型。
FQND TTL IN RRT IP
www.sina.com. 600 IN A 1.1.1.1
IPv6的類型為AAAA
PTR記錄(反向)
IP反向查詢域名,IP-->FQDN
IP TTL IN RRT FQDN
11.0.168.192.in-addr.arpa. 600 IN PTR mail.sina.com.
12.0.168.192.in-addr.arpa. 600 IN PTR ftp.sina.com.
NS記錄
域名解析服務器記錄,ZONE-NAME->FQDN,也叫授權(quán)記錄
Zone-Name TTL IN NS FQND
163.com. 600 IN NS ns.163.com.
ns.163.com. 600 IN A 1.1.1.1
NS和A記錄成組出現(xiàn),構(gòu)成一個完整的NS記錄,多個NS記錄時依次被響應
MX記錄(mail exchager)
電子郵箱服務,將指向郵件服務器地址,ZONE-NAME->FQDN,MX記錄有優(yōu)先級(priority)之分,0-99,數(shù)字越大,優(yōu)先級越高
ZONE-NAME TTL IN RRT priority FQDN
163.com. 600 IN MX 11 mail1.163.com.
mail1.163.com. 600 IN A 1.1.1.1
MX和A記錄成組出現(xiàn),構(gòu)成一個完整的MX記錄
SOA(Start Of Authority)記錄
區(qū)域傳送記錄,描述區(qū)域傳送規(guī)則(描述主從對象,以及如何主從如何同步),必須定義在數(shù)據(jù)文件的第一行
ZONE-NAME TTL IN SOA FQDN(主DNS地址) admin-mail-address (
serial number; 版本號,區(qū)域復制依據(jù),每次主要區(qū)域修改完數(shù)據(jù)后,要手動增加它的值
refresh ; 刷新時間,輔助DNS服務器請求與源服務器同步的等待時間。當刷新間隔到期時,輔助DNS服務器請求源服務器的SOA記錄副本。然后,輔助DNS服務器將源服務器的SOA記錄的序列號與其本地SOA記錄的序列號比較,如果不同,則輔助DNS服務器從主要DNS服務器請求區(qū)域傳輸。
retry ; 重試時間,輔助DNS服務器在請求失敗后,等待多長時間重試。通常這個應該短于刷新時間
expire ; 過期時間,時間到期時,如輔助DNS服務器還無法與源服務器進行區(qū)域傳輸,則輔助DNS服務器會把它的本地數(shù)據(jù)當作不可靠數(shù)據(jù)
minimum ; 否定答案緩存時間
)
時間單位:M(分鐘)、H(小時)、D(天)、W(周),默認單位是秒
郵箱格式:admin@sina.com -寫為-> admin.sina.com
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (
2013040101
1H
5M
1W
1D )
CNAME(Canonical NAME)記錄
將域名指向一個域名,F(xiàn)QDN->FQDN
FQDN TTL IN RRT FQDN
mail.163.com. 600 IN CNAME mail.qq.com.
泛域名解析
* 600 IN A IP #除了明確標識,其他都解析到該地址
域和區(qū)域(domain & zone)
domain是邏輯概念,如sina.com,zone是物理概念,對應數(shù)據(jù)文件
正向域
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (
2013040101
1H
5M
1W
1D )
www 600 IN A 192.168.0.10
www2 600 IN A 192.168.0.11
sina.com. 600 IN MX 10 mail.sina.com.
mail.sina.com. 600 IN A 192.168.0.20
反向域
反向域的name為網(wǎng)段地址,且反寫
0.168.192.in-addr.arpa IN SOA ns1.sina.com. admin.sina.com (
2013040101
1H
5M
1W
1D )
10.0.168.192.in-addr.arpa. 600 IN PTR www.sina.com.
11 IN PTR www2.sina.com.
區(qū)域類型
主區(qū)域:master
從區(qū)域:slave
提示區(qū)域:hint,定義根在什么地方
轉(zhuǎn)發(fā)區(qū)域:forward,比如直接配置.com域的地址,而不從根查詢
安裝Bind
yum install -y bind
/etc/named.conf #主配置文件
/etc/rndc.key #rndc的密鑰文件
/etc/rndc.conf #rndc配置文件
/var/named/ #區(qū)域數(shù)據(jù)文件
/etc/rc.d/init.d/named #服務腳本
{start|stop|restart|status|reload}
/var/named/named.ca 13個根節(jié)點配置文件
一些工具
隨bind安裝
/usr/sbin/named-checkconf #檢查配置文件
/usr/sbin/named-checkzone #檢查區(qū)域文件
/usr/sbin/rndc-confgen #生成rndc配置
bind-utils 工具包
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
設置開機啟動
chkconfig named on
named.conf
options { #全局選項,對所有的zone生效
listen-on port 53 { 127.0.0.1; }; #監(jiān)聽IPv4及端口。這里設置表示只偵聽127.0.0.1這個地址。如不定義此選項或者0.0.0.0表示偵聽所有網(wǎng)絡
listen-on-v6 port 53 { ::1; }; ##監(jiān)聽IPv6及端口
directory "/var/named"; #數(shù)據(jù)文件目錄
notify yes;# 啟用通知功能,master修改,主動通知slave
allow-query { 192.168.0.0/24; }; #允許提交查詢的客戶端,如不定義此選項表示允許所有查詢
query-source port 53; #客戶端在進行DNS查詢時必須使用53做為源端口
recursion yes; #是否開啟遞歸查詢
allow-recursion {192.168.0.0/24;192.168.0.1/24};#允許提交遞歸查詢的客戶端,如不定義此選項表示允許所有
allow-transfer {192.168.0.254;};#允許區(qū)域傳輸?shù)腄NS服務器(輔助DNS),不寫表示允許所有
forwarders {192.168.0.9;};#轉(zhuǎn)發(fā)到指定服務器解析
forward only|first;#only表示如果在指定的轉(zhuǎn)發(fā)器找不到,不會去向根查詢,first表示快速轉(zhuǎn)發(fā)(默認)
dnssec-enable yes;# 是否支持DNSSEC開關,默認為yes
dnssec-validation yes; #是否進行DNSSEC確認開關,默認為no
dnssec-lookaside auto; #當設置dnssec-lookaside,它為驗證器提供另外一個能在網(wǎng)絡區(qū)域的頂層驗證DNSKEY的方法
};
logging { #日志
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN { #根區(qū)域定義
type hint;#區(qū)域類型
file "named.ca";#區(qū)域數(shù)據(jù)文件路徑,相對與directory
#masters { master1.ip;master2.ip } #如果是從區(qū)域,指定master地址
};
zone "sina.com" IN { #正向域
type master;
file "sina.com";
};
zone "0.168.192.in-addr.arpa" IN {#反向域
type master;
file "0.168.192.zone";
};
zone類型
Master
主DNS服務器:擁有區(qū)域數(shù)據(jù)文件,并對此區(qū)域提供數(shù)據(jù)管理
Slave
輔助區(qū)域:擁有主DNS服務器區(qū)域數(shù)據(jù)文件的副本,輔助DNS服務器從主DNS服務器同步所有區(qū)域數(shù)據(jù)
Stub
stub區(qū)域和slave類似,但它只復制主DNS服務器上的NS記錄,而不像輔助DNS服務器會復制所有區(qū)域數(shù)據(jù)
Forward
一個forward zone是每個域的配置轉(zhuǎn)發(fā)的主要部分。一個zone語句中的type forward可以包括一個forward和或forwarders子句,它會在區(qū)域名稱給定的域中查詢。如果沒有forwarders語句或forwarders是空表,那么這個域就不會轉(zhuǎn)發(fā),消除了options語句中有關轉(zhuǎn)發(fā)的配置
Hint
根域名服務器的初始化組指定使用的線索區(qū)域hint zone,當服務器啟動時,它使用根線索來查找根域名服務器,并找到最近的根域名服務器列表。如果沒有指定class IN的線索區(qū)域,服務器使用編譯時默認的根服務器線索。不是IN的類別沒有內(nèi)置的默認線索服務器
主從傳送
1.修改named.conf中option定義
notify yes
2.修改named.conf中zone的定義:
zone "zone-name" IN { #根區(qū)域定義
type slave;#標明是從dns
file "slaves/named.ca";#區(qū)域數(shù)據(jù)文件路徑,相對與directory,由于named無對/etc/named目錄的寫權(quán)限,所以放在slaves下
masters { master1.ip;master2.ip } #指定master地址
};
3.增加從服務器的NS記錄以及A記錄
4.防火墻配置
打開master tcp 53端口
打開slave tcp 53端口
5.開啟從服務器
service named start
手動區(qū)域傳輸
dig -t axfr|ixfr 區(qū)域名稱 @輔助DNS服務器
axfr:完全傳輸
ixfr:增量傳輸
子域授權(quán)
1.在子域zone文件中添加授權(quán)NS記錄
子域名稱 IN NS 子域dns-server-name
a.sina.com. IN NS ns1.a.sina.com.
2.子域DNS A記錄
子域dns-server-name IN A IP
ns1.a.sina.com. IN A 0.0.0.0
3.編輯子域 named.conf 添加zone記錄
zone "a.sina.com" IN {
type master;
file "a.sina.com";
};
4.增加zone對應的數(shù)據(jù)文件
5.重啟服務
DNS View
view view_name {
match-client{ip段1;ip段2};
//區(qū)域定義
};
match-client:指定IP段使用view中的zone定義,any匹配所有IP
注意
- 一旦定義了view 所有的zone都必須定義在view中
- 根zone只需要定義在需要遞歸的view中