DNS的工作原理
DNS基於C/S(Client/Server,客戶機/服務器)模式,因而分爲Client和Server兩種角色。Client扮演詢問的角色,也就是向Server詢問一個Domain Name,而Server必須要回答此Domain Name所對應的真正IP地址。而當地的DNS先會查自己的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的其他DNS進行求助詢問,依此得到答案之後,將收到的答案存起來,並回答客戶。
DNS服務器會根據不同的授權區(Zone),記錄所屬該網域下的各名稱資料,這個資料包括網域下的次網域名稱及主機名稱。在每一個名稱服務器中都有一個高速緩存區(Cache),這個高速緩存區的主要目的是將該名稱服務器所查詢出來的名稱及相對的IP地址記錄在高速緩存區中,這樣當下一次還有另外一個客戶端到次服務器上去查詢相同的名稱時,服務器就不用在到別臺主機上去尋找,而直接可以從緩存區中找到該名稱記錄資料,傳回給客戶端,以加速客戶端對名稱查詢的速度。
舉個例子,當DNS客戶端向指定的DNS服務器查詢網Internet上的某一臺主機名稱時,DNS服務器會在該資料庫中找尋用戶所指定的名稱。如果沒有,該服務器會先在自己的高速緩存區中查詢有無該條紀錄,如果找到該條名稱記錄後,會從DNS服務器直接將所對應到的IP地址傳回給客戶端;如果DNS務器在資料記錄查不到且高速緩存區中也沒有時,服務器纔會向別的DNS服務器查詢所要的名稱。例如,本地的DNS服務器會向最接近(比如屬於同一個IP地址段或者同一個ISP)的DNS服務器去要求幫忙找尋該名稱的IP地址.在另一臺服務器上也有相同的動作的查詢,當查詢到後會回覆原本要求查詢的服務器,該DNS服務器在接收到另一臺DNS服務器查詢的結果後,先將所查詢到的主機名稱及對應IP地址記錄到高速緩存區中,最後在將所查詢到的結果回覆給客戶端。這樣就成功地完成了一次標準的DNS查詢-應答過程。
DNS 服務器的類型:
主服務器;
輔助服務器
緩存服務器
轉發器
配置DNS服務器:
首先要有域名;
申請域名的總公司(IANA)
域名服務商:
萬網:www.net.cn
新網:www.xinnet.com
一臺域名服務器可以解析多個域名;
1、安裝軟件包bind.i386
bind: 服務器進程 (berkeley internet name domain )
yum list all bind* :查看軟件包
yum install bind 安裝軟件包
建立配置文件指定根的路徑:
bind 配置文件的路徑: /etc/named.conf
而屬主屬組一定要是:root:named
/var/named bind的工作目錄
2、# ls /etc | grep named 查詢named.conf 默認是不會提供的;
yum install caching—namedserver.I386
這個軟件包直接提供named.conf文件
下面是手動添加dns的步驟:
1、手動配置主配文件:
Vim /etc/named.conf
Options {
directory “/var/named”; 工作目錄
}; 記住都要以分號結尾;
Zone “.” IN {
type hint; 區域類型、hint是提示域;
file “named.ca”;相對工作目錄的區域文件
};區域;
Zone “localhost” IN {
type master
file “localhost。zone”;
};注意zone後面跟的名字一定要是 localhost;
Zone “0.0.127.in-addr.arpa”IN {
type master ;
file “named.local”;
}; 反向解析; 記住在0.0.127.in-addr.arpa 那後面的那個後綴“.”千萬不能少;
配置文件寫好了:
該改權限: 配置文件的屬組一定要named
chown :named /etc/named.conf
dig –t NS . : 查看全球根的服務器名稱:必須得聯網;
dig –t NS . > /name.ca 保存至/var/named
改屬組: chown :named named.ca
2、配置localhost.Zone
裏面只包含兩類數據:
宏定義:$TTL 600
$ORIGN localhost.
資源記錄: 由記錄類型記錄值所定義出來的;
每一行的格式根據記錄類型不同格式不同;
name [TTL] IN RECORD_TYPE VALVE
例如: www.baidu.com. 600 IN A 1.1.1.1 正向解析;
1.1.1.1 600 IN PTR WWW.baidu.com. 反向解析;
記住後面的後綴“ . ” 別忘記;
兩個獨特的資源類型:
SOA : 區域文件中第一條記錄必須是SOA
例如: baidu.com 600 IN SOA ns.baidu.com. admin.baidu.com.(
2012030501 版本號
20M 刷新時間
5M 重試時間
5D 過期時間 1D 緩存時間 )
NS : NS 後跟的值必須是服務器名稱;
例如: baidu.com. 600 IN NS ns.baidu.com.
MX : 一般出現在正向文件中;
baidu.com. 600 IN MX 10 mail.baidu.com. 注意MX 有優先級;
mail.baidu.com. 600 IN A 1.1.1.3 一定要給MX 寫個A 記錄;
Vim localhost.zone
$TTL 600
localhost. IN SOA localhost. admin localhost.(
2012030501
1H
10M
1W
1D )
localhost. IN NS localhost.
localhost. IN A 127.0.0.1
vim named.local
$TTL 600
localhost. IN SOA localhost. admin.localhost.(
2012030501
1H
10M
1W
1D )
localhost. IN NS localhost.
1 IN PTR localhost.
~ chown :named localhost.zone
chown :named named.local
爲了避免錯誤: service named named configtest 檢查語法錯誤
3、 啓動服務: service named start
DNS 監聽服務在 TCP/UTP 端口 : 53
netstat –tulp 查看端口
解析: dig -t NS localhost