Linux 學習之DNS伺服器

来源:http://www.cnblogs.com/changelee/archive/2016/08/13/5769025.html
-Advertisement-
Play Games

************************************************************************************************************ 本文是一個學習日記,如果大家有參考發現其中問題的可以與我聯繫。我們一起學習。希望... ...


概念:

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來查詢

 

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這幾天有個工作需求,就是在富文本輸入區域(kindeditor)可以有@功能,能夠容易提示用戶名的(像在qq群組@人一樣)。在網上找了一個叫bootstrap-suggest的插件,卻不能滿足我的需求,於是我決定在該插件上改良,主要是下麵幾點: 1. @內容的輸入,能夠匹配多個屬性值。 2. 選中列 ...
  • PHPMyadmin配置文件config.inc.php內容如下,在需要設置的地方增加了相關註釋。 PHPMyadmin配置文件config.inc.php內容如下,在需要設置的地方增加了相關註釋。 非常適合對資料庫操作命令不熟悉的資料庫管理者,下麵我就說下怎麼安裝該工具: 1.先到網上下載phpm ...
  • 配置 hive 與 hbase 整合的目的是利用 HQL 語法實現對 hbase 資料庫的增刪改查操作,基本原理就是利用兩者本身對外的API介面互相進行通信,兩者通信主要是依靠hive_hbase-handler.jar工具類。 但請註意:使用Hive操作HBase中的表,只是提供了便捷性,前面章節 ...
  • HQL語法基於 SqlLine(http://sqlline.sourceforge.net/),DDL主要包含資料庫、函數、視圖的創建、修改、刪除,參考資料:(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL), ...
  • 源代碼如下: typedef struct _IMAGE_NT_HEADERS { +00h DWORD Signature; // 固定為 0x00004550 根據小端存儲為:"PE.." +04h IMAGE_FILE_HEADER FileHeader; +18h IMAGE_OPTIONA... ...
  • ...
  • 我們可以為自己訂製個性化的命令行提示符,Linux系統提示符是用系統變數PS1來定義的,只要按規則修改PS1系統變數的值隨意修改命令行提示符。 ...
  • 編程語言,作為人與電腦溝通的橋梁,有著重要和深遠的意義。有過電腦編程經驗的人,多少學習或掌握過一到多種編程語言。電腦專業領域的編程語言成百上千種,主流的編程語言也有數十種之多。每種編程語言面向的領域和特性都不盡相同,不過歸根結底是為瞭解決人與電腦之間溝通的效率問題,提高電腦的生產力。想必有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...