一. 域名解析的基本概念
1. 域名解析的意義
實現域名和IP地址之間的轉換過程
2. 域名解析的方法
HOSTS:在網絡中的每臺主機都用一個文本文件來存放域名和IP地址的對照表,適用於小型網絡
NIS:存放的解析記錄,適用於中型網絡
DNS:域名解析信息分佈存儲在網絡中每臺主機,實現分佈式解析(適用於大型網絡)
二. DNS的工作體系
1. 組成
(1) 域名空間
DNS域名空間是命名機制,它提供DNS數據庫的層次樹狀結構,由根域、頂級域、子域與主機名組成,如下圖所示:
DNS域名空間最上面的是根域,可以用圓點“.”表示,它由InterNIC(因特網網絡信息中心)管理。根域下定義了許多頂級域,如下表所示。
域名稱 |
說明 |
Com Edu Net Org Gov Mil 其他的國碼 |
商業機構 教育,學術研究單位 網絡服務機構 財團法人等非營利機構 官方政府機構 國防軍事單位 如.cn表示中國 |
(2) DNS名稱服務器
DNS名稱服務器保存有資源記錄並能響應名稱查詢的計算機。如果DNS服務器負責管理一個或多個區域,就稱此DNS服務器爲這些區域的授權名稱服務器。授權服務器負責管理所管轄的區域中的數據,併爲查詢的DNS客戶提供這些數據。DNS名稱服務器有以下三種類型:
l 主名稱服務器
主要名稱服務器負責存儲授權區域的一切數據且管理該區域和對區域具有解析功能。
l 輔助域名稱服務器
輔助名稱服務器可以從主名稱服務器中轉移一整套區域信息。並且輔助名稱服務器會定時從主名稱服務器中更新數據,同時可以接受客戶機的查詢.
l 唯高速緩存服務器
緩存服務器負責臨時存儲主名稱服務器己解析過域名記錄
(3) 客戶機
DNS客戶機利用一個簡單的程序或子程序庫,從服務器中提取信息以響應對域名空間的主機查詢
2. DNS的解析過程
(1) 正向解析
當DNS客戶端向DNS服務器查詢IP地址時,或DNS服務器在向另外一臺DNS服務器查詢IP地址時,有以下三種查詢方式:
l 直接從緩衝存儲器解析
可以直接從DNS客戶端或DNS服務器的高速緩衝器中獲得查詢結果。
l 遞歸查詢
也就是DNS客戶端送出查詢要求後,如果本地DNS服務器內沒有需要的數據,則DNS服務器會代替客戶端向其他的DNS服務器查詢,一般由DNS客戶端所提出的查詢要求是屬於遞歸查詢。
l 循環查詢
一般DNS服務器與DNS服務器之間的查詢屬於這種查詢方式,當第1臺DNS服務器在向第2臺DNS服務器提出查詢要求後,如果第2臺DNS服務器內沒有所需要的數據,則它會提供第3臺DNS服務器的IP地址給第1臺服務器,讓第1臺DNS服務器向第3臺DNS服務器查詢。具體解析過程,如下圖所示:
(2) 反向解析
域名反向解析可以讓DNS客戶端利用IP地址查詢其主機名稱,服務器利用in-addr.arpa反向指針,將一個ip地址指點向域名。
三. DNS的配置:
1.安裝DNS服務器軟件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
相關文件:
/etc/named.conf dns服務器核心配置文件
/etc/rc.d/init.d/nameddns服務器守護進程所對應的程序
/var/named/named.ca dns服務器根區域文件
/var/named/localhosts.zone dns服務器localhost區域的正向文件
/etc/named.conf dns服務器的區域和服務器選項設置文件
/var/named/named.local 127.0.0.0的反向解析文件
2. 修改/etc/named.conf
作用:建立區域
文件內容:
//說明語句
配置語句
...........
配置語句
..........
配置語句
..........
..........
說明:常用的配置語名有以下幾種
(1) options聲明
作用:定義DNS服務器的全局選項
格式:options {
........;
........;
全局選項;
........;
........;
};
全局選項:
directory “路徑名”;
定義區域服務器區域文件的存放目錄
recursion yes/no;
是否使用遞歸查詢方式,默認爲yes
transfer-format one-answer/many-anser;
是否允許一條消息中放入多條應答信息,默認值爲one-answer
forwarders {ip地址;…….};
定義轉發器
allow-query {ip址址;/網絡號;/any;};
定義允許向服務器發送查詢請求的客戶機地址
allow-transfer {ip地址;/網絡號;/any;};
定義允許從主服務器中更新的從服務器地址
listen-on [port 端口號] {ip地址;};
定義dns服務綁定的端口和地址
(2) zone聲明
作用:定義管理區域
格式:zone “域名” IN {
…………;
…………;
區域設置選項;
…………;
…………;
};
區域設置選項:
type master/hint/slave;
定義區域的類型,
master表示一個區爲主域名服務器
hint 說明一個區爲啓動時初始化高速緩存的域名服務器
slave 說明一個區爲輔助域名服務器
file “文件名”;
說明一個區域的區域文件名稱
allow-update {none;/key 密鑰名稱;};
說明區域是否允許動態更新
masters {ip地址;};
定義主服務器的地址
(3) key聲明
作用:定義授權的安全密鑰
格式:key “密鑰名稱” {
…………;
…………;
密鑰設置選項;
…………;
…………;
};
密鑰設置選項:
algorithm hmac-md5;
定義密鑰加密算法
secret “密鑰”;
定義加密的密鑰
(4) include語句
作用:將其他文件包含到本配置文件中
格式:include “路徑名”;
(5) controls聲明
作用:定義rndc命令使用的控制通道
格式:controls {
inet {ip地址} [port 端口號] allow {主機名;} keys {密鑰名稱;}
};
實例:
(1) 默認named.conf文件內容
options {
directory "/var/named";
// query-source address * port 53;
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key";
(1) 根據以下要求修改/etc/named.conf
n 建立正向主區域abc.com,區域文件名爲abc.zone
n 建立反向主區域192.168.0.0,區域文件名爲192.rev
#vi /etc/named.conf
添加如下內容:
zone “abc.com” IN {
type master;
file “abc.zone”;
};
zone “0.168.192.in-addr.arpa” IN {
type master;
file “192.rev”;
};
3.創建區域文件
作用:存放區域的信息記錄
格式:區域文件指令
[記錄名稱] [生存週期] IN 類型 值
說明:
(1)記錄名稱
記錄名稱根據記錄類型的不同可以下的值:
ip地址
區域名
FQDN
@
空格
(2)生存週期
設置記錄被解析後在緩存中保存的最長時間長度
(3)記錄類型
記錄用於決定記錄的格式及記錄的取值,具體可以分爲以下幾種類型:
A記錄
功能:用於設置主機IP地址
實例: www IN A 192.168.0.1
www.abc.com. IN A 192.168.0.l
IN A 192.168.0.2
NS記錄
功能:設置區域的域名服務器地址
實例:abc.com. IN NS www.abc.com.
IN NS 192.168.0.1
IN NS www.abc.com.
CNAME記錄
功能:設置主機的別名
實例:ftp IN CNAMEwww
mail.abc.com. IN CNAME www
mail.abc.com. IN CNAME www.abc.com.
SOA記錄
作用:設置區域的授權信息
實例:
@(區域名) IN SOA @ (授權的主機名) root.abc.com.(管理員的mail地址) (
43 (序列號,遞增量)
1D (輔助域名服務器多長時間更新數據庫)
15M (若輔助域名服務器更新數據失敗,多長時間再試)
2W (若輔助域名服務器無法從主服務器上更新數據,原有的數據何時失效)
86400 (設置生存週期,如果資源記錄欄未設定ttl,則以這裏提供的時間爲準)
)
MX記錄
作用:設置區域的mail服務器的地址
實例: linux.com. IN MX 10 www.linux.com.
注:
PTR
作用:將地址轉換爲主機名
實例: 1 IN PTR www.abc.com.
1.0.168.192.in-addr.arpa IN PTR ftp.abc.com.
(4) 區域文件指令
$ORIGIN 區域名
設置管轄的默認區域
$TTL 數字
爲沒有定義精確的生存週期的記錄定義缺省的TTL值
$INCLUDE 文件的路徑
包含外部的配置文件
文件實例:
(1) 根區域文件的例子
根區域文件主要用於定義互聯網中13臺根域服務器的位置,其文件的內容主要由A記錄和NS記錄構成,看下面的文件內容:
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
(2) 正向區域文件的例子
正向區域文件主要存放指定正向區域內的信息記錄,下面是localhost正向區域的區域文件:
$TTL86400
$ORIGIN localhost.
@1D IN SOA@ root (
42; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
IN NS@
1D IN A127.0.0.1
(3) 反向區域文件的例子
反向區域文件負責存儲反向指針,下面127.0.0.0反向區域的區域文件:
$TTL86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
(4) 根據以下要求建立名爲abc.zone的區域文件
管轄區域名爲abc.com,並授權給本機,管理員的mail地址爲[email protected]
授權的序列號爲48,刷新時間爲3小時,重試時間爲15分鐘,默認TTL爲86400秒
n abc.com區域的域名服務器的完整名稱爲www.abc.com.
n 建立主機記錄www.abc.com指向192.168.0.1
n 並且給abc.com區域定義IP地址爲192.168.0.l
n 給www.abc.com建立別名記錄ftp.abc.com
n 建立abc.com區域的郵件服務器位置記錄指向www.abc.com
$TTL86400
$ORIGIN abc.com.
@ 1D IN SOA@ Z[email protected](
48; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSwww.abc.com.
1D IN A192.168.0.1
www IN A 192.168.0.1
ftp IN CNAME www
abc.com. IN MX 10 www.abc.com.
4.啓動服務
#service named start
四. DNS客戶端的設置和測試方法
1.客戶端設置
(1)Linux的客戶端的設置
#vi /etc/resolv.conf
添加以下選項:
nameserver DNS服務器的IP地址
(2)Windows客戶端設置
右擊”網絡鄰居”----雙擊”本地連接”-----屬性-----tcp-ip---輸入DNS服務器的地址
2.測試方法
(1)Linux的客戶端可的測試方法
方法一:nslookup
方法二:dig
方法三:hosts
(2)Windows客戶端的測試方法
方法一:nslookup
五. 配置案例:
案例一:
要求:
利用bind軟件將主機dns.linux.net主機製作成一個dns服務器,具體要求如下:
(1) 該服務器負責正向區域linux.net的解析,且ip 地址爲192.168.3.1
(2) linux.net 區域的域名服務器爲dns..linux.net,且該主機名的ip爲192.168.3.1
(3) 如果dns.linux.net不能解析某個域名時,該DNS服務器會轉發給192.168.3.10
(4) 在linux.net區域中分別建立記錄www指向192.168.3.1,mail主機指向192.168.3.2
(5) linux.net區域內的mail服務器爲mail.linux.net
配置過程:
1.安裝軟件包
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
2.建立區域
# vi /etc/named.conf
添加以下內容:
options {
directory “/var/named”;
forwarders {192.168.3.10;}; //添加的內容
};
zone “linux.net” IN { //添加的內容
type master;
file “linux.zone”;
};
3.建立區域文件/var/named/linux.zone
#vi /var/named/linux.zone
$TTL86400
$ORIGIN linux.net.
@1D IN SOA@ root (
49; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSdns.linux.net.
1D IN A192.168.3.1
dns IN A 192.168.3.1
www IN A 192.168.3.1
mail IN A 192.168.3.2
linux.net. IN MX 10 mail.linux.net.
4.啓動服務
#service named start
案例二:
要求:
利用bind軟件建立一臺linux.net區域的輔助dns服務器,主服務器ip地址爲192.168.3.1
配置過程:
輔助DNS服務器只要在DNS服務器上建立一個輔助區域指向主服務器,不用手工建立區域文件,輔助DNS服務器會自動從主服務器中複製區域文件。
1. 安裝相關軟件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
2. 建立從區域
#vi /etc/named.conf
添加如下內容:
zone “linux.net” IN {
type slave;
file “linux.zone”;
};
3. 啓動服務
#service named start
案例三:
要求:
利用bind和dhcpd製作一臺動態DNS服務器; DHCP和DNS同爲一臺主機,該主機的IP地址爲192.168.3.1,DHCP服務器分配作用域範圍爲192.168.3.2-192.168.3.200;DNS服務器管轄的區域爲abc.com
配置過程:
1. DHCP服務器的配置
(1) 安裝DHCP服務相關軟件
#rpm -ivh dhcp-3.0pl1-23.i386.rpm
(2) 運行ddns-keygen命令產生動態更新的密鑰(當前路徑爲/etc)
#dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UP
(記下生成密鑰)
(3) 建立配置文件/etc/dhcpd.conf
#vi /etc/dhcpd.conf
添加如下內容:
ddns-update-style interim;
ignore client-updates;
key “DHCP_UP” {
algorithm hmac-md5;
secret qhB++OR5yWo8BTXwk/m4ng;
};
zone abc.com {
primary 127.0.0.1;
key “DHCP_UP”;
}
subnet 192.168.3.0 netmask 255.255.255.0
{
defaulst-lease-time 36000;
max-lease-time 72000;
option routes 192.168.3.1;
option domain-name “abc.com”;
option domain-name-servers 192.168.3.1;
range 192.168.3.2 192.168.3.200;
}
(4) 啓動服務
#service named start
2. DNS服務器的配置
(1) 安裝相關的軟件
#rpm –ivh bind-9.2.1-16.i386.rpm
#rpm –ivh bind-utils-9.2.1-16.i386.rpm
#rpm –ivh redhat-config-bind-1.9.0-13.noarch.rpm
#rpm –ivh caching-nameserver-9.2-7.noarch.rpm
(2) 建立區域
# vi /etc/named.conf
添加以下內容:
options {
directory “/var/named”;
};
key “DHCP_UP” {
algorithm hmac-md5;
secret qhB++OR5yWo8BTXwk/m4ng;
};
zone “abc.com” IN {
type master;
file “abc.zone”;
};
(3) 建立區域文件/var/named/abc.zone
#vi /var/named/abc.zone
$TTL86400
$ORIGIN abc.com.
@1D IN SOA@ root (
49; serial (d. adams)
3H; refresh
15M; retry
1W; expiry
1D ); minimum
1D IN NSwww.abc.com.
1D IN A192.168.3.1
www IN A 192.168.3.1
(4) 啓動服務
#service named start