DNS服務器——如何解析公司域名

DNS and Bind


·Sockets:

         C/S

                 Client:發起應用請求的程序

                 Server:響應請求(提供服務)的程序

                     LISTEN:Socket

        

         傳輸層協議:TCP ,UDP ,SCTP

                 TCP:Transmission Control Protocol

                     面向連接的協議:雙方通信之前需要事先建立虛連接

                 UDP:User Datagram Protocol

                     無連接的服務:雙方無須通信之前建立虛連接

DNS:Domain Name Service ,應用層協議


·C/S

         53/udp ,53/tcp

         udp53號端口是用來查詢,tcp53號端口是用來主從復制的

·www.magedu.com :FQDN ( Full Qualified Domain Name )

·tld :Top Level Domain

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

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

·DNS查詢類型:

         遞歸查詢:

             DNS服務器與DNS服務器之間

         迭代查詢:

             主機到DNS服務器之間

·DNS名稱解析方式:

         名稱 –> IP:正向解析

         IP –> 名稱:反向解析

        

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

·域:magedu.com

         www.magedu.com. 1.1.1.1

         ftp.magedu.com. 2.2.2.2

         bbs.magedu.com. 3.3.3.3

         cloud.magedu.com. 4.4.4.4

·DNS服務器類型:

         負責解析至少一個域

                 主名稱服務器

                 輔助名稱服務器

         不負責域解析:

             緩存名稱服務器

·一次完整的查詢請求經過的流程:

         Client –> hosts文件 –> DNS Local Cache –> DNS Server (recursion) –>  Server Cache –> iteration(迭代) –> 根 –> 頂級域名DNS –> 二級域名DNS …..

                 自己負責解析的域:直接查詢數據庫并返回答案

                 不是自己負責解析的域:Server Cache –> iteration (迭代)

         解析答案:

                 肯定答案:

                 否定答案:不存在查詢的鍵,因此,不存在與其查詢鍵對應的值

                

                 權威答案: 由直接負責的DNS服務器返回的答案

                 非權威答案:

·主-輔DNS服務器:

         主DNS服務器:維護所負責解析的域數據庫的那臺服務器;讀寫操作均可進行

         從DNS服務器:從主DNS服務器那里或其他的從DNS服務器那里“復制”一份解析庫;但只能進行讀操作;

                 “復制”操作的實施方式:

                         序列號:serial,也即是數據庫的版本號;主服務器數據庫內容發生變化時,其版本號遞增

                         刷新時間間隔:refresh,從服務器每多久到主服務器查詢序列號更新狀況

                         重試時間間隔:retry,從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔

                         過期時間:expire,從服務器始終聯系不到主服務器時,多久之后放棄從主服務器同步數據;停止提供服務

                         否定答案的緩存時長:返回答案錯誤時,此錯誤答案在本地DNS緩存的時間

                

                 主服務器“通知”從服務器隨時更新數據

                

                 區域傳送:

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

                         增量傳送:lxfr,僅傳送變化的<新增的>數據

·區域(zone)和域(domain):

         magedu.com域

                 FQDN –> IP

                     正向解析庫

                 IP –> FQDN

                     反向解析庫

        

         注意:區域并不一定就比域要小

·區域數據庫文件:

         資源記錄:Resource Record,簡稱rr

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

        

         SOA:Start Of Authority,起始授權記錄;一個區域解析庫由其只能有一個SOA記錄,而且必須放在第一條

         NS:Name Service,域名服務記錄;一個區域解析庫可以有多個NS記錄;其中一個為主的

         A:Address,地址記錄,FQDN –> IPv4

         AAAA:地址記錄,FQDN –> IPv6

         CNAME:Canonical Name,別名記錄

         PTR:Pointer,IP –> FQDN

         MX:Mail eXchanger,郵件交換器

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

·資源記錄的定義格式:

        語法: name [TTL] IN RR_TYPE value

·SOA:

         name:當前區域的區域名稱;例如“magedu.com.”,或者“2.3.4.in-addr.arpa.”

         value:由多部分組成

                 (1)當前區域的區域名稱(也可以使用主DNS服務器名稱)

                 (2)當前區域管理員的郵箱地址;但地址紅不能使用@符號,一般使用點來替代

                 (3)(主從服務器協調屬性的定義以及否定答案的TTL)

        

         例如:

                gm.com. 86400 IN SOA gm.com admin.gm.com (

                                 2017010801 ;serial

                                 2H   ;refresh

                                 10M   ;retry

                                 1W   ;erpire

                                 1D ;negative answer ttl

                 )

·NS:

         name:當前區域的區域名稱

         value:當前區域的某DNS服務器名稱,例如:ns.magedu.com.

              注意:一個區域可以有多個ns記錄

        

         例如:

                gm.com. 86400 IN NS ns1.gm.com.

                gm.com. 86400 IN NS ns2.gm.com.

·MX:

         name:當前區域的區域名稱

         value:當前區域某郵件交換器的主機名

             注意:MX記錄可以有多個,但是每個記錄的value之前應該有一個數字表示其優先級

        

         例如:

                gm.com. IN MX 10 mx1.gm.com.

                gm.com. IN MX 20 mx2.gm.com.

·A:

         name:某FQDN,例如:www.magedu.com.

         value:某IPv4地址

        

         例如:

                 www.gm.com. IN A 1.1.1.1

                 www.gm.com. IN A 1.1.1.2

                 bbs.gm.com. IN A 1.1.1.1

·AAAA:

         name:FQDN

         value:IPv6

·PTR:

         name:IP地址,有特定格式,IP反過來寫,而且加特定后綴;例如:1.2.3.4的記錄應該寫為4.3.2.1.in-addr.arpa.

         value:FQDN

        

         例如:

             4.3.2.1.in-appr.arpa. IN PTR www.magedu.com.

·CNAME:

         name:FQDN格式的別名

         value:FQDN格式的正式名字

        

         例如:

             web.gm.com. IN CNAME www.gm.com.

·注意:

(1)TTL可以從全局繼承

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

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

(4)MS,NS等類型的記錄的value為一個FQDN,此FQDN應該有一個對應的A記錄

BIND的安裝配置:


·BIND:Berkeley Internet Name Domain,ISC.org

         dns:協議

         bind:dns協議的一種實現

         named:bind程序的運行的進程名

·程序包:

         bind-libs:被bind和bind-utils包總的程序共同用到的庫文件

         bind-utils:bind客戶端程序集,例如:dig,host,nslookup等命令

        

         bind:提供了dns server程序、以及幾個常用的測試程序

         bind-chroot:選裝,讓named運行于jail模式下

bind:


·主配置文件:/etc/named.conf

        或包含進來其他文件

                /etc/named.iscdlv.key

                /etc/named.rfc1912.zones

                /etc/named.root.key

                                        

                可以使用include包含進其他文件

·解析庫文件:

         /var/named/目錄下:<也是bind工作目錄>

             一般名字為:ZONE_NAME.zone

        

         注意:

                 (1)一臺DNS服務器可同時為多個區域提供解析

                 (2)必須要有跟區域解析庫文件:named.ca

                 (3)還必須有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫

                         正向:named.localhost

                         反向:named.loopback

·rndc:remote name domain contoller

    953/tcp,但默認監聽于127.0.0.1地址,因此僅允許本地使用

·bind程序安裝完成之后,默認即可做緩存名稱服務器使用;如果沒有專門負責解析的區域,直接即可啟動服務

         CentOS 6:service named start

         CentOS 7:systemctl start named.service

·主配置文件格式:

         全局配置段:

             options {…};

         日志配置段:

             logging {…};

         區域配置段:

                 zone {…};

                     那些由本機負責解析的區域,或轉發的區域

                

                 注意:每個配置語句必須以分號結尾

        

         緩存名稱服務器的配置:

                 監聽能于外部主機通信額地址:

                         listen-on port 53;

                         listen-on port 53 { 172.16.100.67; };

                

                 學習時,建議關閉dnssec

                         dnssec-enable no;

                         dnssec-validation no;

                         dnssec-lookaside no;

                

                 關閉僅允許本地查詢:

                     //allow-query { localhost; };

                

                 允許某機器進行區域傳送<應設置為只對從服務器進行區域傳送>

                     allow-transfer { IP; }

·檢查配置文件語法錯誤:

    named-checkconf [/etc/named.conf]

·檢查配置區域文件語法錯誤:

    named-checkzone ZONE_NAME /var/named/ZONE_NAME.zone

·測試工具

        dig,host,nslookup等

                        

        dig命令:

                dig [-t RR_TYPE] name [@server] [query options]

                                        

                用于測試dns系統,因此其不會查詢hosts文件

                                        

                查詢選項:

                        +[no]trace:跟蹤解析過程

                        +[no]recurse:進行遞歸解析

                                        

                注意:反向解析測試

                    dig -x IP

                                        

                模擬完全區域傳送:

                    dig -t axfr DOMAIN [@server]

                        

        host命令:

            host [-t RR_TYPE] name SERVER_IP

                        

        nslookup命令:

                nslookup [-options] [name] [server]

                                        

                交互式模式:

                    nslookup>

                            server IP :以指定的IP為DNS服務器進行查詢

                            set q=RR_TYPE :要查詢的資源記錄類型

                            name :要查詢的名稱

·配置解析一個正向區域:

以gm.com域為例:

(1)定義區域

         在主配置文件中或主配置文件輔助配置文件中實現

         zone "ZONE_NAME" IN {

                 type {master|slave|hint|forward};

                 file "ZONE_NAME.zone"

         };

        

         注意:區域名字即為域名

(2)建立區域數據文件<主要記錄為A或AAAA記錄>

         在/var/named目錄下建立區域數據文件

        

         文件為:/var/named/gm.com.zone

                 $TTL 3600

                 $ORIGIN magedu.com.

                 @ IN SOA ns1.gm.com. admin.gm.com. (

                                     2017092301

                                     1H

                                     10M

                                     3D

                                     1D )

                         IN NS ns1

                         IN MX 10 mx1

                         IN MX 20 mx2

                 ns1 IN  A 10.1.143.2

                 mx1 IN  A 10.1.143.2

                 mx2 IN  A 10.1.143.2

                 www IN  A 10.1.143.2

                 web IN  CNAME www

                 bbs IN  A 10.1.143.3

                 bbs IN  A 10.1.143.4

        

         權限及屬組修改:

                 # chgrp named /var/named/gm.com.zone

                 # chmod o= /var/named/gm.com.zone

        

         檢測語法錯誤:

                 # named-checkconf [/etc/named/named.conf]

                 # named-checkzone ZONE_NAME ZONE_NAME_FILE

(3)讓服務器重載配置文件和區域數據文件

         # rndc reload 或

         # systemctl reload named.service

·配置解析一個反向區域:

(1)定義區域

         在主配置文件中或主配置文件輔助配置文件中實現

         zone "ZONE_NAME" IN {

                 type {master|slave|hint|forword};

                 file "ZONE_NAME.zone"

         };

         注意:

                 區域名

                 反向區域的名字

                 反寫的網段地址.in-addr.arpa

                 143.1.10.in-addr.arpa

(2)建立區域數據文件<主要記錄為PTR>

         在/var/named目錄下建立區域數據文件

         注意:在反向解析區域數據文件中,不能有MX的記錄

        

         文件為:/var/named/10.1.143.zone

                 $TTL 3600

                 $ORIGIN 143.1.10.in-addr.arpa.

                 @ IN SOA ns1.gm.com. admin.gm.com. (

                                 2016092301

                                 1H

                                 10M

                                 3D

                                 1D )

                         IN NS ns1

                 2 IN  A ns1.gm.com.

                 2 IN  A mx1.gm.com.

                 2 IN  A mx2.gm.com.

                 3 IN  A bbs.gm.com.

                 4 IN  A bbs.gm.com.

                 2 IN  A www.gm.com.

        

         權限及屬組修改:

                 # chgrp named /var/named/10.1.143.zone

                 # chmod o= /var/named/10.1.143.zone

        

         檢測語法錯誤:

                 # named-checkconf [/etc/named/named.conf]

                 # named-checkzone ZONE_NAME ZONE_NAME_FILE

(3)讓服務器重載配置文件和區域數據文件

         # rndc reload 或

         # systemctl reload named.service

·主從服務器:

注意:從服務器是區域級別的概念

1、應該為一臺獨立的名稱服務器

2、主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器

3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置于/var/named/slaves/目錄中

4、主服務器得允許從服務器作區域傳送

5、主從服務器時間應該同步,可通過ntp進行:ntpdate命令

6、bind 程序的版本應該保持一致;否則,應該從高,主低

配置一個從區域

On Slave

         (1)定義區域

                 定義一個從區域:

                 zone "ZONE_NAME" IN {

                         type slave;

                         file "slaves/ZONE_NAME.zone";

                         masters { MASTER_IP };

                 };

                

                 配置文件語法錯誤檢測:named-checkconf

        

         (2)重載配置文件

                 # rndc reload

                 # systemctl reload named.service

On Master<每次修改了主服務器后,序列號要加1,從服務器才能同步數據>

         (1)在主服務器上的正向區域解析文件中追加2條記錄

                 從服務器的NS記錄:

                 magedu.com. IN NS ns2.magedu.com.

                 從服務器NS記錄的A記錄

                 ns2 IN A SLAVE_IP<從服務器的IP>

·rndc命令:named服務器控制命令

         rndc –> rndc (953/tcp)

         rndc COMMAND

        

         COMMAND:

                 reload:重載主配置文件和區域解析庫文件

                 reload zone:重載區域解析庫文件

                 retransfer zone:手動啟動區域傳送過程,而不管序列號是否增加

                 notify zone:重新對區域傳送發通知

                 reconfig:重載主配置文件

                 querylog:開啟或關閉查詢日志文件/var/log/message

                 trace:遞增debug 一個級別

                 trace LEVEL:指定使用的級別

                 notrace:為將調試級別設置為 0

                 flush:清空DNS服務器的所有緩存記錄

·子域授權:

         注意:關閉dnssec功能:

                 dnssec-enable no;

                 dnssec-validation no;

        

         正向解析區域授權子域的方法:<添加在正向區域解析文件中的數據>

                 ops.gm.com. IN NS ns1.ops.gm.com.

                 ops.gm.com. IN NS ns2.ops.gm.com.

                 ns1.ops.gm.com. IN NS IP.AD.DR.ESS

                 ns2.ops.gm.com. IN NS IP.AD.DR.ESS

        

         在子域服務器上在配置/etc/named.conf文件和/var/named/目錄下的區域文件,格式大致同主服務器

             提醒:此時的子域的域名是ops.gm.com

·轉發服務器:

         注意:關閉dnssec功能:

                 dnssec-enable no;

                 dnssec-validation no;

        

         定義轉發:

                 注意:被轉發的服務器必須允許為當前服務做遞歸,否則轉發請求不予進行

                

                 (1)區域轉發:僅轉發對某些特定區域的解析請求

                         zone "ZONE_NAME" IN {

                                 type forward;

                                 forward {first|only};

                                 forwarders { SERVER_IP; };

                         }

                        

                         first:首先轉發;轉發器不響應時,自行去迭代查詢

                         only:只轉發;轉發器不響應時,就放棄查詢

                

                 (2)全局查詢:針對凡本地沒有通過zone定義的區域查詢請求,通通轉發給某轉發器

                         options {

                                 …..

                                 forward {first|only};

                                 forwarders { SERVER_IP; };

                                 …..

                         };

·bind中的安全相關的配置:

         acl:訪問控制列表;把一個或多個地址歸并成一個命名的集合,隨后通過此名稱即可對此集合內所有的主機實現統一調用

        

                 acl acl_name{

                         ip;

                         net/prelen;

                 };

                

                 示例:

                 acl mynet {

                         172.16.0.0/16;

                         127.0.0.0/8;

                 };

                

                 bind中有四個內置的acl:

                         none:沒有一個主機

                         any:任意主機

                         local:本機

                         localnet:本機所在的IP所屬的網絡

        

         注意:只能先定義,后使用 ;因此一般 定義在 配置文件中,處于options的前面

        

         訪問控制指令:

                 allow-query {}; 允許查詢的主機;白名單

                 allow-transfer {}; 允許向那些主機做區域傳送;默認為向所有主機;應該配置僅允許從服務器可以傳送

                 allow-recursion {}; 允許那些主機向當前DNS服務器發起遞歸查詢請求

                 allow-update {}; DDNS,運行動態更新區域數據庫文件中內容

·bind view:<視圖>

         一個bind服務器可定義多個view,每個view中可定義一個或多個zone

         每個view用來匹配一組客戶端

         多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件

        

         view VIEW_NAME {

                 match-clients { };

                 zone …

                 zone …

                 ….

         };

        

         例如:

                 view internal {

                         match-clients { 172.16.0.0/8; };

                         zone "gm.com" IN {

                                 type "master";

                                 file "gm.com/internal.zone";

                         };

                 };

                

                 view external {

                         match-clients { any; };

                         zone "gm.com" IN {

                                 type "master";

                                 file "gm.com/external.zone";

                         };

                 };

                

         注意:

                 (1)一旦啟用了view,所有的zone都只能定義在view中

                 (2)僅在允許遞歸請求的客戶端所在view中定義根區域

                 (3)客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表

原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/49107

(0)
megedugaomegedugao
上一篇 2016-09-25
下一篇 2016-09-25

相關推薦

  • 初學Linux之文件查找和壓縮

    使用locate命令 ,使用find命令 ,壓縮和解壓縮工具

    2018-01-13
  • shell腳本編程__bash的配置

    shell腳本編程__bash的配置   一、bash的配置文件:   按生效范圍劃分,存在兩類:     全局配置: /etc/profile /etc/profile.d/*.sh /etc/bashrc    個人配置: ~/.bash_profile ~/.bashrc 二、she…

    Linux干貨 2016-08-26
  • ansible自動化運維工具使用詳解

    一、ansible簡介   1.ansible        ansible是新出現的自動化運維工具,基于Python研發。糅合了眾多老牌運維工具的優點實現了批量操作系統配置、批量程序的部署、批量運行命令等功能。僅需在管理工作站上安裝ansible程序配置被管控主機的IP信息,被…

    2016-04-30
  • 2016-10-17作業

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 答:hwclock -s 2 生產有一個數據同步腳本需要執行很長時間,怎樣做到無人值守,在管理工具退出的情況下,腳本依然能正常運行。 答:screen -S work  進去后開始做工作,暫時離開時可使用 ctrl+a,d 剝離當前會話。 3 Linux系統中命令共分為內建命令…

    Linux干貨 2016-10-18
  • Hadoop簡介

    我們之前已經解釋過了分布式存儲,分布式存儲有很多的解決方案,其中有個開源程序叫做HDFS,HDFS+MAPREDUCE=hadoop。 hadoop不算是單存的分布式存儲,我們之前提到的Mogilefs和Fastdfs都是分布式存儲。hadoop屬于分布式計算,MAPREDUCE是一個編程的框架,使得程序可以并行計算。 HDFS適用于存儲單個大文件,在存儲中…

    2017-03-13
  • test

    test the URL.

    Linux干貨 2016-12-03
欧美性久久久久