DNS and Bind

DNS and Bind

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

概述:

   DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。



相關知識

Sockets:在互聯網上基于套接字協議的通信一般都遵循C/S法則;

       Client:客戶端,發起應用請求的程序;

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

            LISTEN:Socket(ip:port)

傳輸層協議:TCP,UDP,SCTP

         TCP:面向連接的協議,雙方通信之前需要建立虛連接;

         UDP:無連接的協議,雙方無需通信之前事先建立虛連接;

DNS服務

1)介紹

DNS:Domain Name Service 域名系統,是一個應用層協議。

     C/S, 53/udp, 53/tcp(DNS服務在啟動的時候會同時開啟tcp和udp的53號端口)

DNS作用:

     將主機名解析成IP地址的過程;

     解決了從域名(FQDN)到主機識別的IP地址之間的轉換.

本地名稱配置解析文件:

  /etc/hosts

wKioL1fsnJmzWqHoAAAh_3zmhJE663.png

   缺點:只能作用于本主機,而不能同步更新所有的主機使用,并且當hosts文件很龐大時很難管理,因此就必須有一個統一的組織去記錄管理域名和ip的對應關系。

DNS結構

  • DNS是一個分布式、分層次的主機名管理架構,通過配置DNS服務器地址,主機不需要知道對應的ip地址就能通過主機名的形式訪問互聯網;

  • DNS利用類似倒狀樹的目錄結構將主機名的管理分配在不同層級的DNS服務器當中,經過分層管理,每一級DNS服務器負責部分域名信息,這也就減輕了DNS服務器的負載,同時也方便記錄的更新同步。

FQDN(Full Qualified Domain Name):完整主機名

2)DNS域名

  • 根域

  • 一級域名:Top Level Domain: tld(頂級域)

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

         國家域:.cn, .ca, .hk, .tw…

         反向域:

  • 二級域名:如,.magedu.com、taobao.com

  • 三級域名:如,.dns.magedu.com

  • 每一級只負責對應下級的域的管理,其中根節點是有分布在世界各地的13臺服務器組成,其中10臺位于美國,另外3臺設置于英國、瑞典和日本。

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

  ◆如圖所示域名層級結構圖:

wKioL1fst5KzLEOOAAFt5oRIaeo143.png

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

     wKiom1fswOSxmLUsAAB0WqSj37A252.jpg

2)DNS解析

★:

解析流程圖如下:

wKiom1fswmCTsvPNAAD33oelEhU836.jpg

3)DNS類型,解析方式

DNS查詢類型

   遞歸查詢:客戶機和服務器之間的查詢

   迭代查詢:DNS服務器與DNS服務器之間的查詢

★DNS名稱解析方式:

   名稱—>IP : 正向解析

   IP —>名稱:反向解析

  注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹,因此也不是同一個解析庫。

★通常我們申請注冊的域名是頂級域下的一個二級域(.com),申請成功之后(如:magedu.com),域名商會免費給我們提供DNS解析服務(群租的一個DNS服務器),我們只需要通過其提供的接口(如:web頁面)在管理后臺添加主機記錄即可。然而免費的東西和付費的服務總是不一樣的,免費提供的服務不保證服務的可靠性,因此企業里面要想架設自己的DNS服務器,來提供更可靠、更豐富的功能,就需要向上級提出授權認證,更改DNS服務器的指向,從原來的群租轉到自己的DNS服務器上,自己管理。但一般的小公司如果自己架設DNS服務器的話成本較高,所以一般都是代理商提供的。

DNS服務器的類型

    ·負責解析至少一個域:

         主DNS服務器

         輔助DNS服務器

    ·不負責域解析:

         緩存DNS服務器:轉發器

一次完整地解析請求經歷的過程

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

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

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

DNS–>二級域名DNS…

解析答案

    ·肯定答案:

    ·否定答案:請求的條目不存在等原因導致無法返回結果;

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

    ·非權威答案:

主-從DNS服務器:

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

   ·從DNS服務器:從主DNS服務器那里或其他的從DNS服務器那里“復制”解析庫;但只能進行讀操作(只能接受查詢,不能接受修改);

        復制操作的實施方式:

             序列號:解析庫版本號,主服務器解析庫變化時,其序列號遞增;

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

             重試時間間隔:從服務器請求同步失敗時,再次發起嘗試請求時間間隔;

             過期時長:從服務器聯系不到主服務器時,多久后停止服務;

           否定答案的緩存時長(TTL):快取時間

       “通知”機制:主服務器解析庫發生變化時,會主動通知從服務器;

區域傳送

  • 全量傳送:axfr,傳遞整個解析庫;

  • 增量傳送:ixfr,傳遞解析庫變化的數據;

區域(zone)和域(domain)

     magedu.com域:

          FQDN–>IP:正向解析庫;

             (正向區域:正向解析庫和正向解析的功能的組合);

          IP —>FQDN:反向解析庫,反向區域

    注意:

      一般來說一個域由正向區域和反向區域組成,但并不是域就一定大于區域,如:父域的區域可能會比子域要大;

     區域是物理概念,而域是邏輯概念。

DNS是一個網絡服務,因此就有對應的端口,其端口是53號,通常DNS在查詢的時候是以udp這個快速的數據傳輸協議來查詢的,但是一旦沒有辦法查詢到完整的信息時就會再次以TCP協議來進行重新查詢,因此DNS服務在啟動的時候會同時開啟tcp的53號端口和udp的53號端口

     

區域數據庫文件

1)資源記錄(Resource Record)簡稱rr

區域解析庫:由眾多RR組成

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

  • SOA:(Start Of Authority)起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須為解析庫的第一條記錄;

  • A:(internet Address)作用,FQDN –> IPv4;

  • AAAA: FQDN –> IPv6;

  • PTR: PoinTeR,IP –> FQDN;反解到的主機名;

  • NS: (Name Server)專用于標明當前區域的DNS服務器,一個區域解析庫可以有多個NS記錄(主從DNS服務器等);

  • CNAME:(Canonical Name)別名記錄,一個主機可以有多個別名,但IP地址是一樣的;

  • MX:Mail exchanger,郵件交換器,有優先級,0-99,數字越小優先級越高;

 ★資源記錄的定義格式:    

       語法:name [TTL] IN rr_type value

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

每一種資源類型的定義方式如下:

SOA記錄 

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

      value: 有多部分組成

          (1) 當前區域的區域名稱(也可以是主DNS服務器的FQDN);

          (2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com

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

   例如:

       magedu.com. 86400 IN SOA   ns.magedu.com. nsadmin.magedu.com. (

                  2015042201 ;序列號serial

                  2H           ;刷新時間refresh

                  10M          ;重試時間retry

                  1W           ;過期時間expire

                  1D           ;否定答案的TTL值,也叫快取時間

       )

   注意:以上五個參數除了第一個序列號外,其他四個的單位都默認是秒,當然,也可以指定單位如:D(天),M(分),H(小時),W(周)

NS記錄

     name: 當前區域的名字

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

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

  例如:

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

             (表示magedu.com.這個區域的域名服務器是ns1.magedu.com.)

      [magedu.com.] IN NS ns2.magedu.com.

  注意:

     (1) 相鄰的兩個資源記錄的name相同時,后續的可省略

     (2) 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄


MX記錄

     name: 當前區域的名字

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

   注意:

      一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高

  例如:

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

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

   注意:

    (1) 對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄


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

         mx1.magedu.com.  IN  A   3.3.3.3

         mx2.magedu.com.  IN  A   3.3.3.3

   注意:

        *.magedu.com.  IN  A  5.5.5.5

          magedu.com.  IN  A  5.5.5.5

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


AAAA記錄

       name: FQDN

        value: IPv6


PTR記錄

        name: IP

             有特定格式,把IP地址反過來寫  如:1.2.3.4,要寫作4.3.2.1;

             有特定后綴:in-addr.arpa.

                  如:完整寫法為:4.3.2.1.in-addra.arpa.

        value: FQDN

    例如:

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

          簡寫成:如1.2.3為網絡地址,可省

                                  4 IN  PTR  www.magedu.com.

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


CNAME記錄

        name: FQDN格式的別名

        value:FQDN格式的正式名字;

  例如:

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

     (表示www的這個主機的別名為web)


注意:

  • TTL就是time to live,表示該記錄被其他dns服務器保留到對方服務器上的緩存當中,并保持多少秒(即客戶端可以緩存多長時間),可從全局繼承;

  • IN為關鍵字 ;

    @可用于引用當前區域的名字;

  • 相鄰的兩條記錄其name相同時,后面的可以省略;

  • 同一個名字可以通過多條記錄定義多個不同的值(即一個主機名有多個IP地址);此時DNS服務器會以輪詢方式響應可以實現負載均衡;

  • 同一個值也可能有多個不同的定義名字(即一個IP地址多個主機名);通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機而已;

  • 對于正向區域來說,各MX、NS等類型的記錄的value為一個FQDN,此FQDN應該有一個A記錄。


課外練習:

    自己注冊一個域名(不用備案的),修改器域名解析服務器(默認情況下,在哪里注冊的域名(如:godady),DNS服務器就由哪里提供)為dnspod.cn或者dns.la(從一個群租房轉到另外一個群租房)

安裝部署DNS服務

1)bind的安裝配置

★BIND:Berkeley Internet Name Domain,ISC.org

      dns:協議;

      bind:dns協議的一種實現;

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

程序包:yum list all bind*

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

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

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

      bind-chroot:選裝,讓named運行于jall模式下;/var/named/chroot

bind服務器配置文件

  • 服務腳本和名稱

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

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

         或包含進來其他文件:

              /etc/named.iscdlv.key

              /etc/named.rfc1912.zones

              /etc/named.root.key

  • 解析庫文件:

        /var/named:該目錄為DNS數據庫文件存放目錄,每一個域文件都存放在這里;

        一般名字為:/var/named/ZONE_NAME.ZONE

  • 注意:

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

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

        3)還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫;

                正向:named.localhost

                反向:named.loopbask

[root@centos7 ~]# ls /var/named
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@centos7 ~]# cat /var/named/named.localhost  # 正向解析庫文件
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
[root@centos7 ~]# cat /var/named/named.loopback  # 反向解析庫文件
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
	PTR	localhost.
[root@centos7 ~]#
  • rndc: remote name domain controller

         默認與bind安裝在同一主機,且只能通過127.0.0.1連接named進程,因此僅允許本地使用;

         提供輔助性的管理功能;953/tcp(監聽在953端口)

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

      CentOS 6:service named start

      CentOS 7:systemctl start named.service

bind信息如下:

[root@centos7 ~]# yum info bind
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.9.4
Release     : 29.el7
Size        : 4.3 M
Repo        : installed
From repo   : CDROM
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
            : (Domain Name System) protocols. BIND includes a DNS server (named),
            : which resolves host names to IP addresses; a resolver library
            : (routines for applications to use when interfacing with DNS); and
            : tools for verifying that the DNS server is operating properly.

2)主配置文件格式:

主配置文件

      全局配置段:

           options {…};

      日志配置段:

           logging {…};

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

           zone {…}

注意:

     任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上;

     每個配置語句必須以分號結尾,否則語法錯誤;


 ★緩存名稱服務器的配置:

  • 監聽能與外部主機通信的地址;

           listen-on port 53 { any; };

              監聽的端口,即那些主機可以進行訪問解析,這里表示所有,后面有分號 

           listen-on port 53 { 192.168.16.104;};

              表示監聽某一特定的地址

  • 學習使用時建議關閉dnssec

          dnssec-enable  no;

          dnssec-validation no;

          dnssec-lookaside no;

  • 關閉僅允許本地查詢

          //allow-query     { localhost; };

配置文件語法檢查

       named-checkconf [/etc/named.conf]

主配置文件如下:

[root@centos7 ~]# cat /etc/named.conf  # 查看主配置文件
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {                      # 全局配置段
	listen-on port 53 { any; };
	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; };

	/* 
	 - 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;

	/* Path to ISC DLV key */  # 單行注釋,在行首加雙斜線也可以
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
};

logging {                          # 日志配置段
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {                      # 區域配置段
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

檢查語法錯誤,啟動服務,并查看狀態:

[root@centos7 ~]# named-checkconf  # 檢查語法錯誤
[root@centos7 ~]# systemctl start named  # 開啟服務
[root@centos7 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-10-04 14:49:25 CST; 6s ago
  Process: 1947 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 1944 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 1949 (named)
   CGroup: /system.slice/named.service
           └─1949 /usr/sbin/named -u named

Oct 04 14:49:25 centos7 named[1949]: zone 0.in-addr.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone localhost/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: zone localhost.localdomain/IN: loaded serial 0
Oct 04 14:49:25 centos7 named[1949]: all zones loaded
Oct 04 14:49:25 centos7 named[1949]: running
Oct 04 14:49:25 centos7 systemd[1]: Started Berkeley Internet Name Domain (DNS).
Oct 04 14:49:25 centos7 named[1949]: error (network unreachable) resolving './DNSKEY/IN': 2001:7fe::53#53
Oct 04 14:49:25 centos7 named[1949]: error (network unreachable) resolving './NS/IN': 2001:7fe::53#53

查看監聽狀態:

wKiom1fzaf7QVyrEAACzoq5Hiy0902.png

[root@centos7 ~]# vim /etc/resolv.conf 
  1 # Generated by NetworkManager
  2 nameserver 192.168.16.104  # 把地址換成自己的,也就是說自己把自己的當做DNS服務器
  
 [root@centos7 ~]# ping   # 可以ping通 
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
64 bytes from 220.181.111.188: icmp_seq=1 ttl=54 time=22.9 ms
64 bytes from 220.181.111.188: icmp_seq=2 ttl=54 time=25.5 ms
64 bytes from 220.181.111.188: icmp_seq=3 ttl=54 time=28.7 ms
64 bytes from 220.181.111.188: icmp_seq=4 ttl=54 time=22.9 ms

3)測試DNS工具:dig,host,nslookup

dig命令

  語法: dig [-t RR_TYPE] name [@SERVER] [query options]

           dig只用于測試dns系統,不會查詢hosts文件進行解析

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

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

   測試反向解析:

          dig -x IP @SERVER

   模擬完全區域傳送:

         dig -t axfr ZONE_NAME @SERVER

         dig -t axfr magedu.com @172.16.100.11

         dig –t axfr 100.16.172.in-addr.arpa @172.16.1.1

host命令

     語法:host [-t type] name [SERVER]

        示例: host –t NS magedu.com @172.16.0.1

nslookup命令:

     語法:nslookup[-option] [name | -] [server]

     交互式模式:

          nslookup>

          server IP: 指明使用哪個DNS server進行查詢;默認為/etc/resolv.conf中的

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

          NAME: 要查詢的名稱

dig命令演示:

[root@centos7 ~]# dig -t A   # 測試能否解析 

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

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

;; ANSWER SECTION: # 答案選項
  # 一個別名 
www.a.shifen.com.	300	IN	A	220.181.112.244
www.a.shifen.com.	300	IN	A	220.181.111.188

;; AUTHORITY SECTION: # 權威選項 ,這個別名對應了5臺DNS服務器
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.

;; ADDITIONAL SECTION:  #附加選項 ,顯示著5臺服務器分別對應的地址
ns1.a.shifen.com.	1200	IN	A	61.135.165.224
ns2.a.shifen.com.	1200	IN	A	180.149.133.241
ns3.a.shifen.com.	1200	IN	A	61.135.162.215
ns4.a.shifen.com.	1200	IN	A	115.239.210.176
ns5.a.shifen.com.	1200	IN	A	119.75.222.17

;; Query time: 89 msec  # 查詢指令時長,為89毫秒
;; SERVER: 192.168.16.104#53(192.168.16.104)  # 由哪個DNS服務器進行解析的,這里是有本機進行迭代的方式查詢的
;; WHEN: Tue Oct 04 16:27:53 CST 2016
;; MSG SIZE  rcvd: 271

dig跟蹤查詢命令

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

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> +trace -t A    # 首先查找根 
;; global options: +cmd
.			511977	IN	NS	i.root-servers.net.
.			511977	IN	NS	l.root-servers.net.
.			511977	IN	NS	m.root-servers.net.
.			511977	IN	NS	k.root-servers.net.
.			511977	IN	NS	b.root-servers.net.
.			511977	IN	NS	g.root-servers.net.
.			511977	IN	NS	e.root-servers.net.
.			511977	IN	NS	h.root-servers.net.
.			511977	IN	NS	c.root-servers.net.
.			511977	IN	NS	j.root-servers.net.
.			511977	IN	NS	f.root-servers.net.
.			511977	IN	NS	d.root-servers.net.
.			511977	IN	NS	a.root-servers.net.
;; Received 783 bytes from 192.168.16.104#53(192.168.16.104) in 31 ms

com.			172800	IN	NS	j.gtld-servers.net.  # 其次查找頂級域名
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			86400	IN	DS	30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.			86400	IN	RRSIG	DS 8 1 86400 20161016170000 20161003160000 39291 . WmTN9517zn1fnhOz36UYC1CiDcRwvG+pYVO0wwU4ucOF0dQKgoCTVclv l1qxjuYDgl/XF3hj3lnSQZMQIpGzT48vnMVdJjBkGbySLgqtNjkoL/yO DtZGyY6jxbxYBchx7U6QDkgaC3AQ9o82uClTVPg8N+KFx3TuORDvB/CO sp2/5D0KSMS81/N+PEGemK/wmfHg9t48CGLx/T6+v1oPHP9oxq+vDtSG bRmsHFzrvatrrpttP6wMjNK4x9r07t/apPzKAQvxxzaeISsElpWe62+K zviR6hp7TxKrp4PmtNWul7jwNxvVkcLuzCdhjq44O9sU/bk4UzM+D6fq j4C+9A==
;; Received 865 bytes from 192.36.148.17#53(i.root-servers.net) in 200 ms

baidu.com.		172800	IN	NS	dns.baidu.com. # 在查找子域
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20161009044157 20161002033157 27452 com. M41sYMa1AlSgKf/CWelF3cJ4O2uGYGJEWlS1b8b2WlsMKCXnhK/rYlrb FAtAWNcgyzdspmEEZtRcZqLj4x4Oizr3zHPz2EM18IPuDsSdeIIHV70y gwEnInozpTeqk1A0u/fVVSDpfcurgcZcW9bGbu74cLlg9KZ+J2V//br1 +7w=
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN NSEC3 1 1 0 - HQ01H2D8Q0MT897NAE62MCFNM16HPMG6 NS DS RRSIG
HPVV2B5N85O7HJJRB7690IB5UVF9O9UA.com. 86400 IN RRSIG NSEC3 8 2 86400 20161011043201 20161004032201 27452 com. hRWUxUIPqALKCeNnKeycykf5L0ydbvwxF5pyCZ/aKpO6g2f2wSnOGPEI 0sgHxJ57t0nKIYwjnnODkyOAyFl6TJoxIO46jPCi8cEkz+f/jCKtUOdF gxoBdOBez+gQCQ9BlCaTzAg1mgJM00G+9kXcMcQN/4RcnVPhGv0oe6Xp c6E=
;; Received 697 bytes from 192.35.51.30#53(f.gtld-servers.net) in 240 ms

  # 查找的主機 
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com. 
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
;; Received 239 bytes from 220.181.38.10#53(ns4.baidu.com) in 26 ms

host命令演示:

[root@centos7 ~]# host -t A   # 查詢IPv4地址資源記錄 
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 220.181.111.188
www.a.shifen.com has address 220.181.112.244
[root@centos7 ~]# host -t NS baidu.com  # 查詢域名服務器名資源記錄
baidu.com name server ns3.baidu.com.
baidu.com name server dns.baidu.com.
baidu.com name server ns7.baidu.com.
baidu.com name server ns2.baidu.com.
baidu.com name server ns4.baidu.com.
[root@centos7 ~]# host -t MX baidu.com  # 查詢郵件服務器資源記錄
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 10 mx.n.shifen.com.

nslookup命令演示:

[root@centos7 ~]# nslookup
> server  # 使用默認的DNS服務器
Default server: 192.168.16.104
Address: 192.168.16.104#53
> set q=A # 查詢A記錄
>   # 域名 
Server:		192.168.16.104
Address:	192.168.16.104#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 220.181.112.244
Name:	www.a.shifen.com
Address: 220.181.111.188
> exit


3)rndc命令:named服務控制命令

rndc

  • 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服務器的所有緩存記錄

  • status:狀態查詢

示例:

[root@centos7 ~]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 101
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

配置一個正向區域

1)配置步驟:

以 magedu.com域為例:

1)定義區域

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

         zone "ZONE_NAME" IN {

         type {master主|slave從|hint根|forward轉發};

         file "ZONE_NAME.zone";

         };

  • ZONE_NAME:

      表示要解析的域名;正解時就為域名本身,如:magedu.com;反解的時候有固定格式:ip網段反向.in-addr.arpa。

  • type:

        該zone的類型,主要類型有:針對根的hint;主DNS的master,從DNS的slave和專門用于轉發的域類型forward,除了根外默認為master

  • file:該zone的文件名稱

2)建立區域解析庫數據文件(主要記錄為A或AAAA)

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

         現的內容,宏定義,資源記錄

示例:文件為/var/named/.magedu.com.zonewKioL1f01UiQnkh3AABJwFshNjk323.png 

  ·權限及屬主修改

         chgrup named /var/named/magedu.com.zone

         chmod o=  /var/named/magedu.com.zone

  • 主配置文件語法檢查,解析庫文件語法檢查

        named-checkconf 

        named-checkzone ZONE_NAM ZONE_FILE

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

       rndc status|reload;service named reload

實驗步驟如下:

1)定義區域

# 編輯配置文件 /etc/named.rfc1912.zones ,在最后添加自己定義的區域
 zone "magedu.com" IN {
         type master;   # 指定zone的類型
         file "magedu.com.zone";  # 該zone的名稱
 };

2)建立數據庫文件

 # 在/var/named目錄下建立定義區域的數據庫文件
  1 $TTL 3600  # 這里相當于設置變量TTL的值為3600秒
  2 $ORIGIN magedu.com.  #
  3 @      IN      SOA     ns1.magedu.com.  dnsadim.magedu.com.(
  4                    2016100501
  5                    1H
  6                    10M
  7                    3D
  8                    1D )
  9        IN      NS      ns1
 10        IN      MX   10 mx1
 11        IN      MX   20 mx2
 12 ns1    IN      A       192.168.16.104
 13 mx1    IN      A       192.168.16.105
 14 mx2    IN      A       192.168.16.106
 15 www    IN      A       192.168.16.104
 16 web    IN      CNAME   www
 17 bbs    IN      A       192.168.16.107
 18 bbs    IN      A       192.168.16.108

3)主配置文件語法檢查,解析庫文件語法檢查

[root@centos7 named]# named-checkconf  # 主配置文件語法減產
[root@centos7 named]# named-checkzone magedu.com /var/named/magedu.com.zone #解析庫語法減產 
zone magedu.com/IN: loaded serial 2016100501
OK

4)重新加載區域 rndc status|reload;service named reload

[root@centos7 named]# rndc reload # 重新加載
server reload successful
[root@centos7 named]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 102  # 原來是101,現在變為102,加載成功
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

5)測試能否解析

[root@centos7 named]# host -t A www.magedu.com 
www.magedu.com has address 192.168.16.104
[root@centos7 named]# dig -t A www.magedu.com 

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

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

;; ANSWER SECTION:
  

;; AUTHORITY SECTION:
magedu.com.		3600	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		3600	IN	A	192.168.16.104

;; Query time: 0 msec
;; SERVER: 192.168.16.104#53(192.168.16.104)
;; WHEN: Wed Oct 05 13:34:03 CST 2016
;; MSG SIZE  rcvd: 93

6)修改權限(640)和屬組

[root@centos7 named]# chown :named magedu.com.zone # 修改屬組為named
[root@centos7 named]# chmod o= magedu.com.zone     # 修改權限
[root@centos7 named]# ll
total 20
drwxrwx--- 2 named named   22 Oct  4 14:49 data
drwxrwx--- 2 named named   30 Oct  4 15:06 dynamic
-rw-r----- 1 root  named  491 Oct  5 13:04 magedu.com.zone  
-rw-r----- 1 root  named 2076 Jan 28  2013 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Nov 20  2015 slaves
[root@centos7 named]# rndc reload  # 重新加載
server reload successful

配置一個反向區域

1)配置步驟:

以 magedu.com域為例:

1)定義區域

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

         zone "ZONE_NAME" IN {

         type {master主|slave從|hint根|forward轉發};

         file "ZONE_NAME.zone";

         };

  注意:反向區域的名字格式為:反寫的網段地址.in-addr.arpa

          如:16.168.192.in-addr.arpa

2)建立區域解析庫數據文件(主要記錄為PTR記錄)

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

示例:文件為/var/named/192.168.16.zone

wKiom1f1BtziNyU-AAA9jHBAOpc752.png

 

  ·權限及屬主修改

         chgrup named /var/named/192.168.16.zone

         chmod o=  /var/named/192.168.16.zone

  • 主配置文件語法檢查,解析庫文件語法檢查

        named-checkconf 

        named-checkzone ZONE_NAM ZONE_FILE

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

       rndc status|reload;service named reload

實驗如下:

1)定義區域:

# 編輯主配置文件/etc/named.rfc1912.zones,在最后添加反解的區域
 zone "16.168.192.in-addr.arpa" IN {
          type master;
          file "192.168.16.zone"; 
 };

2)建立數據庫文件

# 在/var/named下建立反向解析的數據可文件
  1 $TTL 3600
  2 $ORIGIN  16.168.192.in-addr.arpa.
  3 @       IN      SOA     ns1.magedu.com  nsadmin.magedu.com. (
  4                 2016100501
  5                 1H
  6                 10M
  7                 3D
  8                 12H )
  9         IN      NS      ns1.magedu.com.
 10 104     IN      PTR     ns1.magedu.com.
 11 105     IN      PTR     mx1.magedu.com.
 12 106     IN      PTR     mx2.magedu.com.
 13 107     IN      PTR     bbs.magedu.com.
 14 108     IN      PTR     bbs.magedu.com.
 15 104     IN      PTR     www.magedu.com.

3)修改屬組和權限

[root@centos7 named]# chgrp named 192.168.16.zone 
[root@centos7 named]# chmod 640 192.168.16.zone 
[root@centos7 named]# ll
total 24
-rw-r----- 1 root  named  334 Oct  5 21:21 192.168.16.zone  # 修改后的屬組和權限
drwxrwx--- 2 named named   22 Oct  4 14:49 data
drwxrwx--- 2 named named   58 Oct  5 19:00 dynamic
-rw-r----- 1 root  named  491 Oct  5 13:04 magedu.com.zone
-rw-r----- 1 root  named 2076 Jan 28  2013 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named    6 Nov 20  2015 slaves

4)主配置文件語法檢查,解析庫文件語法檢查

[root@centos7 named]# named-checkzone 16.168.192.in-addr.arpa /var/named/192.168.16.zone 
zone 16.168.192.in-addr.arpa/IN: loaded serial 2016100501
OK
[root@centos7 named]# named-checkconf

5)重新加載區域 rndc status|reload

[root@centos7 named]# rndc reload
server reload successful
[root@centos7 named]# rndc status
version: 9.9.4-RedHat-9.9.4-29.el7 <id:8f9657aa>
CPUs found: 4
worker threads: 4
UDP listeners per interface: 4
number of zones: 103  # 可以看到又增加了一個區域
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

6)測試能否反向解析

[root@centos7 named]# dig -x 192.168.16.104 @192.168.16.106

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

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

;; ANSWER SECTION:
104.16.168.192.in-addr.arpa. 3600 IN	PTR	ns1.magedu.com.
104.16.168.192.in-addr.arpa. 3600 IN	PTR	www.magedu.com.

;; AUTHORITY SECTION:
16.168.192.in-addr.arpa. 3600	IN	NS	ns1.magedu.com.

;; ADDITIONAL SECTION:
ns1.magedu.com.		3600	IN	A	192.168.16.104

;; Query time: 0 msec
;; SERVER: 192.168.16.106#53(192.168.16.106)
;; WHEN: Wed Oct 05 21:49:08 CST 2016
;; MSG SIZE  rcvd: 132

主從DNS服務器

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

1)配置一個從區域步驟:

On Slave(在從服務器上)

  1)定義區域

        定義一個從區域:

           ·zone "ZONE_NAME" IN {

                   type slave;

                   file "slave/ZONE_NAME.zone"; 放在slave目錄下

                   masters {MASTER_IP;};

                   }; 

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

 2)重載配置

      rndc reload

      systemctl reload named.service

示例:

  vim /etc/named.rfc1912.zones  # 編輯從服務器的配置文件,添加區域
  zone "magedu.com" IN {
          type slave;
          file "slave/magedu.com.zone"; # 放在slave目錄下
          masters { 192.168.16.104;}; # 一定要指向主服務器的IP
 }; 
 # 注意:這里不需要配置從服務器的解析數據庫文件,接下來只需要在主服務器上添加從服務器的NS記錄和對應的A記錄即可


On Master(在主服務器上

    1)確保區域數據文件中為每個從服務器配置NS記錄,并且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄,且此A后面的地址為真正的從服務器的IP地址。

    2)解析庫文件語法檢查

    named-checkzone ZONE_NAM ZONE_FILE

    3)重載配置

示例:

  vim /var/named/magedu.com.zone # 編輯主服務器的數據庫文件
  ns2   IN   A   192.168.16.105  # 添加從DNS服務器對應的IP地址
  # 注意:修改完數據庫文件之后,序列號一定要加1,這樣從服務器才能檢查到

  4)可以手動進項測試

   # dig -t axfr magedu.com @192.168.16.104(主服務器地址,表示主服務器到從服務器的全量傳送)

注意:

  • 從服務器應該為一臺獨立的名稱服務器(安裝bind程序,編輯配置文件為緩存名稱服務器,然后檢查語法,啟動服務器)

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

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

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

  • 主從服務器時間應該同步,可通過ntp進行;

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

  • 主名稱服務器數據庫修改完之后一定要使相應的序列號加1,這樣從服務器才可以檢測到并及時更新,并且重載

 時間同步;

   任何在分布式環境中,讓多臺服務器基于某一種特定應用同時協調的內容、進程或服務,都應該做時間同步。

      ntpdate命令,時間服務器如下:

          time.nist.gov

          time.nuri.net
          0.asia.pool.ntp.org
          1.asia.pool.ntp.org
          2.asia.pool.ntp.org
          3.asia.pool.ntp.org

[root@CentOS6 ~]# ntpdate time.nuri.net
 6 Oct 17:04:01 ntpdate[2651]: adjust time server 211.115.194.21 offset 0.002132 sec
 [root@centos7 ~]# ntpdate 1.asia.pool.ntp.org
 6 Oct 17:10:54 ntpdate[1479]: adjust time server 202.65.114.202 offset -0.167026 sec

子域授權

 注意:

   1)我們注冊了二級域名之后,域名服務商會提供給我們DNS服務器(群租),我們只需在其二級域下添加相應的主機記錄(如web服務器的別名www,對應的ip地址)即可完成解析,但如果公司的部門很龐大,為了方便管理,需要單獨對一個部門添加一個域名,這時,就需要在其二級域下添加一個三級域(如:ops.magedu.com.),而添加的三級域必須要經過上一級授權才可以。

  2)ops.magedu.com.是一個三級域,www.ops.magedu.com.是三級域中的web服務器的別名;而 magedu.com 是一個二級域,www.magedu.com是一個二級域中web服務器的別名;

注意一定不要搞混淆了,雖然別名相同但域的級別不同。

  3)每一個域名都必須要有與之對應的名稱服務器才可以解析。

1)子域:

  • 子域授權:每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進行授權

  • 類似根域授權tld:

               .com.      IN     NS     ns1.com.

               .com.      IN     NS     ns2.com.

               ns1.com.  IN      A     2.2.2.1

               ns2.com.  IN      A    2.2.2.2

  • magedu.com. 在.com的名稱服務器上,解析庫中添加資源記錄:

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

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

             magedu.com.      IN    NS     ns3.magedu.com.

             ns1.magedu.com. IN    A      3.3.3.1

             ns2.magedu.com. IN    A      3.3.3.2

             ns3.magedu.com. IN    A      3.3.3.3

  • glue record:粘合記錄,父域授權子域的記錄

2)互聯網域名:

  • 域名注冊:

        代理商:萬網, 新網;godaddy

  • 注冊完成以后,想自己用專用服務來解析

        管理后臺:把NS記錄指向的服務器名稱,和A記錄指向的服務器地址


 阿里云DNS

wKioL1f3MJfS6CchAALpknnmzic885.png

wKioL1f3MJiQOIngAAJ3TPU63W0559.png

  

     這個域名是在阿里云注冊的.com域名,這個管理界面就是向.com域名服務器授權來查詢的。這是在wen界面進行的子域授權管理,及資源記錄管理,那在DNS的配置文件中也很容易去配置實現子域授權,如下:

3)正向解析區域授權子域的方法:

★原理:

     在本域名服務器上的正向解析庫文件當中定義子域對應的DNS服務器的主機名和A記錄即可。

★方法:

     ops.magedu.com.      IN   NS   ns1.ops.magedu.com. (三級域的DNS服務器名)

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

     ns1.ops.magedu.com. IN   A    IP.AD.DR.ES (服務器對應的ip地址)

     ns2.ops.magedu.com. IN   A    IP.AD.DR.ES


具體步驟如下:

  1)首先要在父域(二級域)的主DNS服務器上授權    

  # 編輯父域的解析數據庫文件
    vim /var/named/magedu.com.zone
  #添加授權子域的NS和A記錄
    ops.magedu.com.      IN   NS   ns1.ops.magedu.com.
    ns1.ops.           IN   A    192.168.1.108

   注意:

      每次修改解析數據庫文件之后都要使序列號加1,這樣從服務器才能夠檢測到序列號不一致,并及時更新從DNS服務器

      修改完之后保存退出并重載(# rndc reload)


 2)接下來配置子域服務器,其配置過程和之前的任何一個DNS服務器是一樣的(安裝bind程序,配置配置文件,定義手動添加區域解析庫文件)如下:

  •  首先安裝bind程序;

         # yum install bind -y

  • 編輯配置文件/etc/named.conf,以緩存名稱服務器的方式啟動起來;

        ①全局配置段: options { any; };

        ②關閉dnssec

       ③關閉僅允許本地查詢  //allow-query { localhost; };

        ④語法檢查:named-checkconf [/etc/named.conf]

        ⑤啟動服務,并查看狀態 :systemctl start|status named

        ⑥檢查53號端口是否啟動:netstat -tunlp

  • 配置其成為ops子域的主DNS域名服務器

        ①編輯 /etc/named.rfc1912.zones ,新增加一個區域

# vim /etc/named.rfc1912.zones ,在最后添加自己定義的區域
 zone "ops.magedu.com" IN {
         type master;   # 指定zone的類型
         file "ops.magedu.com.zone";  # 該zone的名稱
 };

       ②建立授權子域的區域解析庫文件

  # vim /var/named/ops.magedu.com.zone  建立定義區域的數據庫文件
  1 $TTL 3600  
  2 $ORIGIN ops.magedu.com.  #
  3 @      IN      SOA     ns1.ops.magedu.com.  dnsadim.ops.magedu.com.(
  4                    2017100501
  5                    1H
  6                    10M
  7                    3D
  8                    1D )
  9        IN      NS      ns1
 10 ns1    IN      A       192.168.16.108
 11 www    IN      A       192.168.16.108
  • 權限及屬主修改

         # chgrup named /var/named/ops.magedu.com.zone

         # chmod o=  /var/named/ops.magedu.com.zone

  • 主配置文件語法檢查,解析庫文件語法檢查

         # named-checkconf 

         # named-checkzone  ops.magedu.com  /var/named/ops.magedu.com.zone

  • 重新加載區域

         # rndc status|reload;

  • 測試能否解析

轉發服務器

注意:被轉發的服務器必須要能夠為請求者做遞歸,否則轉發請求不予進行;

區域轉發:僅轉發對特定區域的解析請求,比全局轉發優先級高;

  • 格式:

       zone "ZONE_NAME" IN {

            type forward;

            forward {first|only};       轉發方式

            forwarders { SERVER_IP;};  定義轉發給的服務器ip

       };

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

     only:只轉發

  •  注意:

         如果不定義區域轉發的話,子域要查找上一級就會先去找根再一步步查找,如果定義了區域轉發(被轉發的服務器為上一級的),子域就可以直接查找上一級而不通過查找根(比喻:家丑不可外揚)。


全局轉發: 針對凡本地沒有通過zone定義的區域查詢請求,全轉發給指定的可以訪問互聯網的服務器;

      Options {

           …..

           forward first|only;

           fowarders{ SERVER_IP;};

           …..

        };

    先去找 zone中定義的,如果沒有就全局轉發(比如:子域首先定義了區域轉發,這樣僅能查詢自己的上一級,但之外的比如www.baidu.com是查詢不了的;但是自己的父域是可以訪問互聯網的,這樣就可以定義所有自己訪問不了的統統轉發給父域)


示例:

以子域授權為例,定義區域轉發,子域查找上一級

 vim /etc/named.rfc1912.zones  # 編輯配置文件,新增加一個區域
 zone "magedu.com" IN {
            type forward;
            forward  only;     # 只是內部使用,不需要迭代
            forwarders { 192.168.16.108; }; # 定義父域DNS服務器的ip,如果有從服務器也寫上
       };

 定義全局轉發:

 vim /etc/named.conf  # 編輯named.conf文件,在options全局配置段中添加
options {
	listen-on port 53 { any; };
	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";
	forward only  
	forwarders { 192.168.1.108; }; # 表示只要是自己不負責的統統轉發給192.168.1.108
	//allow-query     { localhost; };

bind中安全的相關配置

1)bind中的acl訪問控制列表

acl: 

    把一個或多個地址歸并為一個集合,隨后通過此名稱即可對此集全內的所有主機實現統一調用;

    格式:

        acl acl_name{

            ip;

            net/prelen;

            ……

        };

  示例:

      acl mynet{

         172.16.0.0/16;

         127.0.0.0/8;

       };

bind有四個內置的acl:

  • none: 沒有一個主機

  • any: 任意主機

  • localhost: 本機

  • localnet: 本機的IP同掩碼運算后得到的網絡地址

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

2)控制訪問指令

訪問控制的指令

  • allow-query {}:允許查詢的主機;白名單;默認是所有主機,如果有的話只有定義在里面的才可以查詢

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

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

  • allow-update {}: DDNS,允許動態更新區域數據庫文件中的內容


bind view

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

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

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

  • 格式:

        view VIEW_NAME {

             zone

             zone

             zone

        };

  示例:

     

  view internal {
             match-client { 172.16.0.0/8; };
             zone "magedu.com" IN {
                  type master;
                  file "magedu.com/internal";
              };
        };
       
   view external {
              match-client { any; };
             zone "magedu.com" IN {
                 type master;
                 file "magedu.com/external";
              };
         };

  • 注意:

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

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

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

  • CDN: Content Delivery Network

  • 智能DNS:

        dnspod

        dns.la


 

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

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-10-10
下一篇 2016-10-10

相關推薦

  • sed 相關概念總結

    文件查看命令:cat, tac,rev cat [OPTION]… [FILE]… -E: 顯示行結束符$ -n: 對顯示出的每一行進行編號 -A:顯示所有控制符 -b:非空行編號 -s:壓縮連續的空行成一行 [root@CentOS7 ~]# cat yyy [root@CentOS7 ~]# cat -A yyy $ tac: 把…

    Linux干貨 2016-08-12
  • 二維碼的生成細節和原理

    二維碼又稱QR Code,QR全稱Quick Response,是一個近幾年來移動設備上超流行的一種編碼方式,它比傳統的Bar Code條形碼能存更多的信息,也能表示更多的數據類型:比如:字符,數字,日文,中文等等。這兩天學習了一下二維碼圖片生成的相關細節,覺得這個玩意就是一個密碼算法,在此寫一這篇文章 ,揭露一下。供好學的人一同學習之。 關于QR Code…

    Linux干貨 2016-08-15
  • Linux文件查看和管理類命令

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    2018-03-17
  • vim用法詳解

    vim編輯器:文本編輯器: 文本:純文本,ASCII text;Unicode 文本編輯器種類:     行編輯器:sed     全屏編輯器:nano,vi   vi:visual interface vim:vi improv…

    Linux干貨 2016-08-15
  • Shell腳本編程初步

        shell是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。shell腳本(shell script),是一種為shell編寫的腳本程序。業界所說的shell通常都是指shell腳本,但shell和shell script是兩個不同的概念。shell編程跟java、php編程…

    Linux干貨 2016-08-24
  • 馬哥教育網絡班22期第一周課程練習2-未聞花名

    語法:export [-fnp][變量名稱]=[變量設置值] 補充說明:在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及于該此登陸操作。 參數: -f 代表[變量名稱]中為函數名稱。 -n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。 -p…

    Linux干貨 2016-08-15

評論列表(1條)

  • dawning
    dawning 2016-11-09 09:09

    師兄,你的博客寫的太好了。內容和排版都讓我望塵莫及。
    同為馬哥學員,真是慚愧。
    請教一下:你用的是什么編輯器寫的博客?我也學學排版。

欧美性久久久久