一、 DNS服務器:
計算機網絡系統只認識IP,但是,使用計算機時是否能記住網絡上所有主機的IP呢?顯然不可能。。。人腦對於數字組成的IP的記憶較差,相比起來,記住相應的主機名就容易的多。。這就發展成爲現在的DNS服務器。
DNS,Domin Name System 域名系統。是由柏克萊大學發展的BIND軟件所提供的。基本上DNS最主要的工作就是將Host Name與IP相對應。
二、 DNS的查詢過程
1、DNS架構
一般最上層域名(Generic TLDs): .com、.org、.gov、.edu、.mil、.net等
國碼或區碼最上層域名(Country Code TLDs):.uk、.jp等
域名及其意義:
com 公司、行號、企業
org 組織、機構
edu 教育單位
gov 政府單位
net 網絡、通信
mil 軍事單位
全球有13個根DNS服務器:(可以用# dig -t NS . 命令查看)
b.root-servers.net. 603213 IN A 192.228.79.201
c.root-servers.net. 603214 IN A 192.33.4.12
d.root-servers.net. 603214 IN A 128.8.10.90
d.root-servers.net. 603214 IN AAAA 2001:500:2d::d
e.root-servers.net. 603216 IN A 192.203.230.10
f.root-servers.net. 603216 IN A 192.5.5.241
f.root-servers.net. 603216 IN AAAA 2001:500:2f::f
g.root-servers.net. 603218 IN A 192.112.36.4
h.root-servers.net. 603218 IN A 128.63.2.53
h.root-servers.net. 603218 IN AAAA 2001:500:1::803f:235
i.root-servers.net. 603220 IN A 192.36.148.17
i.root-servers.net. 603219 IN AAAA 2001:7fe::53
j.root-servers.net. 603221 IN A 192.58.128.30
j.root-servers.net. 603220 IN AAAA 2001:503:c27::2:30
2、DNS的搜索流程
(1)先查看本身有沒有記錄(查看本機Hosts文件)
(2)向最頂層(root)查詢
(3)向第二層查詢
(4)向下層持續查詢
(5)記錄暫存內存
本機緩存---本機hosts文件-----DNS服務器緩存-----DNS hosts文件-----DNS 所解析的主機--
3、DNS使用的端口號:
DNS使用的是網絡查詢,即開通監聽狀態的端口。
啓動DNS的Named時,會同時啓動TCP和UDP的53號端口。
# netstat -tunlp | grub :53 檢查端口號
4、子域授權
設置方法:
上層DNS授權,自己設置DNS主機
直接請求上層DNS主機爲自己設置DNS
三、DNS主機的詳細設置
詳細設置:
1、主要配置文件是/etc/named.conf
2、每個正向解析、反向解析都需要一個文件,而文件名是由/etc/named.conf設置的。其所在路徑是由/etc/named.conf定義的。
3、目前的BIND程序可以進行chroot,其配置文件爲/etc/sysconfig/named
4、當DNS查詢時,若本身沒數據庫,則前往root(.)或Forwarders主機查詢。
5、DNS服務器的架設需要上層DNS的授權纔可以成爲合法的DNS服務器。
6、判斷named是否啓動成功,一定要查閱/var/log/messages內的信息。
注:沒有向上層ISP註冊合法的域名,就沒有權利架設合法的DNS服務器。
四、簡單的案例
以RedHat系列主機上DNS的架設爲例:
1、首先查看本機上是否有DNS服務(若無這項服務並安裝DNS服務):
# lsmod
# yum list all bind*
# yum install bind
2、/etc/named.conf配置文件
/etc/named.conf配置文件是整個Linux上DNS的核心,其主要有三部分:
(1)規範DNS服務器的使用權限,包括能否查詢、forward是否安裝、Master/Slave架構等。
(2)設置Zone(子域)以及Zone File的所在。
(3)設置DNS本機管理接口以及其相關的金鑰文件(Key File)。
具體設置爲:
# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpr" IN {
type master;
file "named.local";
};
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
3、最上層DNS(root)數據庫文件的設置
一般此文件的最上層DNS爲13個根DNS服務器。
# dig -t A NS . > named.ca
4、正向解析數據庫的設置
# vim /var/named/localhost.zone
$TTL 600
@ IN SOA localhost. admin.localhost. (
2012030501
1H
10M
1W
1D)
IN NS localhost.
localhost. IN A 172.0.0.1
注:$TTL 用於設置當外部DNS服務器對自己的DNS領域進行查詢時,記錄會放置在對方DNS服務器內幾秒鐘。
$ORIGIN 重新指定Zone的定義。
@ 這個符號代表Zone的意思。
. 它代表一個完整的主機名稱(FQDN),而不僅僅是Host Name。
SOA SOA是Start Of Authority的簡稱,代表Master/Slave相關的認證、授權資料
DNS自己的領域的名稱解析器: A 正向解析標誌
PTR 反向解析標誌
NS 後面一定是主機名稱,向後面的主機要求 Zone查詢。
MX Mail eXchanger: 郵件交換器
(有優先級 0-99)
CNAME 正式名稱。 建立主機別名
2012030501 版本號
1H 刷新時間爲一個小時
10M 重試時間爲10分鐘
1W 超時時間爲一個月
1D 否定時間爲一天
4、反向解析配置文件設置
# vim /var/named/named.local
$TTL 600
@ IN SOA localhost. admin.localhost. (
2012030501
1H
10M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
5、解析其它主機的配置文件的設置
# vim /var/named/magedu.com.zone
$TTL 600
$ORIGIN magedu.com
@ IN SOA ns.magedu.com. admin.magedu.com. (
2012030501
1H
10M
1W
1D)
IN NS NS
IN MX 10 mail
ns IN A 172.16.100.1
mail IN A 172.16.0.1
www IN A 1.1.1.1
ftp IN A 1.1.1.2
pop IN CNAME mail
www IN A 1.1.1.10
imap IN A 1.1.1.10
6、文件數組修改
把配置文件的數組修改爲named。
# chown :named /etc/named
# chown :named /var/named/named.ca
# chown :named /var/named/localhost.zone
# chown :named /var/named/named.local
# chown :named /var/named/magedu.com.zone
7、DNS的啓動與觀察
測試配置文件是否有語法錯誤:
# service named configtest
DNS服務的啓動:
# service named start
若修改了配置文件,添加DNS功能,可以重新載入數據文件:
# service named reload
五、DNS的查詢指令:host、 nslookup、 dig。
host -a 列出主機的所有相關信息,包括IP、TTL等。
host -t 跟解析的標誌。
nsloop 後可以跟上待查詢的主機名稱或IP等參數。
dig -t 跟解析的標誌。
dig +trace -t A 正向解析時顯示其解析過程
例如:
# dig -t localhost
# dig -x 127.0.0.1
# dig -t A www.baidu.com
# dig +trace -t A www.baidu.com
# dig -t A www.magedu.com @172.16.100.1
# host -t A www.magedu.com
# host -t NS magedu.com