天天看點

DNS伺服器

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 &lt;nametype&gt;: 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

&gt; www.xuegod.cn

&gt; g.cn

本文轉自 于學康 51CTO部落格,原文連結:http://blog.51cto.com/blxueyuan/1880164,如需轉載請自行聯系原作者