正向解析(Forward Resolve) 功能 :由 Domain Name 查詢出 IPAddress,使得網絡程序能夠通過主機域名訪問到目的服務器主機
反向解析(Reverseresolve) 功能 :由 IP Address查詢出 DomainName ,用于查詢連接工作站是屬于哪一個網絡域
查詢類型:
遞歸查詢:客戶送出查詢請求后,DNS服務器必須告訴客戶機正確的數據(IP地址)或通知客戶機找不到其所需數據。如果DNS服務器內沒有所需要的數據,則DNS服務器會代替客戶機向其他的DNS服務器查詢?蛻魴C只需接觸一次DNS服務器系統,就可得到所需的節點地址
迭代查詢:客戶送出查詢請求后,若該DNS服務器中不包含所需數據,它會告訴客戶機另外一臺DNS服務器的IP地址,使客戶機自動轉向另外一臺DNS服務器查詢,依次類推,直到查到數據,否則由最后一臺DNS服務器通知客戶機查詢失敗
DNS工作原理:
客戶機要首先從DNS服務器獲www.cnnic.net.cn對應的IP地址,才能和遠地服務器建立連接。
DNS域名空間的域名是由分布在不同地方的域名服務器來管理的,域名解析是由用戶指定的域名服務
器來完成的。
DNS域名服務采用的是客戶/服務器(client/server)工作模式。客戶方的解析過程函數
(resolver),嵌套在其它應用的客戶程序之內的。
本地域名服務器。本地域名服務器始終運行它的域名服務器進程(named),該進程收到客戶請求時,就開始進行域名解析
DNS解析過程:
(1)DNS客戶機提出域名解析請求,并將該請求發送給本地的域名服務器。
(2)當本地的域名服務器收到請求后,就先查詢本地的緩存,如果有該記錄項,則本地的域名服務器就直接把查詢的結果返回。
(3)如果本地的緩存中沒有該記錄,則本地域名服務器就直接把請求發給根域名服務器,然后根域名服務器再返回給本地域名服務器一個所查詢域(根的子域)的主域名服務器的地址。
(4)本地服務器再向上一步返回的域名服務器發送請求,然后接受請求的服務器查詢自己的緩存,如果沒有該記錄,則返回相關的下級的域名服務器的地址。
(5)重復第四步,直到找到正確的記錄。
(6)本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時還將結果返回給客戶機。
資源記錄類型:
A:主機記錄,建立域名與IP地址之間的映射
CNAME:別名記錄,為其它資源記錄指定名稱的替補
SOA:初始授權記錄
NS:名稱服務器記錄,指定授權的名稱服務器
PTR:指針記錄,用來實現反向查詢
MX:郵件交換記錄,指定用來交換或者轉發郵件信息的服務器
HINFO:主機信息記錄,指明CPU與OS
注:dns的每次查詢都是經過查詢本地的解析庫來完成,每一個解析庫文件中所保存的都是資源記錄,或宏定義,任何解析庫的第一個文件必須是SOA,
安裝DNS服務器:首先要安裝bind: #yum install bind, #rpm –qc bind :查看生成列表,在 /etc/named.conf 下是主配置文件,其中還包含了其他許多xinetd配置文件
650) this.width=650;" onsubmit="" onchange="" onunload="" onselect="" onreset="" alt="" />
任何一個dns服務器要想實現解析,第一它要負責這個區域的區域文件
dig –t NS表示要請求解析的類型,NS表示要請求一個NS記錄
# dig –t NSroot-server.net 查根域的
# dig –t NSroot-server.net @a.root-server.net 表示查找 @a.root-server.ne這個域的NS記錄有哪些,
# dig –t NS .@root-server.net shuom
dig –t NS. 后跟點,是表示直接找根
dig命令:
dig -t 資源記錄類型;名稱 @server-ip:通過哪臺服務器來找;
每個主機中由/etc/resolv.conf指向主機nameserver IP
dig -x IP @server-ip
dig +trace
dig -t axfr zone 驗證完全區域傳送指定一個區域,
# dig –t NS. 直接找根
dig –x IP @server-ip(加資源記錄名稱):查詢反向解析
# dig –x 1.1.1.1
dig +trace 跟蹤解析過程
# dig –t NS . +trace
定義本地負責的一個DNS區域的解析:
第一、首先要去修改主配置文件 /etc/named.conf:注釋掉options段中如下選項,也可以修改
//listen-on port 53 { 127.0.0.1; }; --à默認是監視本機
//listen-on-v6 port 53 { ::1; }; -à默認監聽本機的53號端口
//allow-query { localhost; }; --à只允許本機查詢;默認是監聽所以地址上的,支持所以地址查詢
當這些注釋掉以后啟動起來,此時啟動named服務:但是緩存DNS服務器;他給用戶的客戶端數量是有限的,默認是1000 ;如果期望他是個主DNS服務器的話這時候只需要進行一下步驟
文件中options:用來定義全局配置文件
directory:用來定義工作目錄的,就是區域文件放在什么地方;所起指的相對路勁都是相對他而言的
allow-query用來定義允許誰來查詢的;localhost:只允許本地查詢
任何一個配置問價必須要告訴他跟在什么地方,
第二步、去編輯配置文件 # vim /etc/named.rfc1912.zons :在文件尾部新增一個zone
type 指定區域服務類型: master表示是主DNS服務器,
file 指定區域文件名,一般是區域名稱加 .zone 定義;
格式:
zone “magedu.com”IN { magedu.com是區域名
typemaster; ----> master 表示主DNS服務器
file “magedu.com.zone”; ------>file:后跟區域文件,一般是區域名稱加.zone “magedu.com.zone”指的是相對路勁
};
檢測主配置文件語法錯誤:named-checkconf
然后創建magedu.com.zone的文件
切換到 # /cd /var/named 下
在這里手動創建個
查看# /vim /magedu.com.zone : 這個文件都是資源記錄,第一個資源記錄必須是SOA
還可以定義宏,最長的宏是TTL:全局定義,
使用: $TTL 600 :說明這是一個宏,600秒:說明這個區域每一個設備文件如果沒有定義TTL值都是600秒
#hostname 查看本地主機名
@ ttl IN SOA 主DNS服務器FQDN 管理員郵箱 (
2013081201 ---à序列號
2H ---à刷新時間, refresh time, 通知(notify): 只通知給本區域解析庫文件中定義NS記錄的所有主機
5M ---à重試時長retry time
7D ---à過期時長
1d ---à否定回答的TTL值
例:
編輯文件切換到/var/named下編輯文件# vim magedu.com.zone
$TTL 600
@ IN SOA dns.magedu.com. admin.magedu.com. ( -à指定主服務器
2013081301
2H -----à表示刷新時間
10M -----à重試時間,10M表示10分鐘重試一次
7D -----à過期時間,7D表示一周過期
6H) -----à否定回答的時間,6H表示否定回答6個時
IN NS dns ------à后面可以不用寫,它會自動找到定義在/etc/named.rfc1912.zone中與之對應的區域的名稱,并會自動補全到后面,如果后面不不全一定不能加點。寫全時 一定要加點。如果這一條名稱跟第一條一樣,前面可以省略@;
IN MX 10 mail
dns IN A 172.16.100.1
mail IN A 172.16.100.2
www IN A 172.16.100.6
www IN A 172.16.100.7 ----à一個主機名可以有兩個地址
pop IN A 172.16.100.7
ftp IN CNAME www
檢測區域文件語法錯誤:named-checkzone
以上只是個數據庫,地址可以不存在,不管有沒有這臺主機,都可以完成解析
寫完以后,使用 # ls –l 查看文件magedu.com.zone的權限屬主屬組確保主配置文件和各區域解析庫文件的權限為640,屬主為root,屬組為named;
如果不是root和named,就要先改權限: # chmod 640 magedu.com.zone 然后改屬主屬組# chmodroot:named magedu.com.zone
然后檢查主配置文件是否有語法錯誤: # named-checkconf
再來檢查magedu.con.zone的區域對應的文件有無語法錯誤:
# named-checkzone “magedu.com”/var/namd/magedu.com.zone
如果寫的沒問題使用# service named restart 如果每次寫的文件都要重啟,服務正在被互聯網上使用,你重啟正在被請求就會被斷掉,一般服務不使用restart
而是用# service named reload
讓服務不用重啟還能重讀配置文件使
# dig –t A www.magedu.com @172.16.100.1查看本機能不能完成解析,查看A記錄
# host –t A www.magedu.com 172.16.100.1 也可以查看
#dig –t NSmagedu.vom @172.16.100.1 這個前面不能加www :查看NS記錄
#dig –t MXmagedu.vom @172.16.100.1 查看MX記錄
# dig –t CNAME ftp查看ftp的正式名稱是什么
#dig –t CNAME ftp.magedu.com @172.16.100.1 查看magedu.com的全名是什么
#dig –t SOAmagedu.com @172.16.100.1
dig也可以完成區域傳送: #dig –t axfr magedu.com @172.16.100.1 把SOA,NS,MX,A CNAME 全都顯示出來axfr 顯示完全域名
上面每次都要指向本機@172.16.100.1態麻煩,可以編輯# vim/etc/resolv.conf直接指向本機,
# ss–tuan 查看utp協議監聽進程:dns named即會監聽tcp的53號端口,又會監聽utp的53
也可以使用 # netstat – tunl 也可以查看
建立反向區域解析庫:
反向區域的區域名稱:網絡地址反過來.in-addr.arpa
例:100.16.172.in-addr.arpa
第一步編輯 #vim /etc/nemed.rfc1912.zone 在最后面加上
zone “100.16.172.in-addr.arpa”IN {
type master
file “172.16.100.zone”;
};
然后檢查主配置文件的語法錯誤# named-checkconf
接著建立區域設備文件;可也直接把正向的復制過來改動就可以:CNAME不需要反向
# cpmagdu.com.zone 172.16.100.zone
然后編輯# vim 172.16.100.zone 反向區域文件不需要MX記錄的
$TTL 600
@ IN SOA dns.magedu.com. admin.magedu.com. (
2013081301
2H
10M
7D
6H)
IN NS dnsdns.magedu.com. --à后面必須補全,
1.100.16.172.in.addr.arpa. IN NSdns.magedu.com. --à1 后面可以不寫,會自動補全
1 IN PTR dns.magedu.com
2 IN PTR mail.magedu.com
6 IN PTR www.magedu.com
8 IN PTR www.magedu.com
8 IN PTR pop.magedu.com
)
在反向解析庫中這些名字必須寫全
然后改權限:屬主root,屬組named權限640 使用# ls –l查看
檢查:# named-checkzone “100.16.172.in-addr.arpa”/var/name/172.16.100.zone
然后重新載入 # service named reload
載入后想查看服務器怎么樣# rndc status
# rndcstats
# rndcreload
# rndcreconfig
rndc:Remote Name Domain Contoller :遠程名稱域,或名稱服務,進程或控制器;這是個專門控制DNS服務器的工具;它能夠讓dns服務器聽到,也能讓dns重新裝載主配置文件,重新裝載區域文件,顯示各個區域的狀態信息等,甚至還可以讓dns服務器清空緩存,
反向測試:# dig –x 172.16.100.1
對方向區域做完全傳送:#dig –t axfr 100.16.172..in-addr.arpa
創建一個輔助dns服務器:
從服務器不是區的從,是域的從,它主要是建立在域的級別上
如果有多臺dns服務器,那么必須為每個dns服務器建立ns記錄,否則主DNS將不向發送通知
區域定義:編輯 # vim /etc/named.rfc1912.zones
zone "區域名稱" IN {
type slave;
file"slaves/ZONE_NAME.zone";
masters { ----àmasters后指向主服務器是誰,括號里寫上IP,括號內可以有多個,每一個后面都要以分好結尾,就算有一個也要跟分號,
MASTER_DNS_IP;
MASTER_DNS2_IP;
};
}
例:編輯 # vim /etc/named.rfc1912.zones
zone “magedu.com”IN {
type slave;
file “slaves/magedu.con.zone”
masters { 172.16.100.1; };
};
創建完后檢查語法: #named-checkconf
然后回到主服務器。還沒定義這個服務器。先要給他一個ns記錄
編輯他的區域文件 # /vim magedu.com.zone
加一個ns記錄: IN NS ns2
指定ns2是那臺主機: ns2 In A 172.16.100.17
注:每一個dns必須有一個ns記錄。而且這個ns記錄對應的主機名一定得有個A記錄,而且這個A記錄一定是那臺服務器的地址;有一點差錯主從服務器都會有故障,
檢查: # named-checkzone “magedu.con”magedu.com.zone
在主服務器上先裝載下: # rndc reload
然后檢測: # dig –t NS magedu.com
啟動:# service named start
查看日志:跟dns相關的日志都在、var/log/messages下
# tail /var/log/messages
確保從服務器有權限: # dig –t axfr magedu.com @172.16.100.1