1. 程式人生 > >Linux基礎服務_DNS原理以及正反向DNS配置

Linux基礎服務_DNS原理以及正反向DNS配置

應用程序 服務器 dns基礎

DNS服務的原理介紹:

dns(Domain Name Service,域名解析服務) 為c/s架構的服務

通常默認的監聽的端口為:53/tcp 53/udp

將dns服務實現的應用程序為:bind (rpm包


DNS的樹狀結構:


技術分享

根域為:.

tld:(Top Level Domain 頂級域)

組織域:.com, .net, .org, .gov, .edu, .mil

國家域:.iq, .tw, .hk, .jp, .cn, ...


DNS查詢內型:


遞歸查詢:DNS請求被服務器接受後,如果屬於此服務器管轄範圍則請求上級服務器依次傳遞請求,並且依次傳遞結果給發出請求的主機。

技術分享


叠代查詢:DNS請求被服務器接受後,如果不是自己管轄範圍,讓客戶端訪問根域服務器,然後跟域通知客戶端去訪問下級服務器,直到最後客戶端訪問管轄請求域名的服務器為止。

技術分享

DNS客戶端設置使用的DNS服務器一般都是遞歸服務器,它負責全權處理客戶端的DNS查詢請求,直到返回最終結果。而DNS服務器之間一般采用叠代查詢方式。


DNS解析方式:


正向解析: 名稱(域名)——>IP

反向解析: IP——>名稱(域名)

**二者的名稱空間,非為同一個空間,即非為同一棵樹;因此,也不是同一個解析庫


DNS服務器類型:


主DNS服務器;從DNS服務器:負責解析一個域或多個域。

緩存服務器:不負責解析域名


區域(zone)和域(domain)

例:

xxxx.com為域:

將xxx.com進行正向解析時:正向解析庫為區域

將xxx.com進行反向解析時:反向解析庫為區域

區域傳送

全量傳送:axfr, 傳送整個數據庫;

增量傳送:ixfr, 僅傳送變量的數據;


區域的數據庫文件中相關參數含義:


資源記錄:Resource Record, 簡稱rr;

記錄有類型:A, AAAA, PTR, SOA, NS, CNAME, MX


SOA:Start Of Authority,起始授權記錄;

NS:Name Service,域名服務記錄;

A: Address, 地址記錄,FQDN --> IPv4;

AAAA:地址記錄, FQDN --> IPv6;

CNAME:Canonical Name,別名記錄;

PTR:Pointer,IP --> FQDN

MX:Mail eXchanger,郵件交換器;

優先級:0-99,數字越小優先級越高;


資源記錄的定義格式:

語法: name [TTL] INRR_TYPE value

SOA:起始授權記錄

  name: 當前區域的名字;
  value:有多部分組成
     (1) 當前區域的區域名稱(也可以使用主DNS服務器名稱);
     (2) 當前區域管理員的郵箱地址;[email protected],一般使用點號來替代;
     (3) (主從服務協調屬性的定義以及否定答案的TTL)
  註意:任何解析庫文件的第一個記錄的類型必須是SOA

 例: 
   @     IN     SOA     xxx.com    mailxxx.com  (
                20000001  ; serial    序列號#每增加配置版本號+1
                1D      ; refresh   刷新時間間隔
                1H      ; retry     重式時間間隔
                1W      ; expire    過期時常
                3H )    ; minimum   否定答案的緩存時長

NS:Name Service,域名服務記錄

	name: 當前區域的區域名稱
	value:當前區域的某DNS服務器的名字,例如dns.xxx.com.;
	       註意:一個區域可以有多個ns記錄;
       例:
            xxx.com    IN     NS          dns1.xxx.com
            xxx.com    IN     NS          dns2.xxx.com

MX:Mail eXchanger,郵件交換器;

     name: 當前區域的區域名稱        
     value:當前區域某郵件交換器的主機名;
	
	 優先級:0-99,數字越小優先級越高;
	        
      註意:MX記錄可以有多個;但每個記錄的value之前應該有一個數字表示其優先級;
例:
    xxx.com    IN  MX     20   mx1.xxx.com
    xxx.com    IN  MX     10   mx2.xxx.com

A:Address, 地址記錄,FQDN --> IPv4;

     name:某FQDN,例如www.xxx.com.
      value:某IPv4地址;
例:
    www.xxx.com        IN   A   172.16.0.55
    www.xxx.com        IN   A   172.16.1.11
    edu.xxx.com        IN   A   172.16.0.55


AAAA:地址記錄, FQDN --> IPv6;

   name:FQDN    //表示的為域
   value: IPv6    //代表的IPV6


PTR:Pointer,IP --> FQDN:反向解析

   name:IP地址,有特定格式,IP反過來寫,而且加特定.in-ddar.arpa後綴;
   
           例如172.16.0.55的記錄應該寫為55.0.16.172.in-addr.arpa.;
   value:FQND
例:
    172.16.0.55.in-ddar.arpa  IN  PTR   www.xxx.com

CNAME:Canonical Name,別名記錄;

       name:FQDN格式的別名;        
       value:FQDN格式的正式名字;		
例:
    edu.xxx.com      IN  CNAME      www.xxx.com   
    sss.xxx.xom      IN  CNAME      www.xxx.com


區域的數據庫文件中定義時要註意:

(1) TTL可以從全局繼承;

(2) @表示當前區域的名稱;

(3) 相鄰的兩條記錄其name相同時,後面的可省略;

(4) 對於正向區域來說,各MX,NS等類型的記錄的value為FQDN,此FQDN應該有一個A記錄


配置正反向的DNS服務前的環境!

linux中提供的DNS服務包為bind(bekerley internet name domain)

使用 yum install 安裝bind;並使用 rpm -ql 查看安裝的程序的環境

程序環境:

    主程序:/usr/sbin/named
    主配置文件:/etc/named.conf, /etc/named.rfc1912.zones
    區域解析庫文件:/var/named/
    主配置文件中定義域類型分為:
        主域(master)、從域(slave)、緩存域(hint)、轉發域(forward)

bind的配置文件:

主配置文件:

    /etc/named.conf
    
     或包含進來其它文件;
	/etc/named.iscdlv.key
	/etc/named.rfc1912.zones    //用來定義區域的主配置文件
	/etc/named.root.key
解析庫文件:

/var/named/目錄下;                     //配置完的區域文件後對的配置文件的存放處
	一般名字為:ZONE_NAME.zone
					
註意:(1) 一臺DNS服務器可同時為多個區域提供解析;
      (2) 必須要有根區域解析庫文件: named.ca;
      (3) 還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫;
              正向:named.localhost       反向:named.loopback
bind程序安裝完成之後,默認即可做緩存名稱服務器使用;
                       如果沒有專門負責解析的區域,直接即可啟動服務;
CentOS 6與CentOS 7的bind啟動方法:

CentOS 6: service  named  start
CentOS 7: systemctl  start  named.service

DNS服務的正反向解析配置!

案例:

為xxx.ss域配置一個dns服務

dns服務器地址為:172.16.254.188

www : 172.16.254.188

mail: 172.16.252.177

ftp別名www,指向www


第一步安裝:bind

第二步修改/etc/named.conf配置文件:

[[email protected] ~]# vim /etc/named.conf 
 
 
options {                                                #全局配置
        //listen-on port 53 { 127.0.0.1; };              #註釋後監聽全部IP的53端口
        //listen-on-v6 port 53 { ::1; };
        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; };          #訪問控制,註釋後允許所有IP訪問或改為any
        allow-query     { any; }; 
        recursion yes;                             #是否遞歸
 
        //dnssec-enable yes;                       //是否啟用dns校驗的服務註銷或者改為no
        //dnssec-validation yes;

        dnssec-enable no;
        dnssec-validation no;
 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
 
        managed-keys-directory "/var/named/dynamic";
};
 
logging {                                           #定義日誌
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

第三步:在/etc/named.rfc1912.zones創建正反向區域或在/etc/named.conf內配置

zone "xxx.ss" IN {               //正向區域
        type master;
        file "xxx.ss.zone";
};
zone "16.172.in-addr.arpa" IN {         //反向區域   在配置反向區域時IP為反寫的並在後加特定的後綴.in-addr.arpa
        type master;
        file "172.16.zone";

第四步:在/var/named/ 下創建相關的正反向區域的配置文件

創建正向區域文件

    [[email protected] named]# vim xxx.ss.zone   #必須與區域文件名保持一致
     
    $TTL 2000
    @       IN      SOA     dns.xxx.ss.     admin.xxx.ss. (
                            2017052901
                            1H
                            5M
                            6D
                            1D )                       
    @       IN      NS      dns
    @       IN      MX 10   mail
    dns     IN      A       172.16.254.188
    mail    IN      A        172.168.252.177
    www     IN      A       172.16.254.188
    ftp     IN      CNAME   www

創建反向區域文件

    [[email protected] named]# vim 172.16.zone    #必須與區域文件名保持一致
     
    $TTL 2000
    @     IN    SOA    dns.xxx.ss.      admin.xxx.ss. (
                            2017052901
                            1H
                            5M
                            6D
                            1D )   
    @               IN      NS      dns.xxx.ss.
    188.254         IN      PTR     dns.xxx.ss.
    177.252         IN      PTR     mail.xxx.ss.
    188.254         IN      PTR     www.xxx.ss.

第五步:檢查並修改文件權限,檢查配置文件語法;

修改創建配置文件的權限

# chgrp  named   ZONE_FILE NAME
# chmod  o=      ZONE_FILE NMAE

檢查配置文件是否語法錯誤:

# named-checkzone  ZONE_NAME   ZONE_FILE    
# named-checkconf

第六步開啟服務:

# rndc  reload   服務重載
# systemctl  reload  named.service   重啟服務

第七步:產看本地53號端口是否正常監聽

ss -tnl

第八步測試:

正向解析:
    dig  -t A     @172.16.254.188
反向解析:
    dig  -x 172.16.254.188   @172.16.254.188

更多的dig命令請自行查找

以上僅為個人學習整理,如有錯漏,大神勿噴~~~

本文出自 “kkk” 博客,謝絕轉載!

Linux基礎服務_DNS原理以及正反向DNS配置