域名解析服務(DNS)之bind

DNS簡介

DNSDomain Name System的簡稱,DNS的主要作用就是講主機名解析成ip地址的過程,因為在計算機網絡當中是通過ip地址來進行主機間通信的,ipv4的地址是32位,人類記憶起來十分困難,更何況ipv6128位,所以我們需要一個簡單容易記憶的字符串來替換ip地址,當我們訪問www.baidu.com它能知道訪問的是某個ip地址的服務器,這時需要一種機制能夠完成從域名(FQDN)到主機識別的ip地址之間的轉換,DNS沒出現的時候,這個解析過程是通過hosts文件來記錄域名和ip的對應關系,但是host文件有缺陷,只能作用于本機,不能更新同步所有的主機使用,管理起來相當困難。

DNS是一個分布式,分層次的主機名管理架構,通過配置DNS服務器地址,主機不需要知道對應的ip地址就能通過主機名的形式訪問互聯網。DNS利用類似到處抓那個的目錄結構將主機名的管理分配在不同層級的DNS服務器中,經過分層管理,每一集DNS服務器負責部分域名信息,這也就減輕了DNS服務器的負載,同時也方便記錄的更新同步。

 

DNS服務

dns工作的tcpudp53端口,tcp53端口主要用來傳輸數據,而udp53端口用來查詢

linux中,dns服務器的軟件一般使用的是BIND:Bekerley Internat Name Domain,目前這個軟件是由ISC組織來維護,其背后的查詢過程是根據數據來查詢的

本地名稱即系配置文件:hosts

/etc/hosts   Linux系統

C:\Windows\System32\drivers\etc\hosts  windows系統

兩者的書寫格式相同,格式如下:

1.1.1.1  www.abc.com

1.1.1.1     www.def.com

 

 

FQDNFull Qualified Domain Name的簡稱,叫完整主機名,完整主機名是由主機名和域名構成。那什么是主機名和域名呢,域名是你到域名注冊機構注冊的二級域,比如baidu.com,我們平時訪問的www.baidu.com當中的www就是主機名,主機名和域名之間用實心的點號表示。

在學習文件系統是知道目錄結構的最頂層是根目錄,根是一切文件的七點,DNS同根文件系統一樣都是倒樹狀結構,在最頂層是由一個叫做根服務器,主要負責頂級域名的管理,所謂頂級域名就是像.com、.cn 、.net 、 .gov 、.org .edu等等,在下面的頂級域名服務器則負責其所對應的二級域名。如baidu.com,在接下來二級域名服務器負責對應的主機名稱解析或者其三級域名解析,如nes.baidu.com,依次類推

其中根節點是由分布在世界各地的13臺服務器組成,其中10臺位于美國地區,另外三臺設置與英國、瑞典和日本,在13太根服務器當中有1臺為主根服務器放置在美國,其余12臺均為輔助根服務器,所有的根服務器均有美國政府授權的互聯網域名與號碼分配機構ICANN組織統一管理,負責全球互聯網域名根服務器、域名體系和ip地址的管理

 

DNS域名

根域

一級域名:Top Level Domain 簡稱tld

         com   edu  mil  gov  net  org  int

可以分為三類:組織域、國家域(.cn  .ca  .hk  .tw),反向域

二級域名

三級域名

最多127級域名

ICANN(The Internet Corporation for Assign Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名以及國家和地區頂級域名系統的管理、以及根服務器系統的管理

1.jpg

DNS解析

DNS查詢類型

遞歸查詢:只發出一次請求

迭代查詢:發出多次請求

 

DNS名稱解析方式

名稱—ip:正向解析

ip—–名稱:反向解析

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

 

 

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

—>hosts文件—–>DNS local cache  —->DNS serverrescursion

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

不是自己負責解析的域:server cache—->iteration(迭代)

解析答案

可定答案

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

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

非權威答案

 

DNS服務器的類型

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

DNS服務器:從主DNS服務器哪里或其他的從DNS服務器哪里復制一份,但只能進行讀操作

緩存DNS服務器(轉發器)

 

復制操作的實方方式

序列號:數據庫的版本號,主服務器內容發生變化時,其版本號迪則呢過

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

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

過期時長:exprire,從服務器始終聯系不上主服務器時,多久之后放棄從主服務器同步數據,停止提供服務否定答案的緩存時長

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

 

區域傳送

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

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

 

區域(zone)和域(domain

baidu.com

FQDN—>ip 正向解析庫

ip—>FQDN 反向解析庫

 

區域數據庫文件

資源記錄Resource Record簡稱rr

記錄類型A AAAA PTR SOA NS  CNAME MX

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

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

AAddress 地址記錄,FQDN—>iPv4

AAAA:地址記錄,FQDN—>ipv6

CNAME:Canonical Name 別名記錄

PTRPointer ip—>FQDN

MXMail Exchange郵件交換器,優先級0-99,數字越小,優先級越高

 

資源記錄的格式

語法           name      [TTL]              IN          RR_TYPE                     value

SOA

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

value:有多部分組成

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

當前區域管理員的郵箱地址,但地址中不能使用“@”符號,使用點號代替

主從服務協調屬性的定義以及否定答案的ttl

例如:

magedu.com.  300    IN     SOA    ns1.magedu.com.   admin.magedu.com.  (

                                                                                    2016092501  ;序列號位數不能超過10serial 

                                                                                    2H                       ;刷新時間  refresh

                                                                                    10M                   ;重試時間  retry

                                                                                    1W                      ;過期時間  expire

                                                                                    7D)                     ;否定答案的TTL negative answer

 

NS

name:當前區域的區域名稱

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

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

例如:

magedu.com.    300       IN              NS   ns1.magedu.com.

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

 

MX

name:當前區域的區域名稱

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

例如:

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

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

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

 

A

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

value:某iPv4地址

例如:

www.magedu.com.          IN              A                1.1.1.1

www.magedu.com.          IN              A                2.2.2.2

bbs.magedu.com.             IN              A                1.1.1.1

 

注意:

*.magedu.com.                 IN              A                3.3.3.3

magedu.com.                     IN              A                4.4.4.4

避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址

 

AAAA

nameFQDN

valueipv6

A記錄差不過,只不過FQDN對應的地址是128位的ipv6地址

 

PTR

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

例如:

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

簡寫為

4.in-addr.arpa.            IN              PTR           www.magedu.com.

注意:網絡地址及后綴可省略;主機地址依然需要反著寫

 

CNAME

nameFQDN格式的別名

valueFQDN格式的正式名稱

例如:

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

 

注意:

1)         TTL值可以從全局繼承

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

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

4)         MX,NS等類型的記錄的valueFQDN,此FQDN應該有一個A記錄(正向區域)

 

域名注冊:

代理商:萬網,新網,godaddy

注冊完成之后,想用自己專用服務來解析,在后臺進行管理,把NS記錄執行服務器的名稱,和A記錄指向的服務器地址

 

BIND的安裝配置

BIND: Bekerley Internat Name Domain ISC組織維護

dns協議

binddns協議的一種實現

namedbind程序的運行的進程名

 

 

程序包

bind-utils:bindbind-utils包中的程序功用用到的庫文件

bind:提供的dns server程序以及常用的測試程序

bind-chroot:選裝,讓named運行與jail(沙箱)模式下(保證bind的安全)

 

 

bind

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

或包含進來其他文件

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

服務腳本文件

/etc/rc.d/init.d/named   unbound.service

 

解析庫文件

/var/named目錄下,一般名字為zone_name.zone

 

注意:

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

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

3)         還應該有兩個區域解析庫文件 localhost127.0.0.1

正反向解析

正向:named.localhost

反向:named.loopback

 

rndcremote  name  domain  controller

默認與bnd安裝在同一主機,且只能過127.0.0.1鏈接named進程

提供輔助性的?功能  953/tcp

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

CentOS6  service named start

CentOS7  systemctl strat named.service

 

配置文件

主配置文件

全局配置段:options { }

日志配置段:logging {}

區域配置段:zone{本機能夠為那些zone進行解析,就要定義那些zone

注意:任何服務程序如果期望其能夠通過網絡被其他主機訪問,至少應該監聽在一個能與外部主機通信的ip地址上,每個配置語句必須以分號結尾

 

緩存名稱服務器的配置

監聽能與外部通信的地址

listen-on port 53 

lsten-on port 53 { 10.1.253.65}

學習時建議關閉dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaslde no ;

關閉僅允許本地查詢

注釋allow-query { localhost};

 

檢查配置文件語法錯誤

named-checkconf  [ /etc/named.conf]

解析庫文件語法檢查

named-checkzone “magedu.com”  /var/named/magedu.com.zone”

測試工具

dig  host   nslookup

dig命令

dig [-t RR_TYPE] [@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,已指定的ipdns服務器進行查詢

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

name:要查詢的名稱

 

rndc命令:named服務控制命令

rndc status  查看狀態

rndc flush 清空dns服務器的所有緩存記錄

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

rndc zone  重載區域解析庫文件

rndc trace  遞增debug一個級別

rndc reconfig  重載主配置文件

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

rndc querylog 開啟或關閉查詢日志文件/var/log/messages

 

 

 

配置解析一個正向區域

1)         定義區域

2)         建立區域數據文件

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

 

xiao.com為例

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

zone “xiao.com”  IN  {

type  master ;

file  “zone_name.zone”;

};

注意:區域即為域名

100.jpg

 

建立區域數據文件(主要記錄為AAAAA

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

文件為/var/named/xiao.com.zone

$TTL 300

@              IN              SOA  dns.xiao.com.                 admin.xiao.com. (

                                     2016092501

                                     3H

                                     10M

                                     3D

                                     7D)

                   IN              SOA                    ns1.xiao.com.

                   IN              MX 10                mx1.xiao.com.

ns1            IN              A                         172.18.16.112

mx1           IN              A                         172.18.16.113

www         IN              A                         17218.16.115

web          IN              CNAME             www

bbs            IN              A                         172.18.16.1

bbs            IN              A                         172.18.16.2

101.jpg

 

修改此文件的屬主為named并將權限改為640

chown  named   xiao.com.zone

chmod 640  xiao.com.zone

 

檢查語法錯誤

named-checkconf

named-checkzone  “xiao.com”   /var/named/xiao.com.zone

 

讓服務器重新加載配置文件

service  named  restart

 

 

 

配置一個反向區域

定義區域

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

zone “16.18.172.in-addr.arpa  IN  {

                  type master ;

                  file “172.18.16.zone” ;

};

注意反向區域的名字反寫的網段地址.in-addr.ara

103.jpg

定于區域解析庫文件(主要記錄為PTR

示例:區域名稱為172.18.16.zone

@              IN              SOA                    dns.xiao.com.                    admin.xiao.com. (

                                                                 2016092501

                                                                 1H

                                                                 10M                  

                                                                 3D

                                                                 7D)

                   IN              NS                       ns1.xiao.com.

112            IN              PTR                     ns1.xiao.com.

113            IN              PTR                     mx1.xiao.com.

115            IN              PTR                     www.xiao.com.

1                IN              PTR                     bbs.xiao.com.

2                IN              PTR                     bbs.xiao.com.

104.jpg

 

修改此文件的屬主為named并將權限改為640

chown  named   172.18.16.zone

chmod 640   172.18.16.zone

檢查語法錯誤

named-checkconf

named-checkzone  “16.18.in-addr.arpa”   /var/named/ 172.18.16.zone

 

讓服務器重新加載配置文件

service  named  restart

 

測試:使用其他主機來解析

正向解析

105.jpg

反向解析

106.jpg

 

主從服務器

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

配置一個從區域

在從服務器上

定義區域

zone “xiao.com”  IN  {

                  type slave ;

                  file “slaves/xiao.com.zone” ;

};

 

從服務器配置

107.jpg

主服務器配置,只需要在區域數據文件中添加從服務器的NS記錄和A記錄即可

108.jpg

配置文件語法檢查

named-checkconf

重載配置

rndc reload

 

測試:只需將主服務的區域數據文件序列號變化,重載服務即可,查看日志是否有如下內容

109.jpg

從服務器,不需要重載,查看日志,看是否傳輸成功

110.jpg

注意:

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

2)             主服務器的區域解析庫文件中必須有一條NS記錄執行從服務器

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

4)             主服務器允許從服務器區域傳送

5)             主從服務器的時間應該同步,可通過ntp進行

6)             bind程序的八本應該保持一致,否則,應該從高,主低

 

DNS服務是由named用戶運行的,/var/named目錄named用戶沒有寫權限,數據時不會直接同步的,而/var/named/slaves目錄的屬主和屬組是named用戶,所以named用戶可以對該目錄可寫,所有區域傳送文件存在在此

 

在主服務器上配置

確保區域數據文件中每個從服務器配置NS記錄,并且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄且此A后面的地址為真正的從服務器的ip地址,如果沒有添加NS記錄和A記錄,主服務器配置了刷新時間,從服務器以哪個配置的時間到主服務器檢查序列號的變化情況,如果發生變化,就會同步數據

 

 

子域授權

正向解析區域授權子域的方法(主服務器)

在主區域數據文件中添加如下內容

ops.xiao.com.           IN              NS                       ns1.ops.xiao.com.

ops.xiao.com.           IN              NS                       ns2.ops.xiao.com.

ns1.ops.xiao.com.   IN              A                         10.1.252.100

ns2.ops.xiao.com.   IN              A                         10.1.252.198

 

從服務器添加一個區域和區域數據文件即可

zone  “ops.xiao.com” IN  {

                  type master ;

                  file “ops.xiao.com.zone” ;

};

111.jpg

在區域數據庫目錄下創建區域數據文件ops.xiao.com.zone

$TTL 300

@              IN              SOA  dns.ops.xiao.com.                   admin.ops.xiao.com. (

                                     2016092501

                                     3H

                                     10M

                                     3D

                                     7D)

                   IN              SOA                    ns1.ops.xiao.com.

ns1.ops.xiao.com.   IN              A                10.1.252.100

www                           IN              A                10.1.252.101

112.jpg

重載配置

rndc reload

這時候就可以在主服務器上測試子域是否能解析

dig -t  A   www.ops.xiao.com  @172.18.16.112

113.jpg

 

轉服服務器

注意:被轉發的服務器允許你為當前服務器做遞歸

區域轉發:僅轉發對某特定區域的解析請求

zone “zone_name” IN  {

         type forward ;

         forwar {first|only} ;

         forwarders { server_ip;  } ;  將收到的請求轉發給那臺dns服務器

first:首先轉發,轉發器不響應時,自行去迭代查詢(查找根)

only:只轉發,不響應時,不做任何回應

示例:

另外一個DNS服務器其對xiao.com域本地解析不了,需要將請求轉發到該域的dns服務器上,定義一個zone類型為forward

zone "xiao.com" IN {

                   type forward;

                   forward only;

                   forwarders { 10.1.253.65; 10.1.252.198; };

};

114.jpg

測試:在本機上解析www.xiao.com使用本機來解析

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

options {

forward  only|first;

forwarders  { server ip ; };

};

115.jpg

注意:最好關閉dnssec功能

dnssec-enable no;

dnssec-validation no;

 

bind中的安全相關的配置

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

acl  acl_name {

                  ip;

                  net/prelen;

};

示例:

acl  mynet {

10.1.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 視圖

view view_name  {

                  match-clients { };

                  zone

                  zone

        

}

示例:

view internal {

                  match-clients { 10.1.252.100; };

                  zone “xiao.com” IN {

type master;

file ‘”xiao.com.zone”;

                  };

};

view external {

                  match-clients { any; };

                  zone “xiao.com” IN {

type master;

file  ”xiao.com.zone”;

                  }

}

注意:

1)             一個bind服務器可以定義多個view,每個view定義一個或多個zone

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

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

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

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

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

 

DNS排錯

 

#dig A example.com

 <<>> DiG9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<-opcode: QUERY, status: NOERROR, id: 30523

SERVFAIL:Thenameserverencountered a problem while processing the query.

可使用dig +trace排錯,可能是網絡和防火墻導致

NXDOMAINThe queried name does not exist in the zone.

可能是CNAME對應的A記錄不存在導致

REFUSEDThe nameserverrefused the client's DNS request due to policy restrictions.

可能是DNS策略導致

 

NOERROR不代表沒有問題,也可以是過時的記錄

查看是否為權威記錄,flags:aa標記判斷

被刪除的記錄仍能返回結果,可能是因為*記錄存在

如:*.example.comINA172.25.254.254

注意“.”的使用

避免CNAME指向CNAME記錄,可能產生回環

test.example.com. IN CNAME lab.example.com.

lab.example.com. IN CNAME test.example.com.

正確配置PTR記錄,許多服務依賴PTR,如sshd,MTA

正確配置輪詢round-robin記錄

 

壓力測試

     vim  test.txt

     xiao.com   NS

     www.xiao.com   A

     web.xiao.com    A

     bbs.xiao.com     A

     ops.xiao.com     A

 

使用queryperf工具進行壓力測試

    queryperf –d  test.txt –s 127.0.0.1

打開日志功能

    rndc querylog

    rndc status

    queryperf –d test.txt  -s 127.0.0.1

    wc -l /var/log/messages  查看里面的壓力測試查詢的記錄 

 

 

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

(0)
fszxxxksfszxxxks
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

  • Linux入門基礎知識

    1、計算機的組成及其功能。 ? ? ? ? 計算機系統主要分為硬件系統和軟件系統兩部分。 ? ? ? ? (1)硬件系統由五部分組成,其中包括: ? ? ? ? 控制器:調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問; ? ? ? ? 運算器:對數據進行加工處理; ? ? ? ? 存儲器:存儲程序、信號、命令,數據等信息,并在需要時提供這些信息…

    Linux干貨 2018-02-25
  • 22期+第一周課堂練習

    一.計算機的組成及其功能 計算機的組成及其功能結構圖      各部件的關系圖          二.按系列羅列Linux的發行版,并描述不同版本之間的聯系與區別 1.各版本邏輯結構圖 2.各版本的介紹   Redhat,應該稱為Redhat系列,包括RHEL(Redh…

    Linux干貨 2016-08-15
  • 筆記四、Linux基礎入門-上半部

    前言 直接已經教大家如何創建虛擬機和安裝CentOS 操作系統了,那么今天就來開始入門吧。linux對于新手來說并不難,linux的構造 http://www.www58058.com/68853 這篇博客里我已經講解了,有興趣最好看一下llinux下每個目錄的作用。還有Linux的哲學思想。 這里我就開始介紹了。 一、用戶登陸   &n…

    2017-02-23
  • 用戶和組命令及相關配置文件總結

    用戶和組相關的配置文件 目錄 一、創建用戶、組和權限相關命令… 1 1、useradd 帳號建立… 1 2、usermod 用戶屬性更改… 2 3、Passwd. 2 4、userdel 2 6、chfn. 3 7、Chsh. 3 8、finger. 3 9、groupadd. 3 10、Groupdel 3 11、gro…

    Linux干貨 2016-10-24
  • Nginx 基礎 (IO模型、編譯安裝、幾大塊配置文件詳解)

    Nginx基礎 前言 apache在設計的時候已經考慮了并發訪問模型,select()機制可以響應1024個訪問,但是當數量再大,千萬級別的時候http就響應不過來了。這個時候,nginx的出現解決了這一個問題。nginx是一個安裝簡單、配置文件簡單、占用內存少、穩定性高、處理并發能力非常強、靈活好用等有點聚集于一身的輕量級服務器。在Linux操作系統中,N…

    Linux干貨 2016-12-24
  • Linux中正則表達式及find指令的使用

    1、顯示當前系統上root、Fedora或user1用戶的默認shell [root@centos6 ~]# grep -E "^\<(root|fedora|user1)\>" /etc/passwd root:x:0:0:root:/root:/bin/bash fedor…

    Linux干貨 2016-10-24
欧美性久久久久