DNS伺服器
前言
學習完搭建FTP伺服器實作檔案共享之後,我們講進一步學習搭建DNS伺服器實作域名解析,本節所講内容主要包括DNS伺服器常見概念,安裝及相關配置檔案,并且實戰:為公司内網搭建一個DNS伺服器。
一:DNS伺服器概述及相關配置
1:DNS伺服器是什麼
DNS 是一個分布式資料庫,命名系統采用層次的邏輯結構,如同一棵倒置的樹,這個邏輯的樹形結構稱為域名空間,由于DNS 劃分了域名空間,是以各機構可以使用自己的域名空間建立DNS資訊。
注:DNS 域名空間中,樹的最大深度不得超過127 層,樹中每個節點最長可以存儲63 個字元。
其域名系統,在TCP/IP 網絡中有非常重要的地位,能夠提供域名與IP位址的解析服務。
2:DNS服務概述
2.1:域和域名
DNS 樹的每個節點代表一個域,通過這些節點,對整個域名空間進行劃分,成為一個層次結構。
域名空間的每個域的名字,通過域名進行表示。
域名:通常由一個完全合格域名(FQDN)辨別。FQDN能準确表示出其相對于DNS 域樹根的位置,也就是節點到DNS 樹根的完整表述方式,從節點到樹根采用反向書寫,并将每個節點用“.”分隔,對于 DNS 域google 來說,其完全正式域名(FQDN)為google.com.
例如:google為com域的子域,其表示方法為google.com,而www為google域中的子域,可以使用www.google.com表示。
注意:通常,FQDN 有嚴格的命名限制,長度不能超過256 位元組,隻允許使用字元a-z,0-9,A-Z
和減号(-)。點号(.)隻允許在域名标志之間(例如“google.com”)或者FQDN 的結尾使用。
域名不區分大小。由最頂層到下層,可以分成:根域、頂級域、二級域、子域。
nternet 域名空間的最頂層是根域(root),其記錄着Internet 的重要DNS 資訊,由Internet域名注冊授權機構管理,該機構把域名空間各部分的管理責任配置設定給連接配接到Internet 的各個組織。
“.”全球有13個根(root)伺服器10台在美國 另外3台分别在英國 瑞士 日本
DNS 根域下面是頂級域,也由Internet 域名注冊授權機構管理。共有3 種類型的頂級域。
組織域:
采用3 個字元的代号,表示DNS 域中所包含的組織的主要功能或活動。比如com 為商業機構組織,edu 為教育機構組織,gov 為政府機構組織,mil 為軍事機構組織,net 為網絡機構組
織,org 為非營利機構組織,int 為國際機構組織。
位址域:
采用兩個字元的國家或地區代号。如cn 為中國,kr 為南韓,us 為美國。
反向域:
這是個特殊域,名字為in-addr.arpa,用于将IP 位址映射到名字(反向查詢)。
2.2:(Zone) ,資源記錄
區是DNS 名稱空間的一部分,其包含了一組存儲在DNS 伺服器上的資源記錄。
使用區的概念,DNS 伺服器回答關于自己區中主機的查詢,每個區都有自己的授權伺服器。
2.3:主域名伺服器與輔助域名伺服器
當區的輔助伺服器啟動時,它與該區的主要伺服器進行連接配接并啟動一次區傳輸,區輔助伺服器定期與區主要伺服器通信,檢視區資料是否改變。如果改變了,它就啟動一次資料更新傳輸。
每個區必須有主伺服器,另外每個區至少要有一台輔助伺服器,否則如果該區的主伺服器崩潰了,就無法解析該區的名稱。
3:輔助伺服器的優點:
3.1:容錯能力
配置輔助伺服器後,在該區主伺服器崩潰的情況下,客戶機仍能解析該區的名稱。一般把區的主
伺服器和區的輔助伺服器安裝在不同子網上,這樣如果到一個子網的連接配接中斷,DNS 客戶機還能
查詢另一個子網上的名稱伺服器。
3.2:減少廣域鍊路的通信量
如果某個區在遠端有大量客戶機,使用者就可以在遠端添加該區的輔助伺服器,并把遠端的客戶機
配置成先查詢這些伺服器,這樣就能防止遠端客戶機通過慢速鍊路通信來進行DNS 查詢。
3.3: 減輕主伺服器的負載
輔助伺服器能回答該區的查詢,進而減少該區主伺服器必須回答的查詢數。
3.4: DNS 伺服器
運作DNS 伺服器程式的計算機,儲存DNS 資料庫資訊。DNS 伺服器會嘗試解析客戶機的查詢請求。
3.5: DNS 緩存
DNS 伺服器在解析客戶機請求時,如果本地沒有該DNS 資訊,則可以會詢問其他DNS 伺服器,當
其他域名伺服器傳回查詢結果時,該DNS 伺服器會将結果記錄在本地的緩存中,成為DNS 緩存。
當下一次客戶機送出相同請求時,DNS 伺服器能夠直接使用緩存中的DNS 資訊進行解析。
4:DNS查詢方式-- 遞歸查詢和疊代查詢
4.1: 看一個DNS查詢過程
4.2: 兩種查詢方式
4.2.1: 遞歸查詢.一次溝通完。
遞歸查詢是一種DNS 伺服器的查詢模式,在該模式下DNS 伺服器接收到客戶機請求,必須使用一
個準确的查詢結果回複客戶機。如果DNS 伺服器本地沒有存儲查詢DNS 資訊,那麼該伺服器會詢
問其他伺服器,并将傳回的查詢結果送出給客戶機。
4.2.2: 疊代查詢
DNS 伺服器另外一種查詢方式為疊代查詢,當客戶機發送查詢請求時,DNS 伺服器并不直接回複查詢結果,而是告訴客戶機另一台DNS 伺服器位址,客戶機再向這台DNS 伺服器送出請求,依次循環直到傳回查詢的結果為止。
總結:一般情況下,從PC用戶端到本地DNS伺服器是屬于遞歸查詢。而DNS伺服器之間就是的互動查詢就是疊代查詢。
4.3: 兩種解析方式
4.3.1:正向解析:
正向解析是指域名到IP 位址的解析過程。
4.3.2:反向解析:
反向解析是從IP 位址到域名的解析過程。反向解析的作用為伺服器的身份驗證。
5: DNS資源記錄
5.1:SOA 資源記錄
每個區在區的開始處都包含了一個起始授權記錄(Start of Authority Record),簡稱SOA 記錄。
SOA 定義了域的全局參數,進行整個域的管理設定。一個區域檔案隻允許存在唯一的SOA 記錄。
5.2:NS 資源記錄
5.3:A 資源記錄
位址(A)資源記錄把FQDN 映射到IP 位址。 因為有此記錄,是以DNS伺服器能解析FQDN域名對應的IP 位址。
5.4:PTR 資源記錄
相對于A 資源記錄,指針(PTR)記錄把IP位址映射到FQDN。 用于反向查詢,通過IP位址,找到域名。
5.5:CNAME 資源記錄
别名記錄(CNAME)資源記錄建立特定FQDN 的别名。使用者可以使用CNAME 記錄來隐藏使用者網絡的實作細節,使連接配接的客戶機無法知道真正的域名。
二:DNS服務相關配置
BIND服務相關配置檔案
/etc/named.conf 是DNS伺服器的主配置檔案,BIND軟體建構伺服器時,其配置檔案中主要有兩種類型的配置檔案:一類是主配置檔案,用于設定named服務的全局配置。另一類是區域資料檔案,用于存放某個DNS區域的位址解析記錄。
1:主配置檔案
[root@xuegod63 ~]# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; #監聽的端口和IP位址
listen-on-v6 port 53 { ::1; }; #用于IPV6位址
directory "/var/named"; #區域資料檔案的預設存放位置
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; }; #允許解析本地DNS伺服器的
recursion yes;
上述配置内容中的dump-file,statistics-file,memstatistics-file 等配置項用于指定緩存資料庫的檔案,狀态專題太統計檔案的位置。
2:區域配置部分
[root@xuegod63 named]# vim /etc/named.rfc1912.zones
zone "." IN { #區域為根
type hint; #類型為根區域
file "named.ca"; 區域檔案所存放的位置,預設位址在 /var/named/named.ca
};
zone "localhost" IN { #正向解析(localhost)區域
type master; #類型為主區域
file "named.localhost"; #主區域配置檔案的存放位置
allow-transfer { 173.16.16.2; }; #允許從本地下載下傳的主伺服器位址
allow-update { none; };
zone "1.0.0.127.in-addr.arpa" IN { #反向解析(1.0.0.127)區域
type slave; #類型為從區域
file "named.loopback"; #從區域配置檔案的存放位置
注釋:
1):每個zone區域都是可選的(包括根域,回環域和方向域)
2):方向區域的名稱由倒序的網絡位址和 “in-addr.arpa”組合而成
3):file 配置項用于指定本區域的區域檔案,其區域檔案的檔案名稱由管理者設定
3:區域資料配置檔案
在上個主配置檔案中,指定其區域資料配置檔案預設是放在/var/named/目錄下的,是以區域資料配置檔案通常都是放在這裡的,每一個區域資料檔案都對應一個DNS解析區域,
根域“.”的區域配置檔案是比較特殊的,網絡中所有的DNS伺服器都是用同一份根區域資料檔案,全球隻有13個根域。
3.1:存放區域配置檔案目錄及内容
[root@xuegod63 ~]# ls /var/named/
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
1):slaves 是從伺服器的配置檔案
2):named.ca 是根域的配置檔案
3):named.empty 是所有與配置檔案的模闆
4):named.localhost 是正向解析域的配置檔案---主伺服器通常都用它
5):named.loopback 是反向解析域的配置檔案---主伺服器通常都用它
3.2:區域配置檔案内容
1):[root@xuegod63 named]# vim named.ca
;; ANSWER SECTION:
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
……….
………
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
2):[root@xuegod63 named]# vim named.localhost
2.1:TTL配置及SOA記錄部分
$TTL 1D #有效解析記錄的生存周期
@ IN SOA xuegod.cn admin.xuegod.cn. ( # “@”表示解析域的名稱,admin.xuegod.cn.:郵箱位址
0 ; serial # 更新的序列号,伺服器更新内容後,要上調需利好
1D ; refresh # 重新整理時間
1H ; retry # 下載下傳失敗後的重試時間間隔
1W ; expire #失效時間,超過該時間之後則無法重新下載下傳
3H ) ; minimum #無效解析記錄的生存周期
2.2:位址解析記錄部分
@ NS ns.xuegod.cn
MX 10 mail.xuegod.cn
WWW A 127.0.0.1
mail A 192.168.21.2
ftp CNAME www
1):NS域名檔案伺服器(Name Server),記錄目前區域的DNS伺服器的主機位址
2):MX郵件交換,記錄目前郵件伺服器的主機位址,數字10(表示目前有多個MX記錄)選擇郵件伺服器的優先級,數字越小優先級越高。
5):[rot@xuegod63 named]# vim named.loopback
$TTL 1D
@ INSO xuegod. cadmin.xuegod.cn. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
三:實戰案例
1:實驗要求
企業要搭建一台簡單的DNS伺服器,實作公司的域名解析xuegod.cn及利用主從網關實作負載均衡,并且要進行安全認證。
2:實驗環境
主伺服器:xuegod63 IP位址:192.168.1.63
從伺服器:xuegod64 IP位址:192.168.1.64
3:實驗拓撲
<a href="http://s1.51cto.com/wyfs02/M01/8B/35/wKiom1hGwKeDitXWAAFFwLBkeeY362.png" target="_blank"></a>
4:實驗步驟
4.1:DNS主伺服器
4.1.1:修改主配置檔案
[root@xuegod63 ~]#vim/etc/named.conf
listen-on port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
allow-query { any; };
recursion yes;
managed-keys-directory "/var/named/dynamic";
4.1.2:修改區域配置檔案
[root@xuegod63 ~]# vim /etc/named.rfc1912.zones
zone "xuegod.cn" IN {
type master;
file "xuegod.cn.zone";
allow-transfer { 192.168.1.0/24; };
allow-update { none; }; #删掉
4.1.3:建立區域資料配置檔案并修改
[root@xuegod63 named]# cp -p named.localhost xuegod.cn.zone #要加-p 把權限也要複制過來
[root@xuegod63 named]# ll -h xuegod.cn.zone
-rw-r----- 1 root named 275 Dec 3 06:10 xuegod.cn.zone
[root@xuegod63 named]# vim xuegod.cn.zone
xuegod.cn.IN SOAdns.xuegod.cn. root.xuegod.cn. (
2; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
xuegod.cn.NSdns.xuegod.cn.
dns.xuegod.cn.A192.168.1.63
www.xuegod.cn.A192.168.1.63
www.xuegod.cn. 1 A 192.168.1.63
www.xuegod.cn. 1 A 192.168.1.64
www.xuegod.cn. 1 A 192.168.1.1
4.1.4:修改DNS位址
[root@xuegod63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:12:f3:74
TYPE=Ethernet
UUID=8f64859c-d43d-4247-9d3e-2d0e6bde9451
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.63
[root@xuegod63 ~]# service network restart
4.1.5:測試
[root@xuegod64 ~]# service named restart
[root@xuegod63 ~]# ping www.xuegod.cn
PING www.xuegod.cn (192.168.1.63) 56(84) bytes of data.
64 bytes from 192.168.1.63: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 192.168.1.63: icmp_seq=2 ttl=64 time=0.048 ms
4.2:DNS從伺服器
4.2.1:修改主配置檔案
[root@xuegod64 ~]# vim /etc/named.conf
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
allow-query { any; };
recursion yes;;
managed-keys-directory "/var/named/dynamic";
4.2.2:修改區域檔案
[root@xuegod64 ~]# vim /etc/named.rfc1912.zones
zone "xuegod.cn." IN {
type slave;
file "slaves/xuegod.cn.zone.file";
masters { 192.168.1.63; };
4.2.3:修改DNS位址
[root@xuegod64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=00:0c:29:de:f4:a1
UUID=07f953ba-8898-4b94-a68c-1f180bb5030b
BOOTPROTO=none
IPADDR=192.168.1.64
[root@xuegod64 ~]# service network restart
4.2.4:測試DNS負載均衡功能
[root@xuegod64 ~]# ls /var/named/slaves/
xuegod.cn.zone.file
[root@xuegod64 slaves]#vim xuegod.cn.zone.file
$ORIGIN .
$TTL 86400; 1 day
xuegod.cnIN SOAdns.xuegod.cn. root.xuegod.cn. (
4 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NSdns.xuegod.cn.
$ORIGIN xuegod.cn.
dnsA192.168.1.63
ftpCNAMEwww
$TTL 1; 1 second
wwwA192.168.1.63
A192.168.1.64
A192.168.1.1
4.2.5:測試DNS備份功能
[root@xuegod63 ~]# vim /var/named/xuegod.cn.zone #添加以下内容
mail.xuegod.cn. A 192.168.1.63
[root@xuegod63 ~]# service named restart
由于設定了1天的時間更新,是以不能立即備份。删除再重新開機,即可驗證效果。
[root@xuegod64 slaves]# rm -rf xuegod.cn.zone.file
4.2.6:DNS主從密鑰認證
1): 確定時間主從同步
[root@xuegod63 named]# date
Fri Dec 4 06:00:40 EST 2015
[root@xuegod64 slaves]# date
Fri Dec 4 06:00:53 EST 2015
2): 主DNS伺服器生成秘鑰,進行主從認證
[root@xuegod63 ~]# rpm -qf `which dnssec-keygen`
bind-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@xuegod63 chroot]# pwd
/var/named/chroot
[root@xuegod63 chroot]# dnssec-keygen -a hmac-md5 -b 128 -n HOST abc #生成一對 對稱鑰匙
Kabc.+157+45442
[root@xuegod63 chroot]# ls
dev etc Kabc.+157+45442.key Kabc.+157+45442.private usr var
-a hmac-md5:采用hmac-md5加密算法。
-b 128:生成的密鑰長度為128位。
-n 密鑰類型。我們選擇主機類型:HOST 。
-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
(DNSKEY generation defaults to ZONE)
abc #為生成密鑰的名字
注意:生成時速度有點慢,因為生成密鑰需要一些随機事件,是以我們可以通過移動滑鼠或“find /”執行來産生一些随機事件,等待大約2分鐘,檢視生成的密鑰對:
[root@xuegod63 chroot]# cat Kabc.+157+45442.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: rUNplFvWw811PnwifZYGcg== #這是密鑰
Bits: AAA=
Created: 20151204112514
Publish: 20151204112514
Activate: 20151204112514
[root@xuegod63 chroot]# cat Kabc.+157+45442.key
abc. IN KEY 512 3 157 rUNplFvWw811PnwifZYGcg== #這是密鑰
3): 修改主DNS配置:
[root@xuegod63 ~]# vim /etc/named.rfc1912.zones #添加并修改
key abckey {
algorithm hmac-md5;
secret "rUNplFvWw811PnwifZYGcg==";
};
allow-transfer { key abckey; };
4):從DNS 伺服器
[root@xuegod64 slaves]# vim /etc/named.rfc1912.zones #添加并修改
key abckey {
secret "rUNplFvWw811PnwifZYGcg=="; #主伺服器的秘鑰
type slave;
masters { 192.168.1.63 key abckey; };
5):主從重新開機服務
[root@xuegod63 ~]# service named restart
[root@xuegod64 ~]# service named restart
6):測試
[root@xuegod64 slaves]# pwd
/var/named/slaves
[root@xuegod64 slaves]# ls
[root@xuegod64 slaves]# cat xuegod.cn.zone.file
mailA192.168.1.63
A192.168.1.64
A192.168.1.1
5:測試工具:nslookup 測試域名解析
5.1:非互動式模式
文法: nslookup 域名或IP 位址
[root@xuegod64 ~]# nslookup www.xuegod.cn
Server:192.168.1.63
Address:192.168.1.63#53
Name:www.xuegod.cn
Address: 192.168.1.1
Address: 192.168.1.63
Address: 192.168.1.64
[root@xuegod64 ~]# nslookup g.cn
Non-authoritative answer:
Name:g.cn
Address: 203.208.40.148
Address: 203.208.40.144
Address: 203.208.40.147
Address: 203.208.40.146
Address: 203.208.40.145
5.2:互動模式
[root@xuegod64 ~]# nslookup
> www.xuegod.cn
> g.cn
本文轉自 于學康 51CTO部落格,原文連結:http://blog.51cto.com/blxueyuan/1880164,如需轉載請自行聯系原作者