歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Linux 學習之DNS服務器,linuxdns服務器

Linux 學習之DNS服務器,linuxdns服務器

日期:2017/3/6 9:22:58   编辑:學習Linux

Linux 學習之DNS服務器,linuxdns服務器


Linux 學習之DNS服務器,linuxdns服務器


概念:

DNS:Domain Name System 域名系統

FQDN:Fully Qualified Domain Name 完整主機名

正向解析:由主機名查IP地址

SOA:開始驗證(Start of Authority)的縮寫,

NS:名稱服務器(Name Server)的縮寫

A 地址記錄(Ipv4)
AAAA 地址記錄(Ipv6)
AFSDB Andrew文件系統數據庫服務器記錄(應該是一種文件服務器的類型)
ATMA ATM地址記錄(不是自動提款機,具體功能不知道)
CNAME 別名記錄
HINFO 硬件配置記錄,包括CPU、操作系統信息
ISDN 域名對應的ISDN號碼
MB 存放指定郵箱的服務器
MG 郵件組記錄
MINFO 郵件組和郵箱的信息記錄
MR 改名的郵箱記錄
MX 郵件服務器記錄
NS 名字服務器記錄
PTR 反向記錄(從IP地址解釋域名)
RP 負責人記錄
RT 路由穿透記錄(不懂)
SRV TCP服務器信息記錄(不懂)
TXT 域名對應的文本信息
X25 域名對應的X.25地址記錄

關於上面的名詞有一些是我找來的,具體的功能我在實驗中也沒有涉及。如果有懂的朋友還請教我一下。謝謝

反向解析:由IP查詢主機名

PTR:指向(PoinTeR)的縮寫,後面記錄的數據就是反解到主機名

端口:TCP/UDP 53 TCP 用來主從同步數據,UDP用來用戶查詢

環境:

服務器:CentOS 6.5 final 服務器名:Server.rhce.ce, IP:192.168.88.254

客戶端:Windows XP

實驗:

/etc/hosts:手動設置主機名和IP的對應關系

/etc/resolv.conf:linux中配置DNS的文件

/etc/nsswitch.conf :設置DNS優先還是hosts優先

安裝軟件:

bind           bind主程序 bind-utils 客戶端查找主機名的相關命令 bind-libs bind相關函數庫 bind-chroot 鎖定bind默認主目錄

主要配置文件

因為安裝的chroot,所以bind的主目錄是/var/named/chroot/

具體信息可以參考:/etc/sysconfig/named文件

cp -p /etc/named* /var/name/chroot/etc/

cd /var/named

cp -p data/ dynamic/ slaves/ named* chroot/var/named/

***************************************

/var/name/chroot/etc/named.conf            主配置文件

/var/name/chroot/etc/named.iscdlv.key          

/var/name/chroot/etc/named.rfc1912.zones

/var/name/chroot/etc/named.root.key

######################

/var/name/chroot/var/named/data/

/var/name/chroot/var/named/dynamic/

/var/name/chroot/var/named/slaves/

/var/name/chroot/var/named/named.ca

/var/name/chroot/var/named/named.empty

/var/name/chroot/var/named/named.localhost

/var/name/chroot/var/named/named.loopback

************************************

主配置文件

named.conf

1 // named.conf 2 3 options { 4 listen-on port 53 { any; }; 5 //監聽 6 listen-on-v6 port 53 { any; }; 7 directory "/var/named/chroot/etc/named/"; //配置文件目錄 8 dump-file "/var/named/data/cache_dump.db"; 9 statistics-file "/var/named/data/named_stats.txt"; 10 memstatistics-file "/var/named/data/named_mem_stats.txt"; 11 allow-query { any; }; 12 //訪問列表,允許的范圍 13 recursion yes; 14 //是否允許遞歸查詢 15 dnssec-enable yes; 16 dnssec-validation yes; 17 18 /* Path to ISC DLV key */ 19 bindkeys-file "/etc/named.iscdlv.key"; 20 21 managed-keys-directory "/var/named/dynamic"; 22 }; 23 24 logging { 25 channel default_debug { 26 file "data/named.run"; 27 severity dynamic; 28 }; 29 }; 30 31 zone "." IN { 32 type hint; 33 file "named.ca"; 34 }; 35 //我配置的正向解析域 36 zone "rhce.ce" IN { 37 type master; 38 file "rhce.ce"; 39 }; 40 //反向解析域 41 zone "88.168.192.in-addr.arpa" IN { 42 type master; 43 file "88.168.192.in-addr.arpa"; 44 }; 45 include "/etc/named.rfc1912.zones"; 46 include "/etc/named.root.key"; named.conf 完成配置

rhce.ce 正向域

關於解析文件的內容說明,正解文件資源記錄(Resource Record RR)格式,RR type 和RR data

$TTL 600 //緩存記憶時間。默認單位秒,可通過M分,H時,D天,W周來設置

Serial:序號代表這個數據庫的新舊,越大表示越新,如果有Slave服務器同步是會根據這個判斷,一般采用日期的方式設置

Refresh:更新頻率,Slave用來判斷多久去向Master要求數據更新。

Retry:失敗重試時間,由於某些因素導致Slave無法對Master連接,Slave會嘗試重新連接,重新連接的時間就是這個

Expire:失效時間,如果嘗試一直失敗,Slave就會放棄嘗試,並且刪除這份下載的zone file信息。

Minumun TTL:

一般各參數默認約定,可根據實際情況設定

Serial <2的32次方
Refresh>=Retry*2
Refresh+Retry<Expire
Expire>=Retyr*10
Expire>=7D

zone 裡的類型:hint ,master,slave

zone "." in {type hint; file "named.ca"; }; 高速緩存DNS."."是DNS的root,僅用來轉發請求或緩存

hint:根域使用

master:主域

slave:從域

rhce.ce 正向解析文件

1 $TTL 1D 2 @ IN SOA server.rhce.ce. server.rhce.ce. ( 3 ;域名 class type 域主機名 管理員郵箱 4 0 ; serial 5 1D ; refresh 6 1H ; retry 7 1W ; expire 8 3H ) ; minimum 9 @ IN NS server.rhce.ce. 10 @ IN NS rhce.ce. 11 @ IN A 192.168.88.254 12 server IN A 192.168.88.254 13 @ IN MX 10 rhce.ce. 14 www IN A 192.168.88.254 15 client IN A 192.168.88.1 16 17 18 19 20 21 ;@=當前域,rhce.ce rhce.ce 正向域配置文件

88.168.192.in-addr-arpa 反向解析文件

1 $TTL 1D 2 @ IN SOA server.rhce.ce. server.rhce.ce. ( 3 0 ; serial 4 1D ; refresh 5 1H ; retry 6 1W ; expire 7 3H ) ; minimum 8 @ NS server.rhce.ce. 9 254 IN PTR server.rhce.ce. 10 254 IN PTR www.rhce.ce. 11 254 IN PTR ftp.rhce.ce. 12 254 IN PTR mail.rhce.ce. 13 254 IN PTR rhce.ce. 14 1 PTR client.rhce.ce. rhce.ce 反向域配置文件

以上是簡單的域配置文件及簡單的說明

更多的擴展說明

前面我們說了幾個DNS的記錄類型這裡簡單的說一下,在我的配置裡並沒有設置CNAME和AAAA。AAAA就不用講了,類型類似A,只不過地址是IPV6。這裡講一下CNAME。編輯我們的域配置文件(我的是rhce.ce)添加下面的信息

1 www     IN      A       192.168.88.254
2 www1    IN      CNAME   www
3 www2    IN      CNAME   www
4 www3    IN      CNAME   www

分別通過通過dig 命令解析出來的結果如下

dig www1.rhce.ce
;; ANSWER SECTION:
www1.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254
 dig www2.rhce.ce
;; ANSWER SECTION:
www2.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254
 dig www3.rhce.ce
;; ANSWER SECTION:
www3.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254

cache-only DNS Server 設置只有緩存功能的DNS,這個DNS不需要添加其它zone,所以如果設置cache-only 需要刪除其它的zone.打開named.conf

1 options { 2 listen-on port 53 { any; }; 3 4 listen-on-v6 port 53 { any; }; 5 directory "/var/named/chroot/etc/named/"; 6 dump-file "/var/named/data/cache_dump.db"; 7 statistics-file "/var/named/data/named_stats.txt"; 8 memstatistics-file "/var/named/data/named_mem_stats.txt"; 9 allow-query { any; }; 10 11 recursion yes; 12 13 dnssec-enable yes; 14 dnssec-validation yes; 15 dnssec-lookaside auto; 16 forward only; 17 forwarders { //設置轉發服務器 18 114.114.114.114; //轉發服務器地址 19 8.8.8.8; 20 }; 21 /* Path to ISC DLV key */ 22 bindkeys-file "/etc/named.iscdlv.key"; 23 24 managed-keys-directory "/var/named/dynamic"; 25 }; 26 保留logging 和zone ". " named.conf 僅做轉發

======================================================================

雙DNS,主從機

簡單主從DNS

master

allow-transfer { 192.168.88.1 ;};        //設置僅允許192.168.88.1來同步我的數據,如果不設置則允許所有人同步我的數據

Slave

1 zone "rhce.ce" IN {
2 
3   type slave;
4 
5   file "slaves/rhce.ce.slave";        //設置從服務器的區域文件名
6 
7   masters { 192.168.88.254; };      //指定master的地址
8 
9 };

===========================================================================

主從驗證設置(TSIG 事務簽名)

上面提到使用allow-transfer來設置允許的從服務器, 但是如果客戶端修改IP為我指定的DNS服務器的地址也同樣可以獲取我的配置文件,所以可能通過加密密鑰來驗證主從關系。

dnssec-keygen -a HAMC-MD5 -b 128 -n HOST rhce

//使用dnssec-keygen命令添加一下HMAC-MD5加密的,長度為128位的,指定host類型,文件名為rhce。然後會在當前目錄生成兩個文件,打開以.private結尾的文件,我們需要使用其中的加密信息

master

   allow-transfer { key; };        //修改原來的IP地址為key,使用key驗證
        server 192.168.88.253 {        //指明從服務器的是誰
                keys {rhce;};           //指明keys文件的名稱
};
        key rhce{                //建立有關key文件的相關數據
        algorithm  hmac-md5;          //加密類型
        secret  Pt8a74gEOy0qoI+odK9gRw==;    //密鑰值
};


除allow-transfer外,所有配置文件都需要寫在options{} 外面

slave

        server 192.168.88.254 {        //指明主服務器的是誰
                keys {rhce;};           //指明keys文件的名稱
};
        key rhce{                //建立有關key文件的相關數據
        algorithm  hmac-md5;          //加密類型
        secret  Pt8a74gEOy0qoI+odK9gRw==;    //密鑰值
};


注意:密鑰名必須對應

視圖VIEW ,可以讓不能的機器使用DNS獲取不同的IP地址解析,這裡我們創建了視圖,指定了區域,一般在公司了主要分內網和外網,我們其它可以區別內網和外網,內我們使用自己建議的區域文件,外網我就可以直接使用“.” 這個根域進行轉發查詢

 1 acl rhca{ 192.168.88.0/24;};        //指定acl策略,配置網段或者主機
 2 acl rhce{ 172.30.30.0/24;};
 3 view rhca{                                  //創建一個視圖名為rhca,使用rhca配置文件
 4 match-clients{rhca;};                  //指定使用本視圖的區域/主機/網段
 5 zone "." IN {
 6         type hint;
 7         file "named.ca";
 8 };
 9 zone "rhce.ce" IN {                   //配置文件改變,不改變域名
10         type master;
11         file "rhca.ca";                   //指定域配置文件
12 };
13 };
14 
15 view rhce{                              //創建一個視圖名為rhca,使用rhca配置文件
16 match-clients{rhce;};              //指定使用本視圖的區域/主機/網段
17 zone "." IN {
18         type hint;
19         file "named.ca";
20 };
21 zone "rhce.ce" IN {                 //配置文件改變,不改變域名
22         type master;
23         file "rhce.ce";                //指定域配置文件
24 };
25 };

==========================================================================

子域授權

父層服務器.rhce.ce。

rhce.ce域配置文

test    NS      test.rhce.ce.
test    A       192.168.88.253
//增加以上兩行,test.rhce.ce為子域的服務器名稱。並A記錄指向IP地址

子域test.rhce.ce

修改named.conf

1 zone "test.rhce.ce" IN {
2         type master;
3         forward first;                                            //設置轉發優先
4         file "test.rhce.ce";
5         forwarders {192.168.88.254;};                 //設置轉發服務器,父服務器
6 };
7          
//如果我們只一個域的時候,可以把forwarders設置在options裡,如果我們有多個域且只想對這個域進行轉發就設置在zone裡面

test.rhce.ce子域配置文件

 1 $TTL 1D
 2 @       IN SOA  test.rhce.ce. root.test.rhce.ce. (
 3                                         0       ; serial
 4                                         1D      ; refresh
 5                                         1H      ; retry
 6                                         1W      ; expire
 7                                         3H )    ; minimum
 8 @       NS      test.rhce.ce.
 9 @       A       192.168.88.253
10 www     A       192.168.0.80

到此學習的DNS相關的配置全部完成,後期如果有學習到新的DNS功能再補充,下面是一些操作優化及知識擴充

利用RNDC管理DNS服務器

RNDC是在BIND version9以後出現的一個功能。它可以輕松管理DNS服務器:檢查已經存在的DNS緩存,重新更新某個zone而不需要重啟,DNS狀態及統計資料等,因為RNDC可以很深入的管理DNS服務器,所以控制的方式是經理RNDC來設置建立密鑰(rndc key),並將相關密鑰信息寫入到named.con中的。

rndc-confgen -r /dev/urandom -a 創建一個rndc key 。默認是會自動創建的

rndc status 查看rndc 狀態

rndc stats

將目前系統的DNS統計數據記錄下來,會在/var/named/data/內產生新文件

rndc dumpdb

將目前高速緩存的數據記錄下來,制作成一個文件同樣保存在/var/named/data內。以.db結尾


================================================================

查詢及驗證常用命令

dig

dig www.rhce.ce

dig -t soa www.rhce.ce

dig -x 192.168.88.254

dig +trace rhce.ce //通過追蹤查詢可以看到所經歷的DNS服務器

nslookup

nslookup www.rhce.ce

nslookup

set type=any 表示在查詢某個domainname 時,將和這個domainname的一些相關數據一並顯示出來

>set type=soa

>rhce.ce 查詢

nslookup –qt=類型目標域名 //各類型查看上面的概念中說明的

>set q=MX/A/CNAME

>rhce.ce

更多nslookup 信息參考 百度NSLOOKUP

host

host -a www.rhce.ce //列出該主機所有的相關信息,包括IP,TTL與排錯信息

host -l rhce.ce //列出該domain下的所有主機對應關系,domain的設置要allow-transfer才可以查詢

host www.rhce.ce 192.168.88.53 //強制以192.168.88.53這台DNS來查詢

***************************************************************************************************************************

本文是一個學習日記,如果大家有參考發現其中問題的可以與我聯系。我們一起學習。希望看到的朋友可以多多提問題有意見。謝謝

http://xxxxxx/Linuxjc/1149926.html TechArticle

Copyright © Linux教程網 All Rights Reserved