【概念】
DNS(Domain Name System),即域名系統,是互聯網上爲主機提供分配一個便於記憶的名稱系統。
【需求】
計算機發展之初,僅僅是用IP進行主機的網絡間通信,但單純的記憶IP,這對人類的認知造成很大程度的困惑。所以爲了解決這種情況,最早就出現了本機的localhost文件將IP和名稱綁定。但隨着網絡的發展,接入的終端越來越多,本地的localhost文件已經無法承擔這種幾何數爆炸的發展趨勢,所以就應運而生了IANA組織。它將網絡中的主機名和IP綁定,並建立一個數據庫提供查詢。但終究不能最終解決問題。這就使得DNS出現在了人們的視野中。它基於C/S架構下,全球共提供了13臺根節點服務器,下面又衍生出一級級的管理單元,每個管理單元只負責管理下級用戶。這就使得主機的存在和查詢得到了儘可能程度的緩和。下面我們就它的結構來做下說明。
【原理結構】
我們都知道DNS的結構相當於倒樹狀結構,最上面的是根,然後下面是各級管理單元,最後則是各類應用服務主機。
而它的查詢方式一般可分爲遞歸查詢和迭代查詢。所謂遞歸查詢就是,我向你提出問題,你不管怎麼樣都要給我提供解決方案;迭代查詢則是,我向你提出問題,你不知道結果,但你知道可以找誰問到結果,然後我就再去通過你說的,去找那個能給我結果的人。
而網絡中通常都是使用遞歸+迭代查詢來獲得結果的。具體步驟如下:
總體結構圖:
域內訪問:
例如:www.liaria.com.要訪問mail.liaria.com.,它只需要查詢liaria.com.服務器即可。liaria.com.服務器查詢到自己管轄內有mail.liaria.com.主機,直接把結果返回給www。
PS:域內訪問時,只需要向上級DNS服務器發出一次查詢就能得到結果,這就僅僅用到了遞歸查詢。
域外訪問:
例如:www.liaria.com.要訪問www.sina.com.cn.,它只需要查詢liaria.com.服務器即可。liaria.com.服務器查詢到自己沒有結果,即向根服務器.發出查詢請求;
1.根服務器查詢到是cn.管轄,就告訴liaria.com.說自己沒有結果,找cn.服務器即可;
2.liaria.com.繼續向cn.查詢,cn.查過自己的記錄後,告訴liaria.com.說去找com.cn.服務器;
3.liaria.com.繼續向com.cn.查詢,com.cn.查過自己的記錄後,告訴liaria.com.說去找sina.com.cn.服務器;
4.liaria.com.繼續向sina.com.cn.查詢,sina.com.cn.查過自己的記錄後,說www.sina.com.cn.就在自己的管轄下,IP是XXX;
5.lliaria.com.拿到www.sina.com.cn.的IP,告訴www.liaria.com.結果,www.liaria.com.即可通過結果返回的IP訪問www.sina.com.cn.完成域外訪問的全過程。
PS:域外訪問時,主機向上級DNS服務器發出一次查詢,上級DNS服務器就通過層層迭代得到結果。這就用到了遞歸和迭代兩個階段。
【DNS服務器的種類】
主DNS服務器:域內的主DNS服務器,可以修改或定期發送更新給從DNS服務器。
從DNS服務器:域內的從DNS服務器,可以接收主DNS服務器發送來的更新,併爲主DNS分擔一些負擔。
緩存服務器:查詢的過程是從本機localhost文件到緩存,最後再到網絡中的遞歸或迭代。當緩存中有記錄時,會直接調用緩存中的記錄。緩存服務器就是起到這類操作的作用。
【配置結構】
DNS中的配置主要有兩大類:
1.主配置文件
2.解析庫文件
主配置文件是用戶發出查詢請求時,依照主配置文件的格式進行執行查詢;
解析庫文件是主配置文件按照用戶的請求格式,來進行的調用查詢;
因此常規配置只需要做好上述兩塊即可。而最關鍵的還是寫好解析庫文件的資源記錄。
【資源記錄】
資源記錄的組成:
SOA起始授權服務器,即主DNS服務器;
NS名稱服務器,如果有多臺NS服務器,每一個都必須有對應的NS記錄;對正向解析文件來說,NS後都必須跟一條A記錄;
AAddress,用於記錄服務器的IP地址;
MX定義郵件服務器,如果有多臺,每一個都必須有對應的MX記錄;而且各MX記錄還有優先級屬性;
CNAME定義服務器的別名;
PTR反向解析記錄;
資源記錄的格式:
name[TTL]INRRTypevalue
例如:
SOA:@INSOAns.lodey.com.admin.londey.com. ( 2014080601 1D 15M 7W 1D)
NS:@INNSns.londey.com.
A:www.INA192.168.100.1
MX:@INMX10mail.londey.com.
CNAME:web.londey.com.INCNAMEwww.londey.com.
PTR:1.in-addr.arpa.INPTRwww.londey.com.
【常規應用】
DNS的最常規應用應該屬域的正向和反向解析。正向解析是將域名解析爲IP,反向解析則是把IP解析爲域名。
【實例】
正向解析:
1.安裝bind:
#yum -y install bind
2.修改主配置文件:
#vi /etc/named.conf
options {
directory "/var/named";
recursion yes;
};
zone "." IN {
type hint;
file "named.ca";//指定全球13臺根服務器所在位置
};
include "/etc/named.rfc1912.zones";
3.在/etc/named.rfc1912.zones中創建區域信息:
#vi /etc/named.rfc1912.zone
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "londey.com" IN {
type master;//自己添加的區域
file"londey.com.zone
};
4.在/var/named目錄下創建區域文件“londey.com.zone"
#vi /var/named/londey.com.zone
$TTL 500
@500INSOAns.londye.com.admin.londey.com. ( 2014080401 1D 1H 1W 3H )
@500INNSns.londey.com.
@500INMX 10mail.londey.com.
ns500INA192.168.100.1
www500INA192.168.100.1
5.在/var/named目錄下創建區域文件“localhost.zone”
$TTL 600
@INSOAlocalhost.admin.localhost. ( 2014090401 1D 1H 1W 3H )
INNSlocalhost.
INA127.0.0.1
6.修改文件屬性並通過工具檢查語法:
#chmod 640 londey.com.zone
#chown root:named londey.com.zone
#named-checkzone "londey.com.zone" /var/named/londey.com.zone
#chmod 640 localhost.zone
#chown root:named localhost.zone
#named-checkzone "localhost.zone" /var/named/localhost.zone
7.啓動服務並測試:
#service named start
#ss -tunl | grep :53
#dig -t A www.londey.com
- - - - - - - - - - - - - - - - -
反向解析:
1.在named.rfc1912.zones建立反向區域:
#vi /etc/named.rfc1912.zones
zone "100.168.198.in-addr.arpa." IN {
type master;
file "192.168.100.zone";
};
2.檢查語法:
named-checkconf
3.在解析庫中建立反向區域文件:
#cd /var/named/
#vi 192.168.100.zone
$TTL 500
@500INSOAns.londye.com.admin.londey.com. ( 2014080401 1D 1H 1W 3H )
@500INNSns.londey.com.
1500INPTRns.londey.com.
4.檢查語法錯誤:
named-checkzone "100.168.192.in-add.arpa" /var/named/192.168.100.zone
======================================================
主從配置:
【主DNS配置】
1.修改主配置文件:
#vi /etc/named.conf
acl mynetwork {
192.168.100.0;
}
options {
directory "/var/named";
allow-query {mynetwork;};
allow-recursion {mynetwokr};
};
zone "liaria.com" {
type master;
file "liaria.com.zone";
allow-update {yes};
allow-transfer {192.168.100.0;};
};
2.修改區域解析庫文件:
#vi /var/named/liaria.com.zone
$TTL 600
$ORIGIN liaria.com.
@INSOAns.liaria.com.admin.liaria.com.( 2014080601 1D 15M 7W 1D)
INNSns.liaria.com.
INMX 10mail.liaria.com.
INNSns1.liaria.com.
nsINA192.168.100.1
ns1INA192.168.100.2
wwwINA192.168.100.1
ftpINA192.168.100.2
【從DNS配置】
1.修改從服務器的區域信息文件:
#vi /etc/named.rfc1912.zones
zone "liaria.com" IN {
type slave;
file "slaves/liaria.zone;
masters {192.168.100.1;};
};
======================================================
子域授權:
【主DNS配置】
1.配置區域解析文件:
#vi /usr/named/liaria.com.zone
$TTL 600
$ORIGIN liaria.com.
@INSOAns.liaria.com.admin.liaria.com. ( 2014080601 1D 15M 7W 1D)
INNSns
INNSns.ops
nsINA192.168.100.1
ns.opsINA192.168.100.2
【子域服務器配置】
1.增加子域信息文件:
#vi /etc/named.rfc1912.zones
zone "ops.liaria.com.zone" IN {
type master;
file "ops.liaria.com.zone";
allow-update {none;};
};
2.增加子域的解析文件:
#vi /var/nemd/ops.liaria.com.zone
$TTL 600
$ORIGIN ops.liaria.com.
@INSOAns.ops.liaria.com.admin.liaria.com. ( 2014080601 1D 15M 7W 1D)
INNSns
nsINA192.168.100.2
wwwINA192.168.100.2
ftpINA192.168.100.2
======================================================
智能DNS:
【主DNS配置】
1.修改主配置文件:
#vi /etc/named.conf
acl liarianetwork {
172.16.0.0;
192.168.0.0;
};
options {
directory "/var/named";
allow-query { liarianetwork; };
allow-recursion { liarianetwork; };
};
2.修改域信息文件:
#vi /etc/named.rfc1912zones
view unicom {
match-clients { 172.16.0.0; };
zone XXX
};
view mobile {
match-clients { 192.168.0.0; };
zone XXX
};
======================================================