DNS原理和CentOS7上bind域名服務器配置詳解

本文大綱:linux

理論部分:
git

    一、什麼是DNS
web

    二、DNS層次介紹及基礎內容數據庫

    三、DNS的工做原理及過程vim

域名服務器配置實戰:瀏覽器

    四、主域名服務器配置緩存

    五、輔域名服務器配置安全

    六、緩存域名服務器配置bash


一、什麼是DNS?
( Domain Name System)是「域名系統」的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,它用於TCP/IP網絡,它所提供的服務是用來將主機名和域名轉換爲IP地址的工做。DNS就是這樣的一位「翻譯官」,它的基本工做原理可用下圖來表示。
服務器

二、DNS簡介
域名系統做爲一個層次結構和分佈式數據庫,包含各類類型的數據,包括主機名和域名。DNS數據庫中的名稱造成一個分層樹狀結構稱爲域命名空間。域名包含單個標籤分隔點,例如:im.qq.com。
徹底限定的域名 (FQDN) 惟一地標識在 DNS 分層樹中的主機的位置,經過指定的路徑中點分隔從根引用的主機的名稱列表。 下圖顯示與主機稱爲 im 內 qq.com DNS 樹的示例。 主機的 FQDN 是 im.qq.com。
DNS 域的名稱層次結構

DNS域名層次介紹:
按其功能命名空間中用來描述 DNS 域名稱的五個類別的介紹詳見下表中,以及與每一個名稱類型的示例

常見的頂級域名:

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

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

互聯網域名系統由名稱註冊機構負責維護分配由組織和國家/地區的頂級域在 Internet 上進行管理。 這些域名按照國際標準 3166。 一些不少現有縮寫,保留以供組織中,以及兩個字母和三個字母的國家/地區使用的縮寫使用下表所示。一些常見的DNS域名稱以下圖:

三、DNS的工做原理及過程

當咱們打開瀏覽器輸入某個網站,咱們是如何經過網絡找到主機的呢,下來我來講說域名解析的具體過程,看下圖:

wKioL1gqxaSAeBUwAAjdXRskaSk352.jpg

具體的過程說明:

咱們以上圖用戶訪問www.wlm.com爲例

對於客戶機

1.當用戶以域名方式訪問某個主機時,本地計算機首先會查看本身的DNS Cache裏有沒有該域名解析的緩存,有則直接解析;

2.若是本地緩存沒有該域名解析,就查看hosts文件,看有沒有該域名解析,有則給出解析結果;

3.若是沒有就請求DNS Server服務器,經過遞歸查詢,直接從NDS Server得出須要查詢的結果。

對於DNS Server域名服務器

1.若是用戶請求的是DNS Server掌管的域內服務器,則直接給出解析結果;

2.若是用戶請求的不是本域內的服務器或者DNS Server是緩存服務器,沒有本身掌握的域名;

    (1)DNS Server會直接訪問根域服務器,而不是訪問本身的頂級域服務器,根域不知道www.wlm.com主機的IP地址,可是跟域會告訴DNS server,.com頂級域會知道www.wlm.com的IP,並返回.com的IP ;  

     (2)DNS Server請求.com頂級域解析,.com頂級域也不知道www.wlm.com主機,可是.com頂級域會返回wlm.com的地址;

     (3)DNS  Server 訪問wlm.com主機,www.wlm.com屬於wlm.com域內。wlm.com返回www.wlm.com的主機IP,DNS Server響應用戶的請求,返回IP地址;用戶計算機根據IP地址訪問www.wlm.com主機。


域名服務器配置實戰:

部署的邏輯圖以下:

wKioL1gsCpWgDT3IAAC48AgRrfU955.jpg


配置說明:

主域名服務器:ns1.wlm.com.         IP:10.10.10.3

從域名服務器:ns2.wlm.com.         IP:10.10.10.10

緩存域名服務器:ns3.wlm.com.       IP:10.10.10.11

全部的系統都爲CentOS7

在每臺服務器上的準備工做:

這裏以ns1.wlm.com爲例

(1)配置IP,將DNS指向本身

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.10.10.3
NETMASK=255.255.255.0
GATEWAY=10.10.10.2
DNS1=10.10.10.3
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes

(2)重啓網卡

systemctl restart network.service

(3)關閉防火牆和selinux

systemctl stop  firewalld.service
systemctl disable firewalld.service #開啓自動關閉

setenforce 0    # 能夠vim /etc/selinux/config將selinux改成disabled,設置爲開機就關閉

(4)配置yum源(這裏就不贅述了),yum安裝bind

[root@ns1 ~]# yum install -y bind
[root@ns1 ~]# yum install -y bind-libs
[root@ns1 ~]# yum install -y  bind-utils #這個非必要,須要dig命令,須要安裝

程序包說明:

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

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


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

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

(5)修改配置文件

[root@ns1 ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 10.10.10.3; };# 監聽本機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; }; # 這裏表明只解析本機,//爲註釋
        allow-transfer { 10.10.10.0/24; };    
        # 配置裏默認沒有這一項配置,只容許的slave主機作數據傳送
        # 從服務器配置以下:allow-transfer { none; }; #從服務器不須要作傳輸
        recursion yes;

        dnssec-enable no;    # 安全設置關閉
        dnssec-validation no;    # 安全設置關閉

修改完畢,保存退出

語法檢查:

named-checkconf #語法檢查,默認檢查/etc/named.conf文件,若是不是這個路徑,在後面寫路徑

重啓named服務器

[root@ns1 ~]# systemctl restart named.service

設置開機啓動

[root@ns1 named]# systemctl enable named.service


(6)查看監聽的IP和端口

[root@ns1 named]# netstat -tunlp | grep 53
tcp        0      0 10.10.10.3:53           0.0.0.0:*               LISTEN      5509/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      5509/named          
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2384/dnsmasq        
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      5509/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      5509/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      5509/named          
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           854/avahi-daemon: r 
udp        0      0 10.10.10.3:53           0.0.0.0:*                           5509/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           5509/named          
udp        0      0 192.168.122.1:53        0.0.0.0:*                           2384/dnsmasq        
udp6       0      0 ::1:53                  :::*                                5509/named

(7)配置時間服務器,利用ntpdate同步時間使每臺服務器時間一致(若是是練習,這不是必要步驟)。

四、主域名服務器配置

具體配置步驟:

1)yum安裝bind

[root@ns1 ~]# yum install -y bind

2)修改配置文件

[root@ns1 ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 10.10.10.3; };# 監聽本機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; }; # 這裏表明只解析本機,//爲註釋
        allow-transfer { 10.10.10.0/24; };    
        # 配置裏默認沒有這一項配置,只容許的slave主機作數據傳送
        recursion yes;

        dnssec-enable no;    # 安全設置關閉
        dnssec-validation no;    # 安全設置關閉

修改完畢,保存退出

語法檢查:

named-checkconf #語法檢查,默認檢查/etc/named.conf文件,若是不是這個路徑,在後面寫路徑

重啓named服務器

[root@ns1 ~]# systemctl restart named.service

bind不設置任何域名,默認是緩存服務器,配置裏面默認有根域的地址,如今能夠作域名解析了。

[root@ns1 ~]# dig -t A +trace www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A +trace www.baidu.com
;; global options: +cmd
.			457478	IN	NS	a.root-servers.net.    # 首先找到跟域
com.			172800	IN	NS	a.gtld-servers.net.    # 再找.com
baidu.com.		172800	IN	NS	dns.baidu.com.         # 最後找到dns
ww.baidu.com.		1200	IN	CNAME	www.a.shifen.com.      # 找到最後的域名

;; Received 239 bytes from 220.181.37.10#53(ns3.baidu.com) in 13 ms    # 解析的ip


dig命令介紹:
dig  [-t RR_TYPE]  name  [@SERVER]  [query options]
						
用於測試dns系統,所以其不會查詢hosts文件;
							
查詢選項:
+[no]trace:跟蹤解析過程;
+[no]recurse:進行遞歸解析;
注意:反向解析測試
dig  -x  IP
模擬徹底區域傳送:
dig  -t  axfr  DOMAIN  [@server]
dig +trace -t A www.baidu.com
dig -x 61.135.169.121

3)配置一個正向解析區域

(1)定義區域,咱們以wlm.com爲例 

    在主配置文件中或主配置文件輔助配置文件中實現(/etc/named.rfc1912.zones);  

vim /etc/named.rfc1912.zones 
# 配置文件最後面添加
zone "wlm.com" IN {
        type master;
        file "wlm.com.zone";
};
/etc/named.rfc1912.zones配置文件裏的寫法格式:
zone  "ZONE_NAME"  IN  {
	type  {master|slave|hint|forward}; 
	file  "ZONE_NAME.zone"; 
};	
						
注意:區域名字即爲域名;

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

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

[root@ns1 ~]# vim /var/named/wlm.com.zone   #這裏定義的文件要跟上一步在配置裏寫的文件一致
$TTL 3600
$ORIGIN wlm.com.
@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (
        2014100101
        1H
        10M
        3D
        1D )
        IN      NS      ns1
        IN      MX   10 mx1
        IN      MX   20 mx2
ns1     IN      A       10.10.10.3
mx1     IN      A       10.10.10.100
mx2     IN      A       10.10.10.200
www     IN      A       10.10.10.4
web     IN     CNAME    www

區域數據庫文件說明;
$TTL 3600    # 設置客戶端緩存時間
$ORIGIN wlm.com.    # 定義當前區域的名字,下面的@就是替代這個值
@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (
# SOA:Start Of Authority,起始受權記錄; 一個區域解析庫有且只能有一個SOA記錄,並且必須放在第一條;
# ns1.wlm.com. 該域的主域名服務器
# dnsadmin.wlm.com. 管理員郵箱           
        2014100101    # 序列號:serial
        1H            # 刷新時間間隔:refresh
        10M           # 重試時間間隔:retry, 
        3D            # 過時時長:expire
        1D )          # negative answer ttl:否認答案的緩存時長
        IN      NS      ns1   # 域名服務記錄;一個區域解析庫能夠有多個NS記錄;其中一個爲主的
        IN      MX   10 mx1   #郵件交換器 優先級:0-99,數字越小優先級越高
        IN      MX   20 mx2
ns1     IN      A       10.10.10.3    #地址記錄
mx1     IN      A       10.10.10.100    
mx2     IN      A       10.10.10.200
www     IN      A       10.10.10.4
web     IN     CNAME    www            #別名記錄

系統的介紹:
主-輔DNS服務器:
    主DNS服務器:維護所負責解析的域數據庫的那臺服務器;讀寫操做都可進行;
    從DNS服務器:從主DNS服務器那裏或其它的從DNS服務器那裏「複製」一份解析庫;但只能進行讀操做;
「複製」操做的實施方式:
    序列號:serial, 也便是數據庫的版本號;主服務器數據庫內容發生變化時,其版本號遞增;
    刷新時間間隔:refresh, 從服務器每多久到主服務器檢查序列號更新情況;
    重試時間間隔:retry, 從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;
    過時時長:expire,從服務器始終聯繫不到主服務器時,多久以後放棄從主服務器同步數據;中止提供服務;
    negative answer ttl:否認答案的緩存時長
主服務器」通知「從服務器隨時更新數據;

區域傳送:
    全量傳送:axfr, 傳送整個數據庫;
    增量傳送:ixfr, 僅傳送變量的數據;

區域(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)

例如:
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.;
注意:一個區域能夠有多個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地址;

例如:
www.magedu.com.	IN A	1.1.1.1
www.magedu.com.	IN A	1.1.1.2
bbs.magedu.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:FQND

例如:
4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com.

CNAME:
name:FQDN格式的別名;
value:FQDN格式的正式名字;

例如:
web.magedu.com.  	IN  	CNAME  www.magedu.com.

注意:
(1) TTL能夠從全局繼承;
(2) @表示當前區域的名稱;
(3) 相鄰的兩條記錄其name相同時,後面的可省略;
(4) 對於正向區域來講,各MX,NS等類型的記錄的value爲FQDN,此FQDN應該有一個A記錄;

權限及屬組修改:

[root@ns1 ~]# chgrp named /var/named/wlm.com.zone 
[root@ns1 ~]# chmod o= /var/named/wlm.com.zone


檢查語法錯誤:

[root@ns1 ~]# named-checkzone wlm.com  /var/named/wlm.com.zone 
zone wlm.com/IN: loaded serial 2014100101
OK
[root@ns1 ~]# named-checkconf

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

# rndc  reload 或  systemctl  reload  named.service
[root@ns1 ~]# rndc reload
server reload successful

(4)驗證

[root@ns1 ~]# ping ns1.wlm.com

PING ns1.wlm.com (10.10.10.3) 56(84) bytes of data.

64 bytes from 10.10.10.3: icmp_seq=1 ttl=64 time=0.036 ms


[root@ns1 ~]# nslookup

> ns1.wlm.com 

Server:10.10.10.3

Address:10.10.10.3#53

Name:ns1.wlm.com

Address: 10.10.10.3


4)配置一個反向解析區域

(1)定義區域

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

[root@ns1 ~]# vim /etc/named.rfc1912.zones
zone "10.10.10.in-addr.arpa" IN {
        type master;
        file "10.10.10.zone";
};

zone  "ZONE_NAME"  IN  {
    type  {master|slave|hint|forward};
    file  "ZONE_NAME.zone"; 
};	
						
注意:反向區域的名字
反寫的網段地址.in-addr.arpa 
示例:100.16.172.in-addr.arpa

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

在/var/named目錄下創建區域數據文件;示例:區域名稱爲100.16.172.in-addr.arpa;(反過來寫IP)

[root@ns1 named]# vim /var/named/10.10.10.zone 
$TTL 3600
$ORIGIN 10.10.10.in-addr.arpa.
@       IN      SOA     ns1.wlm.com.    nsadmin.wlm.com. (
        2014100801
        1H
        10M
        3D
        12H )
        IN      NS      ns1.wlm.com.
3       IN      PTR     ns1.wlm.com.
100     IN      PTR     mx1.wlm.com.
200     IN      PTR     mx2.wlm.com.
4       IN      PTR     www.wlm.com.

權限及屬組修改:

[root@ns1 named]# chmod o= /var/named/10.10.10.zone
[root@ns1 named]# chgrp named /var/named/10.10.10.zone

 檢查語法錯誤:

zone wlm.com/IN: loaded serial 2014100101
OK
[root@ns1 named]# named-checkconf

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

# rndc  reload 或
# systemctl  reload  named.service

驗證:

[root@ns1 named]# dig -x 10.10.10.3

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 10.10.10.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25014
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;3.10.10.10.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
3.10.10.10.in-addr.arpa. 3600	IN	PTR	ns1.wlm.com.

;; AUTHORITY SECTION:
10.10.10.in-addr.arpa.	3600	IN	NS	ns1.wlm.com.

;; ADDITIONAL SECTION:
ns1.wlm.com.		3600	IN	A	10.10.10.3

;; Query time: 26 msec
;; SERVER: 10.10.10.3#53(10.10.10.3)
;; WHEN: 三 11月 16 13:55:13 CST 2016
;; MSG SIZE  rcvd: 107

至此,主域名服務器已經配置好了。已經可使用了。

五、輔域名服務器配置

在準備工做已經說過了,這裏在添加上/etc/named.conf的配置

options {
        listen-on port 53 { 127.0.0.1; 10.10.10.10; };
        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; };
        allow-transfer { none; };

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;


配置一個從區域:

1)在master DNS上添加NS記錄和A記錄

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

$TTL 3600
$ORIGIN wlm.com.
@       IN      SOA     ns1.wlm.com.   dnsadmin.wlm.com. (
        2014100101    #若是slave要重載配置,這須要變動序列號
        1H
        10M
        3D
        1D )
        IN      NS      ns1
        IN      NS      ns2    #NS記錄
        IN      MX   10 mx1
        IN      MX   20 mx2
ns2     IN      A       10.10.10.10    #A記錄
ns1     IN      A       10.10.10.3
mx1     IN      A       10.10.10.100
mx2     IN      A       10.10.10.200
www     IN      A       10.10.10.4
web     IN     CNAME    www

語法檢查並從新配置

[root@ns1 named]# named-checkzone wlm.com /var/named/wlm.com.zone 
zone wlm.com/IN: loaded serial 2014100101
OK
[root@ns1 named]# rndc reload
server reload successful

 2) 在slave DNS上定義區域

[root@ns2 ~]# vim /etc/named.rfc1912.zones 
zone "wlm.com" IN {
        type slave;    #slave標記爲從服務器
        file "slaves/wlm.com.zone"; #×××區域文件在/var/named/slaves目錄下,特定的
        masters { 10.10.10.3; };    #填寫主域名服務器IP
};

書寫格式:
zone "ZONE_NAME"  IN {
    type  slave;
    file  "slaves/ZONE_NAME.zone";
    masters  { MASTER_IP; };
};

3) 重載配置

配置文件語法檢查
named-checkconf
重載配置
rndc  reload
systemctl  reload  named.service

說明:當主域名服務器裏添加了新記錄,只須要主域名服務器重載配置,從域名服務器自動同步。

驗證:

(1)在/var/named/slaves目錄下自動同步wlm.com.zone文件

[root@ns2 slaves]# pwd
/var/named/slaves
[root@ns2 slaves]# ls
wlm.com.zone

(2)能夠解析域名

[root@ns2 slaves]# dig -t A www.wlm.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.wlm.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27069
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.wlm.com.			IN	A

;; ANSWER SECTION:
www.wlm.com.		3600	IN	A	10.10.10.4

;; AUTHORITY SECTION:
wlm.com.		3600	IN	NS	ns1.wlm.com.
wlm.com.		3600	IN	NS	ns2.wlm.com.

;; ADDITIONAL SECTION:
ns1.wlm.com.		3600	IN	A	10.10.10.3
ns2.wlm.com.		3600	IN	A	10.10.10.10

;; Query time: 1 msec
;; SERVER: 10.10.10.10#53(10.10.10.10)
;; WHEN: 三 11月 16 14:20:52 CST 2016
;; MSG SIZE  rcvd: 124

至此,輔域名服務器配置完畢

六、緩存域名服務器配置

在上面的準備工做作完了,默認就配置好了緩存域名服務器。

可是咱們這裏還有在作兩點,爲你們更好的理解域名服務器的配置。

定義轉發:

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

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

配置格式:
    	zone  "ZONE_NAME"  IN {
    	type  forward;
    	forward  {first|only};
    	forwarders  { SERVER_IP; };
    	};
    	first:首先轉發;轉發器不響應時,自行去迭代查詢;
    	only:只轉發;


具體配置:

[root@wlm ~]# vim /etc/named.rfc1912.zones #在最後面添加
zone "wlm.com" IN {
        type forward;
        forward first;
        forwarders { 10.10.10.3; };
        };

語法檢查,重啓bind

[root@wlm ~]# named-checkconf 
[root@wlm ~]# systemctl restart named.service

驗證:

[root@wlm ~]# dig -t A www.wlm.com

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.wlm.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5158
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.wlm.com.			IN	A

;; ANSWER SECTION:
www.wlm.com.		3600	IN	A	10.10.10.4

;; AUTHORITY SECTION:
wlm.com.		3600	IN	NS	ns2.wlm.com.
wlm.com.		3600	IN	NS	ns1.wlm.com.

;; ADDITIONAL SECTION:
ns1.wlm.com.		3600	IN	A	10.10.10.3
ns2.wlm.com.		3600	IN	A	10.10.10.10

;; Query time: 53 msec
;; SERVER: 10.10.10.11#53(10.10.10.11)
;; WHEN: 三 11月 16 15:20:59 CST 2016
;; MSG SIZE  rcvd: 124



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

配置格式:
    	options {
    	... ...
    	forward  {only|first};
    	forwarders  { SERVER_IP; };
    	.. ...
    	};

具體配置:

vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; 10.10.10.11; };    # 監聽本機的IP端口
        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; };    # 容許爲其餘主機解析
        allow-transfer { none; };          # 從服務器不須要傳送
        forward first;                     # 本機不能解析的轉發給10.10.10.3作解析
        forwarders { 10.10.10.3; };        # 被轉發的服務器IP
        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;

        dnssec-enable no;    #關閉    
        dnssec-validation no;    #關閉

語法檢查而後重啓bind

[root@wlm ~]# systemctl restart named.service

驗證:

[root@wlm ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244: icmp_seq=1 ttl=128 time=6.67 ms
p64 bytes from 220.181.112.244: icmp_seq=2 ttl=128 time=6.60 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 6.608/6.640/6.672/0.032 ms
[root@wlm ~]# ping www.wlm.com
PING www.wlm.com (10.10.10.4) 56(84) bytes of data.
^C
--- www.wlm.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1001ms

總結:整體上,DNS的配置仍是比較簡單的。雖然在平常運維中,可能不須要進行實戰,畢竟企業內部部署域名服務器的很少,即便有,也是後期的維護了。可是做爲運維人員,熟悉DNS的工做原理是很是必要的,經過這些配置,我相信你已經真正的熟悉了DNS。

原本還想配置子域名服務器的,後來以爲不必了。具體的邏輯圖以下,供你們參考。

wKioL1gsDCKgZ2YmAADRRyxmWAA570.jpg

相關文章
相關標籤/搜索