DNS(Domain Name Server)域名服務器
1、域名(Domain Name),是由一串用點分隔的名字組成的Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指地理位置)
2、域名的命名方式:
FQDN(Fully Qualified Domain Name)完全合格域名/全稱域名,是指主機名加上全路徑。全域名可以從邏輯上準確地表示主機在什麼地方,也可以說全域名是主機名的一種完全表示形式。從全域名中包含的信息可以看出主機在域名樹中的位置。
3、DNS分類:
主
從
轉發
(1)根域名服務器(root-servers.org):是互聯網域名解析系統(DNS)中最高級額域名服務器,全球共13臺主要服務器。目前的分佈是:主服務器(A)美國1個,設置在弗吉尼亞州的杜勒斯;輔助服務器(B至M)美國9個,瑞典、荷蘭、日本各一個。
5、DNS查詢方式:
(1)遞歸查詢
一般客戶機向服務器之間屬遞歸查詢,即當客戶機向DNS服務器發出請求後,若DNS服務器本身不能解析,則會向另外的DNS服務器發出查詢請求,得到後轉交給客戶機。
主機向本地域名服務器的查詢採用遞歸查詢:
主機向本地域名服務器的查詢一般都是採用遞歸查詢。如果主機所詢問的本地域名服務器不知道被查詢域名的IP地址,那麼本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續發出查詢請求報文
(2)迭代查詢(反覆查詢):
一般DNS服務器之間屬迭代查詢,如:若DNS2不能相應DNS1的請求,則它會將DNS3的IP給DNS2,以便再向DNS3發出請求
本地域名服務器向根域名服務器的查詢通常採用迭代查詢:
本地域名服務器向根域名服務器的查詢通常是採用迭代查詢。當根域名服務器收到本地域名服務器的迭代查詢請求報文時,要麼給出所查詢的IP地址,要麼告訴本地域名服務器:“你下一步應當向哪一個域名服務器進行查詢”。然後讓本地域名服務器進行後續的查詢。
查詢過程如圖:
以上,爲DNS簡單理論知識,
下面就開始具體實施
操作系統:redhat5.5
1,裝包
DNS 軟件
bind(Berkeley Internet Name Domain)
# yum install bind bind-chroot caching-nameserver(樣例文件)
*(注意標註爲“*”)
*如果你只安裝bind,那麼/var/named 將成爲bind存放數據文件的位置,/etc/named.conf 將成爲你的配置文件
*如果你安裝了bind-chroot,那麼/var/named/chroot/var/named 將成爲bind存放數據文件的位置,/var/named/chroot/etc/named.conf 將成爲你的配置文件。
DNS服務器使用的服務端口是:
tcp 53 //用戶主域和輔助域的同步
udp 53 //用於域名查詢
2,配置
# cd /var/named/chroot/etc/ (配置文件目錄)
# cp -p named.caching-nameserver.conf named.conf (複製樣例文件)
# vim named.conf (手動編寫主配置文件)
===============
options {
directory"/var/named";
};
// /--> /var/named/chroot
//保存區域配置文件
include "/etc/named.rfc1912.zones";
===============
注意權限,保證“named“用戶能讀這個文件
# ls
localtime named.caching-nameserver.confnamed.conf named.rfc1912.zones rndc.key
1.正向解析
# vim named.rfc1912.zones
=====================================
zone "google.com" IN {
type master;
file "google.com.zone";
};
======================================
# pwd
/var/named/chroot/var/named
# ls
data localhost.zone named.ca named.local slaves
localdomain.zone named.broadcast named.ip6.local named.zero
# cp -p localhost.zone google.com.zone
=================
$TTL 86400
@ IN SOA dns.google.com. root.mail.google.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dns.google.com.
dns IN A 192.168.0.153
www IN A 192.168.0.153
mail IN A 192.168.0.153
* 區域配置文件也要要求named用戶能讀。
$TTL 86400 數據緩存時間,單位是秒,當有外部DNS服務器對你的DNS的這個區域進行查詢時,這個記錄會放置在對方DNS服務器內幾秒鐘
@ 在主配置文件裏定義的區名“google.com”
IN internet
SOA start of Authority其實授權記錄,表示區域數據的開始
dns.google.com. MasterDNS服務器主機名,表示這個區域主要由哪個DNS作爲master的意思,注意後面的小數點
root.mail.google.com 錯誤郵件的接收者,本來應該是root@mail.google.com,不過因爲@已經被作爲特殊代碼(zone),所以就用小數點來取代了。
42 序列號,用於主從更新,該序列號作爲slave與master更新的依據,一般利用日期來設定
3H 從服務器多長時間和主服務器聯繫一次,進行數據更新
15M 重試時間,如果從服務器和主服務器聯繫不上,多長時間重試一次
1W 過期時間,如果從服務器一週都沒和主聯繫上,則命令從服務器不在連接主服務器了。
1D) 如果得到的信息是否定的,保存多長時間(沒有指定生存期的數據,可以保存在數據庫中的時間,即TTL.)
NS name server 的縮寫,後面接的一定是主機名,代表:這個zone的查詢請向後面這部主機要求,如果你這個zone有兩部以上的DNS服務器負責時,就必須寫兩個NS,而NS後面接的主機名稱必須要有IP的對應,這是就需要A這個標記了。
A 正向解析的標識(域名 --> IP)參數格式:[hostname] IN A [IP]
本區域配置文件未出現的標識:
(!)AAAA ipv6
(2)PTR 反向解析的標識(IP -->域名)參數格式:[IP] IN PTR [hostname] PTR爲Pointer的簡寫。後面主機儘量使用完整FQDN,亦即加上小數點“.”。
(3)MX:Mail Exchanger的簡寫,參數是:[hostname] IN MX [順序] [主機名稱]
MX 與MAIL SERVER 有關,其用途是郵件轉發,MX後面的數值越小越優先,而接的主機名稱必須有A記錄纔可以。
(4)CNAME:主機別名。參數是:[hostname] IN CNAME [主機名稱]
*注意事項:如果有錯誤,用語法檢查命令:
第一個檢查命令:named-checkconf //檢查主配置文件
# named-checkconf /var/named/chroot/etc/named.conf
第二個檢查命令:named-checkzone // 檢查zone文件
# name-checkzone google.con google.com.zone
zone google.com/IN: loaded serial 42
OK
啓動服務
# service named start (或者:#/etc/init.d/named start)
# vim /etc/resolv.conf //編輯/etc/resolv.conf,指定dns服務器
===========
nameserver 192.168.0.153
===========
# pingwww.google. com //測試命令
2、反向解析
正向解析配置完成,就來配置反向解析。
#vi /var/named/chroot/etc/named.rfc1912.zones
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.local";
};
#cd /var/named/chroot/var/named
#cp -p named.local 192.168.0.local
#vi /var/named/chroot/var/named/192.168.0.local
$TTL 86400
@ IN SOA dns.google.com. root.google.com.(
1997022700 ; Serial
28800; Refresh
14400; Retry
3600000; Expire
86400 ); Minimum
IN NS dns.google.com.
153 IN PTR dns.google.com.
153 IN PTR www.google.com.
153 IN PTR google.com.
#service named restart
#dig -x 192.168.0.153 //測試
主從同步
原理:
(1)當主服務器做好配置之後,會通知從服務器
(2)從服務器收到通知之後,查詢SOA記錄,查看序列號
(3)從服務器去和主服務器比對序列號,如果從的序列號比主的小,那麼從就要去和主進行數據同步。因此,主服務器修改完配置文件之後,都要把序列號調大,建議使用日期格式
AXFR 完全區域傳輸
IXFR 增量區域傳輸
(4)從服務器向主服務器發起數據請求;主服務器收到請求之後,開始傳輸數據
優點:
(1)從服務器可以分擔主服務器的查詢請求
(2)有了從服務器之後,額可以快速的相應client的請求
(3)即使主服務器出現問題,從服務器依然可以提供查詢服務
======
Master//主服務器
======
# vim named.rfc1912.zones
=====================================
zone "google.com" IN {
type master;
file "google.com.zone";
allow-transfer { 192.168.0.152; }; 這句指令指定只有授權的從服務器才能從主服務上獲取區域數據信息。如果想實現多個從服務器,可以在{ }裏填寫,用“;”結束。
};
===================================
======
Slave//從服務器
======
# yum install -y bind bind-chroot//安裝bind
# cd /var/named/chroot/etc/
# vim named.conf//配置主配置文件
===========
options {
directory "/var/named/slaves";
//這個目錄要保證“named”用戶能寫
};
include "/etc/named.rfc1912.zones";
==========
#vim /var/named/chroot/etc/named.rfc1912.zones
===========
zone "google.com" {
type slave;類型是從
file "google.com.slave";文件名任意
masters { 192.168.0.153; };指定哪臺機器是我的master
};
============
#service named restart
------------------------------
在主服務器上 加上also-notify可以在主服務器上重新加載配置文件時做到向從服務器的“主動推”動作
注意事項:當修改/var/named/chroot/var/named/zone 文件內的參數後,需要增加序列號
zone "google.com" IN {
type master;
file "google.com.zone";
allow-update { none; };
also-notify { 192.168.0.152; };主動推
};
使用密鑰進行數據傳輸 - - 事物簽名
master //主服務器
命令的用法:
# dnssec-keygen
Usage:
dnssec-keygen -a alg -b bits -n type [options] name
Version: 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2
Required options:
-a algorithm: RSA | RSAMD5 | DH | DSA | RSASHA1 | HMAC-MD5
-b key size, in bits:
RSAMD5:[512..4096]
RSASHA1:[512..4096]
DH:[128..4096]
DSA:[512..1024] and divisible by 64
HMAC-MD5:[1..512]
-n nametype: ZONE | HOST | ENTITY | USER | OTHER
name: owner of the key
[root@t1 etc]# dnssec-keygen -a hmac-md5 -b 128 -n host 3key
K3key.+157+62471
[root@t1 etc]# ls
K3key.+157+62471.key
K3key.+157+62471.private
[root@t1 etc]# cat K3key.+157+62471.key
3key. IN KEY 512 3 157 reyVufo4DOsiKSLUZ173RA==
要:reyVufo4DOsiKSLUZ173RA==
# vim /var/named/chroot/etc/named.conf
添加
key 3key {
algorithm hmac-md5;
secret "reyVufo4DOsiKSLUZ173RA==";
};
#vim /var/named/chroot/etc/named.rfc1912.zones
zone "google.com" IN {
type master;
file "google.com.zone";
allow-transfer { key 3key; };
};
Slave //從服務器
# vim /var/named/chroot/etc/named.conf
添加
key 3key {
algorithm hmac-md5;
secret "reyVufo4DOsiKSLUZ173RA==";
};
#vim /var/named/chroot/etc/named.rfc1912.zones
zone "google.com" {
type slave;類型是從
file "google.com.slave";
masters { 192.168.0.153 key 3key ; };
};
主 從 啓動服務
在主上面看日誌:
[root@t1 etc]# tail -0f /var/log/messages