Linux中DNS配置和應用


DNS(Domain Name System 域名系統)web

DNS是因特網的一項服務,將域名和IP地址相互映射爲一個分佈式數據庫,令人可以更方便地訪問互聯網;DNS使用TCP和UDP的53端口數據庫


================================================================================
緩存


dns的分佈式結構安全

tld:Top Level Domain(頂級域,在根之下)服務器

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

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


DNS查詢類型:tcp

遞歸查詢:本地的主機向指向的DNS服務器發起的查詢請求分佈式

迭代查詢:被指向的DNS服務器向其餘DNS服務器發起的查詢請求一般是迭代查詢ide


DNS名稱解析方式:

正向解析名稱 --> IP

反向解析IP --> 名稱

注意:兩者的名稱空間,非爲同一個空間,即非爲同一棵樹;所以,也不是同一個解析庫;


DNS服務器類型:

負責解析至少一個域

    主名稱服務器;

    輔助名稱服務器;

不負責域名解析

    緩存名稱服務器;


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

Client --> hosts文件 --> DNS Local Cache --> DNS  Server(recursion遞歸) --> 

    1)本身負責解析的域:直接查詢數據庫並返回答案;

    2)不是本身負責解析域:Server Cache --> iteration(迭代查詢)

解析答案類型:

    1)確定答案:有查詢到的記錄;確定答案可緩存;

    2)否認答案:不存在查詢的鍵,所以,不存在與其查詢鍵對應的值;

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

    2)非權威答案:不是DNS服務器直接返回的答案,例如DNS服務器緩存的答案


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

主-輔DNS服務器:

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

從DNS服務器:從主DNS服務器那裏或其它的從DNS服務器那裏「複製」一份解析庫;但只能進行讀操做,即只能進行查詢操做,不能修改


從DNS服務器「複製」操做的實施方式:

    序列號:serial, 也便是數據庫的版本號;當主服務器數據庫內容發生變化時其版本號要遞增;從服務器經過查看主服務器數據庫序列號得知數據庫是否更新;

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

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

    過時時長:expire,從服務器始終聯繫不到主服務器時,多久以後放棄從主服務器同步數據;中止提供服務;

    否認答案的緩存時長

主服務器「通知」從服務器隨時更新數據;

區域傳送:

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

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


區域(zone)和域(domain):

例如magedu.com域:區域是物理概念,域是邏輯概念

    FQDN --> IP 正向解析庫;區域

    IP --> FQDN(主機名)反向解析庫;區域


區域數據庫文件:

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

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

SOA:Start Of Authority,起始受權記錄;指定有關DNS區域的權威性信息;一個區域解析庫有且只能有一個SOA記錄,並且必須放在第一條;

NS:Name Service,域名服務記錄;標示區域內DNS服務器的主機名;一個區域解析庫能夠有多個NS記錄;其中一個爲主的;

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

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

CNAME:Canonical Name,別名記錄;

PTR:Pointer,PTR指針記錄實現反向解析;IP --> FQDN;

MX:Mail eXchanger,郵件交換器;標示郵件服務器的主機名;優先級:0-99,數字越小優先級越高;

資源記錄的定義格式:

語法:name  [TTL] INRR_TYPE value

name:既能夠是ip(反向解析),也多是某個主機名

[TTL]:域名解析記錄在DNS服務器中的存留時間,省略時可統一分配TTL值

IN:關鍵字

RY_TYPE:資源記錄類型

value:資源記錄的值


SOA

name: 當前區域的名字;例如」mageud.com.」,或者「2.3.4.in-addr.arpa.」;

value:由多部分組成:

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

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

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

例如:[分號後爲註釋,H、M、W、D分別表示小時、分鐘、周、天]

magedu.com. 86400 IN SOA magedu.com. admin.magedu.com.  (

            2017010801; serial         

            2H ; refresh                  

            10M ; retry

            1W; expire

            1D; negative answer ttl 

)

NS

name: 當前區域的區域名稱

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

注意:一個區域能夠有多個DNS服務器,所以能夠有多個ns記錄; 例如:

magedu.com. 86400 IN NS  ns1.magedu.com.

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

MX

name: 當前區域的區域名稱

value:當前區域某郵件服務器的主機名;

注意:MX記錄能夠有多個;但每一個記錄的value以前應該有一個數字表示其優先級;例如:

magedu.com. IN MX 10  mx1.magedu.com.

magedu.com. IN MX 20  mx2.magedu.com.


A

name:某FQDN(主機名),例如www.magedu.com.

value:主機的IPv4地址;FQDN和IP可互相對應多個;

例如:

www.magedu.com.IN A1.1.1.1

www.magedu.com.IN A1.1.1.2

bbs.magedu.com.IN A1.1.1.1

AAAA

name:某FQDN(主機名)

value: 主機的IPv6地址

PTR

name:IP地址,有特定格式,即IP反過來寫,並且要加特定後綴;

         例如1.2.3.4的記錄應該寫爲4.3.2.1.in-addr.arpa.

value:FQND

例如:

4.3.2.1.in-addr.arpa.  IN         PTRwww.magedu.com.

CNAME

name:FQDN格式的別名;

value:FQDN格式的正式名字;

例如:

web.magedu.com.  IN  CNAME    www.magedu.com.

注意:

(1) TTL能夠從全局繼承;

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

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

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


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



BIND的安裝配置:


BIND: Berkeley Internet Name Domain,如今由互聯網系統協會ISC開發和維護

dns是一種協議;bind是dns協議的一種實現

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

bind相關的程序包:

系統自帶:

bind-libs:被bind和bind-utils兩個包中的程序共同用到的庫文件;

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

手動安裝:

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

bind-chroot:選裝,讓named進程運行於jail模式下;

wKiom1aRDm-hfk6sAAAh14w9G_s445.png


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

rndc:remote name domain contoller(遠程名稱域控制器)

工做於tcp的953端口,但默認監聽於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 { 192.168.2.17; };   //監聽特定的地址

學習時,建議關閉dnssec功能

    dnssec-enable no;

    dnssec-validation no;

    dnssec-lookaside no;

關閉僅容許本地查詢:

    //allow-query  { localhost; };


wKiom1aRFM-A3e7PAAAG7uKLr4A889.png

wKiom1aRFa7jjukAAABo2GLBTOg997.png


檢查配置文件語法錯誤:

    named-checkconf   [/etc/named.conf]

wKioL1aRFmOTE1u3AAAGNxqeIkI754.png


配置文件檢查無誤後,便可啓動服務:

wKioL1aRFuvSji1LAAAn2Gr64Z4623.png

wKiom1aRF5Lzqp61AACBm0m4F1E996.png


能夠將dns服務器指向本身:

wKioL1aRGWryxVFuAAAQ8qPxwI4138.png

wKioL1aRGgnTUsVzAAAZabYmtB4632.png


測試工具:dig, host, nslookup等

一、dig命令用於測試dns系統,所以其不會查詢hosts文件;

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

[-t RR_TYPE]:指明資源記錄類型;

name:將哪一個名字解析爲資源記錄的值;

[@SERVER]:經過指定的DNS服務器解析,不指明則經過本機測試

wKioL1aRHu2zNJWMAAAHezMEdhU313.png

查詢選項:

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

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

wKiom1aRHs-jYffBAAAbAJRNCsg335.png

注意:反向解析測試

dig  -x  IP

wKiom1aRH7GgEC9cAAAH5bBqf-4106.png

wKioL1aRH92y1jrBAAAaKPbdQsY482.png


模擬徹底區域傳送:

dig  -t  axfr  DOMAIN  [@server]




二、host命令:

host  [-t  RR_TYPE]  name  [SERVER_IP]

wKiom1aRIFKSPwjlAAAYakQfC1I974.png

wKioL1aRIhOTgd-LAAAk-Y0qJuY759.png

三、nslookup命令:

nslookup  [-options]  [name]  [server]

交互式模式:

nslookup>

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

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

    name:要查詢的名稱;

wKiom1aRI1bil_6PAAA1eV31Nl4540.png

四、rndc命令:named服務控制命令

rndc  status:顯示服務器的狀態

rndc  flush:清空服務器的緩存

rndc  reload從新加載配置文件和區域數據文件

wKiom1aRJMCSO8hDAAA5M0zSQtA535.png


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

配置解析一個正向區域:

以coffeeyep.com域爲例:

(1) 定義區域

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

zone  "ZONE_NAME"  IN  {

    type  {master|slave|hint|forward};  //定義區域類型{主|從|根|轉發}服務器

    file  "ZONE_NAME.zone";               //指明區域文件路徑,相對路徑爲/var/named下

};

注意:區域名字即爲域名;


/var/named.conf只定義了根,指明瞭遵循rfc1912規範的各區域的專用配置文件的路徑

wKioL1aRKXSCffsEAAAG2c_0c3U906.png

wKiom1aRKUmBKmbAAAAXizvC5lU073.png

wKiom1aRK5Oywky6AAAIVdA1_Fg862.png

wKiom1aRK5OCh2VBAAALePL1uI4414.png


(2) 創建區域數據文件(主要記錄爲A或AAAA記錄)

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

文件爲:/var/named/coffeeyep.com.zone

wKiom1aRMSnDD-vUAABNQCrZ90A795.png


權限及屬組修改:

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

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

wKiom1aRMvLAPoUNAABNPKUBsEk272.png

檢查語法錯誤:

# named-checkconf 

# named-checkzone  ZONE_NAME   ZONE_FILE

wKioL1aRMe-yYMykAAAWZa1B1hg838.png

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

# rndc  reload 或

# systemctl  reload  named.service

wKiom1aRMniw0HSkAAAb0UTlTr0106.png

wKioL1aRMqWB_cugAAAk0CQ8AuU090.png


接下來就能夠指定本身爲DNS服務器進行解析了

wKiom1aRM8PBk3RfAAAtYkzR-sE507.pngwKioL1aRNPvTniiHAACDyic_SeE833.png


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

配置解析一個反向區域


(1) 定義區域

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

zone  "ZONE_NAME"  IN  {

    type  {master|slave|hint|forward};

    file  "ZONE_NAME.zone"; 

};

注意:反向區域的名字:

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

例如:2.168.192.in-addr.arpawKiom1aRK5Oywky6AAAIVdA1_Fg862.png

wKioL1aROIXzIIdFAAAOBAhc9Js440.png

(2) 定義區域解析庫文件(主要記錄爲PTR)

示例,區域名稱爲2.168.192.in-addr.arpa;

wKiom1aRPkuShabYAABEC4fpysg359.png

權限及屬組修改:

    # chgrp  named  /var/named/172.16.100.zone

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

wKioL1aRPBmBJr4dAABVhXXD7uU852.png

檢查語法錯誤:

    # named-checkconf 

    # named-checkzone  ZONE_NAME   ZONE_FILE

wKioL1aRPrPSCJsKAAAYRo6SUrs735.png


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

# rndc  reload 或

# systemctl  reload  named.service

wKiom1aRPy6hsC9CAAAcQaMYbn4666.png

wKioL1aRP1qDDznzAAAk0MhpTw0641.png


接下來就能夠進行反向解析了:

wKioL1aRP8GS1cvsAAB-ZBTOG-I790.png


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

配置主從服務器:

注意:從服務器是區域級別的概念;便可以僅從與主服務器的某個區域

注意:主從服務器時間要同步,可以使用ntpdate命令同步時間服務器;

配置一個從區域:


On Master(192.168.2.17)

確保區域數據庫文件中爲每一個從服務器都配置了NS記錄,而且在正向區域文件須要每一個從服務器的NS記錄的主機名配置一個A記錄,且此A記錄後面的地址爲真正的從服務器的IP地址;

wKioL1aRTpqDG4I9AABY0Rnl9OQ189.png


檢查區域配置文件:

wKiom1aRTwmAXRPhAAAQg-xawtw458.png


重載區域配置文件:

wKioL1aRT8rTwSROAABCfPP2dj4976.png


On Slave(192.168.2.18)

(1) 定義區域,定義一個從區域;

zone "ZONE_NAME"  IN {

    type  slave;

    file  "slaves/ZONE_NAME.zone";    

    masters  { MASTER_IP; };

};

主服務器的slave目錄對於屬主屬組都有寫權限,專用於從服務器從主服務器同步文件、須要自動建立數據庫文件時使用

wKiom1aRR72BHaNLAAAGhLxkBi0485.png

wKioL1aRSUHT-BMpAAAHRftvO7U619.png

wKiom1aRSlzSeRXfAABppeJF5rY999.pngwKiom1aRSpmTz0tZAAAqxgY1GBM623.png

wKioL1aRS7Gi1lL9AAAIQt7GT_s455.png

wKioL1aRTLyxRxT9AAAXLMTgIzc371.png



配置文件語法檢查:named-checkconf

wKiom1aRTLCRGqlSAAAGelcpRZs259.png

(2) 重載配置

rndc  reload 或

systemctl  reload  named.service

wKioL1aRUWeiFBtsAAC2Rn0SUk8933.png


接下來就能夠在從服務器的/var/named/slaves目錄下看到從主服務器傳送的區域配置文件了

wKiom1aRUayC3aeWAAAJsb6zvA8072.png


將DNS服務器指向本身解析www.coffeeyep.com:

wKioL1aRUmbBVgR-AACBSMY2qp8059.png



On Master(192.168.2.17)

再次在主DNS服務器上新增一條A記錄:

wKiom1aRU0yADsAtAABXGaLsykc385.png


重載配置文件後,就能夠查看DNS的狀態中發送序列號更新通知到從服務器了:

wKioL1aRVI7gIHFDAAC07SFVJYY648.png



On Slave(192.168.2.18)

查看DNS狀態中接收到主服務器的更新序列號通知並自動更新區域配置文件了:

wKiom1aRVVzDjaWcAAC1ezqLGgk233.png


從服務器無需重載配置文件便可查詢到主DNS服務器新增的記錄了:

wKioL1aRVgfz4maWAACAV_w3VwM151.png


配置從服務器的反向解析區域

On Master(192.168.2.17)

在主DNS服務器上的反向解析區域的數據庫文件中添加從服務器的NS記錄和PTR指針記錄

wKioL1aRWh6wv7PGAABO0N-2-Ac285.png

wKiom1aRWl-xC9uMAAAbQ8YfSPs475.png


On Slave(192.168.2.18)

添加反向解析的區域配置文件

wKioL1aRS7Gi1lL9AAAIQt7GT_s455.png

wKiom1aRV8_yGTqbAAATiQyT9Os225.png


wKioL1aRWGCRkUM1AAAGjmAc4yE758.png

wKioL1aRWwzxbkboAAAUUYtzdSE231.png

wKiom1aRW0yQHMGwAACNLbNwBEw327.png



On Master(192.168.2.17)

再次在主DNS服務器上新增一條反向解析記錄:

wKiom1aRXD2yEvYgAABTA04ELjI759.png


wKioL1aRXK6BS3LfAAAJA4xVKb4988.png



On Slave(192.168.2.18)

從服務器接收到主服務器的反向解析文件更新序列號通知並自動更新其區域配置文件

wKiom1aRXRHyeUZ2AACEAuxEqag508.png


手動執行區域傳送

On Master(192.168.2.17)

wKiom1aR4M2RZ9RaAACPcYcLGqY333.png


On Slave(192.168.2.18)

手動執行正向區域傳送

wKiom1aR4UaTxvBTAACTNMDc5xY657.png


手動執行反向區域傳送

wKiom1aR4Y6yN5wAAACRC-Pga7w548.png


注意:主DNS服務器應該配置訪問控制權限,只開放僅有從DNS服務器能傳送的權限。




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

子域受權:

正向解析區域受權子域的方法:

在正向區域中定義子域的主從服務器的NS記錄和A記錄便可,子域也應有主從DNS服務器

ops.coffeeyep.com. IN NS  ns1.ops.coffeeyep.com.

ops.coffeeyep.com. IN NS  ns2.ops.coffeeyep.com.

ns1.ops.coffeeyep.com. IN A IP.AD.DR.ESS

ns2.ops.coffeeyep.com. IN A IP.AD.DR.ESS


On Master(192.168.2.17)

在父域受權子域,編輯正向解析區域文件:wKiom1aR-tvA3CZjAABl6lU_T_U165.pngwKiom1aR50rA5SRwAAAJG9JLQ-I372.png


On Subns1(子域主DNS服務器,192.168.2.19):


/* (使用本地yum源出問題了,重建下緩存)

wKioL1aR6uOy6k3XAABbulclgwQ384.png/*


wKioL1aR6xvAFwI_AAAqaMNwQew015.png


wKioL1aR7PaQbsBzAAAHepEK1bs829.png

wKiom1aR7Mqz2p2rAABpYH1oV7g992.png

wKioL1aR7PeAfDkeAAAGfu3MiWo002.png

wKioL1aR7PiQpxxzAAAq0L89XwA076.png

wKiom1aR7M3TNzbqAAA4O5QnUXQ371.png



查看當前主機的53號端口處於監聽狀態,就能夠做爲緩存名稱服務器使用了

配置子域ops.coffeeyep.com的主DNS服務器的正向解析區域和區域配置文件

wKiom1aR7hWj97hHAAAIfT3myrc078.png

wKioL1aR7kLjpRhgAAAL_18fSB8421.png

wKioL1aR7_TTzcS0AAAqigqlD3I012.png

wKioL1aR8NnjmGsBAABwPDa1Zco429.png
wKiom1aR8RSxHaXSAAB2_pBacCw201.png



On Master(192.168.2.17)

在父域上能夠解析子域了:



定義轉發:

注意:被轉發的服務器必須容許爲當前服務器作遞歸;

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

zone  "ZONE_NAME"  IN {

    type  forward;

    forward  {first|only};

    forwarders  { SERVER_IP; };     //定義轉發給哪臺DNS服務器

};

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

only:只轉發;


On Subns1(192.168.2.19):

wKioL1aR9XDQcm6wAAAIwQTaB7s645.png

wKiom1aR9UTxGrf8AAARh4Zy7Zs961.png

wKioL1aSAzKBeL5BAAAO70cIf4c768.pngwKiom1aSBDKzBQ4EAACRlM4NJNM598.png

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

options {

    ... ...

    forward  {only|first};

    forwarders  { SERVER_IP; };

    .. ...

};

On Subns1(192.168.2.19):

wKioL1aR7PaQbsBzAAAHepEK1bs829.png

wKiom1aSBQOD-W6BAAA5MG4FwHY425.png

wKiom1aSBeax4qEoAACMLbe5Shs230.png




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

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所屬的網絡;

訪問控制指令:

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

allow-transfer {};  容許向哪些主機作區域傳送;默認爲向全部主機;應該配置僅容許從服務器;

allow-recursion {}; 容許哪此主機能向當前DNS服務器發起遞歸查詢請求; 默認全部主機

allow-update {}; DDNS,容許動態更新區域數據庫文件中內容;若是沒有使用DDNS,每一個區域默認都應設置爲none


On Master(192.168.2.17)

定義acl,注意acl的位置需在options以前

wKioL1aSCReAd_YxAAA8y1Hsu5Q697.png


在區域中添加acl表示只對此區域生效,僅容許本機和從服務器作傳送;wKioL1aR9XDQcm6wAAAIwQTaB7s645.png

wKiom1aSCXDROP1LAAAP906su10152.png

wKioL1aSCizhrZ8TAAAOjtDA5sU347.png


On Subns1(192.168.2.19):

因爲不在192.168.2.17的acl白名單中,由於不能經過其作區域傳送了

wKioL1aSCwjC11J6AAAaEGXTxuM355.png


On Master(192.168.2.17)

配置容許遞歸查詢的acl

wKiom1aSDQSzzYqJAAAG7rXjlsc203.png

wKioL1aSDTLyx90MAACDIecA8GA121.pngwKioL1aSCizhrZ8TAAAOjtDA5sU347.png



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

bind view(智能DNS):


視圖:

view  VIEW_NAME {

    zone

    zone

    zone

}

例如:使用view定義內網和外網的用戶分別獲得不一樣的解析結果,優先匹配的位置要放在上面定義,這樣不一樣的view能夠獲得不一樣的解析結果,完成智能解析

view internal  {

    match-clients { 172.16.0.0/8; };

    zone "coffeeyep.com"  IN {

        type master;

        file  "coffeeyep.com/internal";

    };

};

view external {

    match-clients { any; };

    zone "coffeeyep.com" IN {

        type master;

        file coffeeyep.com/external";

    };

};

相關文章
相關標籤/搜索