DNS服务基础及bind基础配置和应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS服务基础及bind基础配置和应用相关的知识,希望对你有一定的参考价值。

DNS服务基础及bind基础配置和应用

 DNS服务基础01
1.DNS:Domain   Name  Service,  ( 应用层协议)
2.tld:Top Level Domain 顶级域
(1)顶级域中的组织域
.com  (company)
.net    网络组织
.org非盈利型组织   org:other  organizations
.gov  government
.edu    教育机构
.mil   military军事的,军队,军人
...
(2)顶级域中的国家域
.tw   .hk  .cn  ....
3.DNS名称解析方式:
      通过“主机名称”寻找“IP”:正向解析
      通过“IP”寻找“主机名称”:反向解析
(3)eg:根服务器(.) ----管理顶级域服务器(73分钟)
                    一级顶级域(com)-----管理二级域服务器
                      二级域 (三里屯)------   管理区域内本地服务器
                        本地主机服务器
4.域
magedu.com 即为一个域
域有了下面的主机名称相当于都有了:
   www.magedu.com 
   ftp.magedu.com
    bbs.magedu.com
    cloud.magedu.com
5、DNS服务器类型
       第一种:负责解析至少一个域
                                         主名称服务器
                                         辅助名称服务器(以防主名称服务器歇菜)
       第二种:不负责域解析
                                       缓存名称服务器

*hosts:如果查找的域不多,将主机名称或IP查找下来之后缓存至缓存中,再保存至本地hosts中,下次查找的时候先找hosts,
再从缓存中找。
*基于IP找主机名称:
eg:一台主机基于某个IP找到这个IP的主机名称,查找的时候,上级知道下级的管理范围,下级不知道上级的管理范围,
就算这个IP对应的域的上级就是管理这个域的(这种可能性很小),也只有通过根才能找到自己的上级(迭代查找)

 

 DNS服务基础02
1.一次完整的查询请求经过的流程:
本地hosts文件  --> 如果hosts中没有对应关系,就去查看DNS  local  cache本地缓存-->
本地缓存如果找到了,就结束了,如果没找到,就向所指定的DNS  server(服务器)发送请求
(这个请求是个递归请求recursive):
         如果是自己负责解析的域:直接查询数据库并返回答案
         如果不是自己负责解析的域:先查找自己的缓存(服务器有自己的缓存),
然后基于迭代(iteration)的方式一步步去找根,最终完成解析请求。

2.服务器返回的解析答案可能性:
             肯定答案:
             否定答案:(免于客户端频繁查询服务器,服务器对于否定答案也会缓存)

            权威答案:由直接负责的DNS服务器返回的答案;
            非权威答案:(域名是可以交易的)
3.  区域传送:
    辅助服务器刚上线时进行全量传送(axfr:full  zone  transfer)
    之后用增量传送ixfr仅传送变化的数据;(变量传送)
4.一个主机有主机名和IP的原因
主机名容易被人记住,IP不容易记。
5.域管理
根服务器:根服务器下分子域,子域分一级、二级子域(分到此处就够管理了),域中有主机,管理级域中没有,域从上到下是管理关系,通过
DNS服务器来实现最终的主机管理。(每个域都配有DNS服务器)
主机管理:根服务器管理子域服务器,二级子域管理各自域中的主机。
管理的内容:名称解析。主机有普通主机、服务主机。、、、、 
  
6、主-辅DNS服务器:
              主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
              从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;
  “复制”操作的实施方式:
   序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
   刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;
   重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;(肯定是小于刷新时间的,如何大于,愧疚没必要重试了)
   过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
   否定答案的缓存时长:
     
                  主服务器”通知“从服务器随时更新数据;
    
   区域传送:
    全量传送:axfr, 传送整个数据库;
    增量传送:ixfr, 仅传送变量的数据; 
7、站在逻辑角度上讲是一个域,站在物理角度上讲是一个区域   
  区域(zone)和域(domain):
   magedu.com域:
    FQDN --> IP     FQDN:Fully  Qualified   Domain   Name完全合格域名(主机名)
     正向解析库;区域
    IP --> FQDN
     反向解析库;区域
     
  
8.区域服务器是如何工作的
(1)一个主机名称可对应多个IP,一个IP也可对应多个主机。
一个主机名称可对应多个IP:实现负载均衡的轮循效果,比如一个主机对用两个IP,对于此主机提供的web服务,一半人访问这个IP,一般人访问另一IP,提供服务效率。
一个IP也可对应多个主机:这个服务器既是web服务器,又是邮件服务器,这个很正常,即一台服务器提供多种服务功能。
(2)区域数据库文件:(主要是由资源记录来定义的)
            a、资源记录:Resource Record, 简称rr;
                 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
    
   *SOA:Start Of Authority,起始授权记录(造了一个岛,岛上谁是岛主、居民等要定义下,相当于这个意思); 一个区域解析库有且只能有一个SOA(标明这个岛)记录,而且必须放在第一条;
   *NS(岛主和副岛主):Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
   *A: Address, 地址记录,FQDN --> IPv4;(主机名解析成对应IP,一个IPv4是32位)
   *AAAA:地址记录, FQDN --> IPv6;(128位)
   *CNAME:Canonical Name,别名记录; (主机服务器是可以有别名的)
   *PTR:Pointer,IP --> FQDN(将IP解析成主机名的,实现反向解析)
   *MX:Mail eXchanger,邮件交换器;(标记邮件服务器,比如@163.com,后面是一个域名,不可能一个域内的所有主机服务器都是用来实现邮件服务的,MX就是用来标记某台服务器是用来实现邮件服务的。)
    优先级:0-99,数字越小优先级越高;(邮件服务器不可能只有一个,万一挂了或者忙不过来呢,有多个,他们是有优先级的)
    
            b、资源记录(有很多个,上面*只是介绍常见的)的定义格式:
    语法: name   [TTL]  IN(关键字) RR_TYPE   value
                                                 time  to live 生存时间,加[]表明是可以省略的                           
                                         (正向的,左边NAME是主机名,反向的,左边NAME是IP)
   SOA:
    name: 当前区域的名字;例如”mageud.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(week)   ; 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记录;

 

 
 9、DNS协议 --> BIND, PowerDNS
  http://www.isc.org
  
  程序环境:
   主程序:/usr/sbin/named
   Unit File:/usr/lib/systemd/system/named.service
   配置文件:/etc/named.conf
   区域解析库文件:/var/named
   
  关闭dnssec功能:
   /etc/named.conf
   
    dnssec-enable no;
    dnssec-validation no;
   
  解析一个区域:
   定义:/etc/named.rfc1912.conf
    zone “ilinux.io" IN {
     type master;
     file "ZONE_FILE";
    }
    
   定义解析库文件示例:
    $TTL 600
    ilinux.io.      IN      SOA     ilinux.io.      nsadmin.ilinux.io. (
      2017052301
      1H
      5M
      1W
      6H )
      IN      NS      dns1.ilinux.io.
      IN      NS      dns2.ilinux.io.
    dns1.ilinux.io. IN      A       172.16.0.67
    dns2.ilinux.io. IN      A       172.16.0.68
    www.ilinux.io.  IN      A       172.16.0.1
    web             IN      CNAME   www   
   

  

bind基础配置和应用(03)
1、如何安装配置DNS的服务使用?
(1)BIND的安装配置:
         BIND: Berkeley Internet Name Domain,  ISC.org
                  dns: 协议
   bind: dns协议的一种实现
   named:bind程序的运行的进程名(服务名)
(2)BIND的程序包 (此中讲到的bind包是centos7,6和7的区别不大)
         *在发行版的光盘中一般自带相关程序包,只需配置好本地base或光盘指向的yum源即可。(需用到的知识点:yum源的配置)
         *查看BIND包信息:#yum   info  bind(包的版本、功能作用等信息)
   
         *查看有关bind包的信息:#yum  list  all  bind* (以bind开头进行通配)  
         *#yum  list   bind-libs(查看bind-libs包的信息) 
         *# rpm  -ql   bind-libs(查看bind-libs包中的辅助文件清单)
         * bind-libs包作用:被bind包和bind-utils包中的程序共同用到的库文件;
         *bind-utils:bind客户端程序集,例如dig, host, nslookup等;
   
         * bind包:提供了dns server程序、以及几个常用的测试程序;
         *bind-chroot:选装,让named运行于jail模式下;
(3)bind:
           *主配置文件:/etc/named.conf ,abc可用“#rpm  -ql  bind”查看到,abc也是bind配置文件中的组成部分
 a、/etc/named.iscdlv.key
 b、/etc/named.rfc1912.zones
 c、/etc/named.root.key

           *解析库文件:在/var/named/目录下;
                 一般名对应的区域名字:ZONE_NAME.zone
2、注意:(1) 一台DNS服务器可同时为多个区域提供解析;
                (2)既然是DNS服务器,就必须要有根区域解析库文件(其主要作用在于告诉DNS服务器根节点的服务器地址),
                    此文件在centos上一般叫做:named.ca;
                (3) 还应该有两个区域解析库文件:localhost(解析本地主机)和127.0.0.1的正反向解析库;
  正向解析库文件:named.localhost
  反向解析库文件:named.loopback
 *正向解析库文件:
~]# 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
*反向解析库文件:
 ~]# 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.        (反向解析的标志)


3、rndc:remote name domain contoller,名称服务器的远程控制工具(比如删除、清空缓存、结束进程等操作)
    远程就可以跨主机操作,和主机通信就必须基于套接字进行通信。  可以#man  rndc
   (1)默认工作在tcp下的953端口,953/tcp。但默认监听于127.0.0.1地址,因此仅允许本地使用;
   (2)bind程序安装完成之后,rndc默认即可做缓存名称服务器使用(其功能是让其他主机服务器指向这台主机);如果没有专门负责解析的区域,直接即可启动服务;
 服务启动CentOS 6: service  named  start
 服务启动CentOS 7: systemctl  start  named.service


4、bind的主配置文件格式:( named:bind程序的运行的进程名(服务名))
     首先打开配置文件~#]  vim /etc/named.conf,bind配置文件主要由三部分组成。
      第一部分:全局配置段
                        定义在options {...}中,大括号括起来的一大部分配置信息。
     第二部分:日志配置段
                       定义在logging{...}中
     第三部分:区域配置段
                       定义在zone{...}中,此中内容:那些由本机负责解析的区域,或转发的区域;
 (1)缓存名称服务器的配置(监听能与外部主机通信的地址)
            你的dns服务器要想能为其他主机提供服务、建立通信,最起码的他要监听在一个公共的能让其他主机通信的地址上,
而不是默认的127.0.0.1地址,因此我们要监听可与外部服务通信的监听地址,此时需要修改一个配置信息 ,监听web
服务即可。
第一部分中:
默认的监听地址:listen-on port 53 { 127.0.0.1; };
删除默认地址:listen-on port 53 ;(没加监听地址的话,默认是监听所有的地址)
如果要监听某一特定的地址,在后面直接加上ip:listen-on port 53 { 172.16.100.67; };

(2)学习时,建议关闭dnssec
         dnssec-enable no;
         dnssec-validation no;
         dnssec-lookaside no; 
(3)注意:每个配置语句必须以分号“;”结尾,否则即为语法错误。

5、配置文件语法检查(如果修改了配置文件中的内容,一定要先检查是否有语法错误,再启动服务。)
(1)命令检查,未报错说明正常。
~]# named-checkconf 
(2)named-checkconf命令默认情况下是检查/etc/named.conf配置文件的,后面带不带都行。
~]# named-checkconf   [/etc/named.conf]
(3)删除了配置文件中一个“{”,出现如下报错。
~]# named-checkconf
/etc/named.conf:13: ‘{‘ expected near ‘listen-on‘


      
6、配置文件中注释的方法
(1)多行注释:
                 /*
                 ...
                 ...
                 */
(2)单行注释:a、/*...*/
                           b、//(双斜线)

7、测试工具(测试网络是否是通的)
dig, host, nslookup等

(1)dig命令:用于测试dns系统,因此其不会查询hosts文件;
dig  [-t RR_TYPE]  name  [@SERVER]  [query options]
*-t :表示测试
*RR_TYPE:资源类型
*name:将哪一个名字解析成哪一个资源对应的值
*@SERVER:通过哪一个服务器来解析
*query options:查询选项(可省)
*查询选项:
         +[no]trace:跟踪解析过程;
         +[no]recurse:进行递归解析;

eg:测试百度A资源记录    
~]# dig  -t  A  www.baidu.com
没加@SERVER的原因,是因为用本机进行测试。
    
注意:反向解析测试
格式:dig  -x  IP
解析某IP对应的主机
eg:
~]# dig  -x  119.75.222.17
没有解析出来,说明:有正向解析,不一定有反向解析
        
(2)host命令:
格式:host  [-t  RR_TYPE]  name  SERVER_IP
  SERVER_IP(相当于dig中的@SERVER):使用指定的服务器进行测试,不用默认的。

解析主机名
eg:
~]# host  -t  NS  baidu.com.
baidu.com name server ns2.baidu.com.
baidu.com name server dns.baidu.com.

解析邮件交换服务器的名字
eg:
~]# host -t  MX  baidu.com
baidu.com mail is handled by 20 mx1.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
      
(3)nslookup命令:
格式:nslookup  [-options]  [name]  [server]
name:指明要查询的名字
server:使用哪天服务器进行查询      

最好使用交互式模式:
       nslookup>
       server  IP:以指定的IP为DNS服务器进行查询;
       set  q=RR_TYPE:要查询的资源记录类型;
       name:要查询的名称;
eg:
 ~]# nslookup
> server 172.16.0.1      (指明服务器172.16.0.1)
Default server: 172.16.0.1
Address: 172.16.0.1#53
> set q=A                 (查询A记录资源)
> www.souhu.com     (查搜狐的A 记录)
Server:  172.16.0.1
Address: 172.16.0.1#53

Non-authoritative answer:  
www.souhu.com canonical name = cndm.com.    (canonical    name(别名)      canonical 典型  标准)
Name: cndm.com
Address: 124.16.31.154
> exit
        

 
8、rndc命令:named服务控制命令(远程控制)
 *rndc  status
 *rndc  flush  (清空服务器缓存)      flush同花  发红
eg:
 ~]# rndc  status
version: 9.9.4-RedHat-9.9.4-37.el7 <id:8f9657aa>     (服务器的版本号)
CPUs found: 4                            (CPU一共有四颗)
worker threads: 4                       (工作线程有四个)
UDP listeners per interface: 4
number of zones: 101
debug level: 0
xfers running: 0                 (有没有进行过transfer,0表示没有)
xfers deferred: 0
soa queries in progress: 0    (正在进行的soa查询有多少个)
query logging is OFF            (表示查询日志功能是关闭的)
recursive clients: 0/0/1000     (递归查询客户端有多少个,最多1000个,现在为0个)
tcp clients: 0/100                 (0:表示tcp有多少个,100:表示最多有100个)
server is up and running    (服务器正处于启动正常工作状态)
     

9、配置一个正向区域:(67分钟)
假如以magedu.com域为例:
(1) 定义区域(我们要来管理哪一个区域的主机,方便查找)
在主配置文件中(/etc/named.conf)或主配置文件辅助配置文件(/etc/named.rfc1912.conf)中实现;
zone  "ZONE_NAME"  IN  {                           (在zone段中定义域名)  注意:区域名字即为域名;
type  {master|slave|hint|forward};                  (定义好服务器类型master(定义为主服务器)|slave(从服务器)|hint(根服务器)|forward(转发服务器))
file  "ZONE_NAME.zone";                              (定义好文件名)
              };

*(解释zone段中出现的:/etc/named.rfc1912.zones
rfc:请求注解文档
主要是描述每一种协议的规范的最权威的官方资料)
 
*在vim  /etc/named.rfc1912.zones中新增区域:
zone "magedu.com" IN {
               type  master;
               file  "magedu.com.zone";
 };


(比如正向解析,通过主机名找到IP,从而客户端的工作才能继续下去--获取资料。从主机名解析IP、过程中要保证服务器正常工作
为他配置一个从服务器等等,这样的一个过程需要详细记录才能完成,数据文件就是起到这样的一个作用。正向解析有正向解析的过程内容信息需要去
记录,反向解析从IP查找主机名同样是如此,所以两种工作过程都要建立自己的区域数据文件)
(2) 建立区域数据文件(主要记录为A或AAAA记录)     
*为magedu.com.zone定义区域建立数据文件
*在/var/named目录下建立区域数据文件;      
文件为:/var/named/magedu.com.zone
*#vim  magedu.com.zone
  $TTL 3600(除TTL之外全部为资源记录) time  to live 生存时间
  $ORIGIN magedu.com.   (解析主机名)
  @       IN      SOA     ns1.magedu.com.   dnsadmin.magedu.com. (
    2017010801     (序列号)
    1H   (刷新时间)
    10M     (重试时间)
    3D    (过期时间)
    1D )   (否定回答的TTL值)
             IN      NS      ns1      
             IN      MX   10 mx1
             IN      MX   20 mx2
                                ns1     IN      A       172.16.100.67
                mx1     IN      A       172.16.100.68
                               mx2     IN      A       172.16.100.69
               www     IN      A       172.16.100.67
                web     IN      CNAME   www
                 bbs     IN      A       172.16.100.70
                 bbs     IN      A       172.16.100.71

(3)区域数据文件(主配置文件)建立完成之后 
第一步:检查语法错误
a、检查主配置文件语法错误 :# named-checkconf 
b、新增区域的配置文件也要检查语法错误:
# named-checkzone  ZONE_NAME   ZONE_FILE
eg:
~]# named-checkzone  magedu.com  /var/named/magedu.com.zone

第二步:权限及属组修改
# chgrp  named  /var/named/magedu.com.zone
# chmod  o=  /var/named/magedu.com.zone(其他用户没有权限)

第三步: 让服务器重载配置文件和区域数据文件
重载,查看一下远程服务器状态
#rndc  status
然后#rndc  reload(或# systemctl  reload  named.service重载服务器)
然后#rndc  status(会发现number  of   zones多一个)
 

10、配置一个反向区域(88分钟)  
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
假如以magedu.com域为例:  
    zone  "ZONE_NAME"  IN  {
    type  {master|slave|hint|forward};
    file  "ZONE_NAME.zone";
   }; 

*在/etc/named.rfc1912.zones中定义区域名
eg:
 zone "100.16.172.16.in-addr.arpa"  IN  {
            type  master;
            file  "172.16.100.zone";
};
      
注意:反向区域的名字
反写的网段地址.in-addr.arpa
100.16.172.in-addr.arpa
        
(2) 定义区域解析库文件(主要记录为PTR)
示例,区域名称为100.16.172.in-addr.arpa;
*#vim   172.16.100.zone
$TTL 3600 (一小时)
$ORIGIN 100.16.172.in-addr.arpa.   (解析IP)
@      IN      SOA     ns1.magedu.com.  nsadmin.magedu.com. (
  2017010801
                 1H
                 10M
  3D
  12H )
          IN      NS      ns1.magedu.com.(反向区域中不能省,不能只写ns1)
67      IN      PTR     ns1.magedu.com.
68      IN      PTR     mx1.magedu.com.
69      IN      PTR     mx2.magedu.com.
70      IN      PTR     bbs.magedu.com.
71      IN      PTR     bbs.magedu.com.
67      IN      PTR     www.magedu.com.     
              
(3)a、权限及属组修改:      
# chgrp  named  /var/named/172.16.100.zone
# chmod  o=  /var/named/172.16.100.zone
        b、  检查语法错误:
# named-checkzone  ZONE_NAME   ZONE_FILE
# named-checkconf
       
        c、让服务器重载配置文件和区域数据文件
           # rndc  reload 或
           # systemctl  reload  named.service     
               
 bind高级应用(04)

1、主从服务器:(主从,就看正向区域解析数据文件和反向区域解析数据文件放在哪台服务器上了)
(1)从服务器是区域级别的概念
(2)从服务器拥有主服务器一模一样的数据文件
(3)eg加深理解:某台服务器为十个区域提供正向解析,而且都是主的,从服务器只能是其中一个区域上服务器的从服务器,
如果一台服务器上有三个区域且是主的,我们配置一台服务器成为这台服务器的从服务器时,是相对于其中一个区域配置的,
而不是对于整台服务器配置的,如果他是第一个区域的从,那么在从服务器上他只有第一个服务器的数据文件副本。
(4)eg加深理解:如果某台服务器既是正向的主(即提供正向区域解析),又是反向的主(又提供反向区域解析),如果从服务器只配置了正向区域的从(副本),
那么反向区域就和他没有关系了,就不能提供反向区域解析了,他没有反向区域解析数据文件。所以如果配置一台从服务器,把一个域的完整的
正向区域和反向区域都成为从,那么这两个区域的数据文件要分别进行配置。
(5)eg加深理解:我们还可以这样,拿两台服务器,第一台服务器是正向的主,第二台服务器是正向的从,但第二台服务器是反向的主,第一台是反向从,
这样也是可以的。因此第一台服务器向第二台复制正向区域数据文件,第二台服务器向第一台复制反向区域数据文件。只能在区域级别
建立关联关系。

2、从服务器的配置
*数据文件和主服务器同步获取
*在区域文件中配置一个从区域,并定义区域类型是从服务器。
(1)从服务器的配置:
On Slave
(1) 定义区域
定义一个从区域;
zone "ZONE_NAME"  IN {
type  slave;(类型:从服务器)
file  "slaves/ZONE_NAME.zone";
masters  { MASTER_IP; };   (告知主服务器是哪个)
 };
(2)配置文件语法检查:named-checkconf
(3)重载配置
rndc  reload或
systemctl  reload  named.service
    
3、在主服务器上,On Master(23分钟)
(1) 确保区域数据文件中有一个NS记录是指向从服务器的(或者说确保区域数据文件中为每个从服务配置NS记录);
实验(为主服务器配置一台正向服务的从)
第一步:准备一个节点当从服务器
 ~]# ssh  [email protected](连接从)
第二步:装主程序包
 ~]# yum install  bind  -y(要装此包,首先要配置yum源)
第三步:编辑DNS的主配置文件,要能监听在web地址上
(1)#vim    /etc/named.conf
(2)options {
 11         listen-on port 53 { 127.0.0.1; 172.16.253.212; };    将要监听的地址加在后面
(3)optios段中,yes改为no
dnssec-enable yes;
dnssec-validation yes;
(4)启动服务
~]# service   named   start
~]# service  named   status   查看服务状态
第四步:配置从区域,将其配置为正向解析的从服务器。
(1)#vim   /etc/named.conf 
~]# vim  /etc/named.rfc1912.zones(配置从区域)
(2) 加入的内容
zone  "magedu.com"  IN {        (表明配置的是正向解析)
             type slave;                       (表明是为从服务器配置)
             file  "slaves/magedu.com.zone";   (文件放置的相对位置)
             masters { 172.16.253.212; };  注意中括号的空格隔开   (表明主服务器是谁)
 };
(3)更改了配置文件,要检查其语法是否有错。
#named-checkconf
第五步:返回主服务器,在magedu.com域中加一个NS,为从服务的副本提供服务。(域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;)
*此条NS记录如果没有的话,从服务器将没法正常工作。
(1)主服务器区域配置文件更改
 ~]# cd /var/named
 named]# vim  magedue.com.zone 


   $TTL  3600
   $ORIGIN  magedu.com
  @        IN    SOA    ns1.magedu.com    dnsadmin.magedu.com.  (
                         2017010802(加了一个NS,序列号加1.新改动,新版本)
                       1H
                       10M
                       3D
                       1D  )
             IN           NS       ns1
             IN           NS       ns2(新增,指向ns2,ns2跟对方主机的真正名字没有关系)
             IN           MX    10 mx1
             IN           MX    20 mx2
   ns1    IN           A        172.16.253.212
   ns2    IN           A        172.16.252.184(新增,但这个ns2要有一个A记录,指向对方的主机(从服务器))
  mx1    IN           A        172.16.253.213
  mx2    IN           A        172.16.100.214
 www    IN           A        172.16.100.212
  web    IN           CNAME    www
    bbs   IN           A        172.16.100.215
    bbs   IN           A        172.16.100.216
(2)主服务器配置文件语法检查
 named]# named-checkzone magedu.com  /var/named/magedu.com.zone
检查的域为magedu.com
域的文件/var/named/magedu.com.zone
(3)重载配置(每新增主机,都需要重载,序列号加1)
rndc  reload或
systemctl  reload  named.service

4、实验:为主服务器配置一台反向服务的从
第一步:在从服务器上编辑,作为一台主机服务器反向解析的从。
*(有的主机希望正向解析,有的希望反向解析)
在从上配置一个反向解析区域
#vim  /etc/named.rfc1912.zones
新增:
 };
 zone  "100.16.172.in-addr.arpa"  IN  {
       type  slave;
       file  "slaves/172.16.100.zone";  (文件放置的位置)
       masters { 172.16.100.67; };   (呼应的主服务器)
 };
第二步:检查配置文件的语法错误
#named-checkconf
第三步:在主服务器上,更改其配置文件,将从服务器的NS加上,序列号跟新。
然后检查文件的语法错误,再加载。


5、小总结:检查语法错误
*标明彼此是主从服务器的关系     *标明从是否有主的正向、反向解析功能      *实现数据文件同步功能
(1)检查/etc/named.rfc1912.zones配置文件的语法错误:#named-checkonf(在从服务器上进行,为主服务器加了正向区域或反向区域解析功能的时候)
(2)eg:named]# named-checkzone magedu.com  /var/named/magedu.com.zone(在主服务器上进行,当为主服务器配置从服务器时,要将从服务器的视作一个NS记录在案。)
为从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址.
检查的域为magedu.com
域的文件/var/named/magedu.com.zone


6、注意:主从服务器时间要同步;
ntpdate命令;
    
7、子域授权:(46分钟)
正向解析区域授权子域的方法:
 ops.magedu.com.   IN  NS   ns1.ops.magedu.com.
 ops.magedu.com.   IN  NS   ns2.ops.magedu.com.
 ns1.ops.magedu.com.  IN  A  IP.AD.DR.ESS
 ns2.ops.magedu.com.  IN  A  IP.AD.DR.ESS

8、定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;
zone  "ZONE_NAME"  IN {
 type  forward;
 forward  {first|only};    (转发服务器)
 forwarders  { SERVER_IP; };   (被转发的服务器-即接受的服务器)
  };
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
    
(2) 全局转发:凡本地没有通过本地zone定义的区域查询请求,通通转给某转发器;
options {
 ... ...
 forward  {only|first};
 forwarders  { SERVER_IP; };(可以有多个,主、从都可以解析)
 .. ...
  };
    
9、bind中的安全相关的配置:
(1)acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;(打包一个或多个主机,统一发送给服务器进行解析)
acl  acl_name  {
  ip;
  net/prelen;
  };
示例:
acl  mynet {     
 172.16.0.0/16;
 127.0.0.0/8;
 };
    
(2)bind有四个内置的acl
 none:没有一个主机;
 any:任意主机;
 local:本机;
 localnet:本机的IP所属的网络;
    
(3)访问控制指令:
 allow-query  {};  允许查询的主机;白名单;
 allow-transfer {};  允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
 allow-recursion {}; 允许哪些主机向当前DNS服务器发起递归查询请求;
 allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
   
(4)bind view:
视图:
            view  VIEW_NAME {
  zone
  zone
  zone
  }
   
eg:   
view internal  {
    match-clients { 172.16.0.0/8; };
 zone "magedu.com"  IN {
  type master;
   file  "magedu.com/internal";
    };
  };
   
 view external {
 match-clients { any; };
 zone "magecdu.com" IN {
  type master;
  file magedu.com/external";
 };
                   };
 































































































































































































以上是关于DNS服务基础及bind基础配置和应用的主要内容,如果未能解决你的问题,请参考以下文章

DNS服务基础之Bind

CentOS7.x的DNS服务的基础配置

LinuxDNS服务-BIND基础配置

BIND基础配置详解

Linux-dns基础知识和BIND的简单配置-2(正向解析和反向解析)

Linux-dns基础知识和BIND的简单配置-1