下面介绍的是DNS、转发器、Bind


一、DNS

1、DNS基础

 对于一个解析区域,我们可以把名称域比作一棵倒置的树,其中有根域、顶级域。其中,顶级域又分为三类,即组织域、地理域、反向域。

 DNS名称解析方式:正向解析、反向解析(所用的数据库不同)。正向解析,即名称到IP地址的解析;反向解析,即IP地址到名称的解析。

 DNS查询类型:递归查询、迭代查询。

 DNS服务器的分类:主DNS服务器、从DNS服务器、缓存DNS服务器。

 区域数据传送的两种类型:全量传送、增量传送。 

 FQDN:完全合格域名


2、DNS的查询请求流程:

    Client --> hosts --> Local Cache --> first DNS(recursive) -->

      --> 服务器本地缓存或本地数据库中有结果,直接响应客户端;

      --> ROOT(iteration) --> TLD_DNS_SERVER --> 二级域DNS_SERVER --> ... --> ns.xxx. --> 解析结果;


3、主从DNS服务器数据库的四部分:

(1)、序列号(serial) ---------数据库的版本号,数据库变化则自增

(2)、刷新时间间隔(refresh) --------------到主DNS服务器上检查序列号的变化更新情况的时间间隔

(3)、重试时间间隔(retry) ----------------同步数据库失败,再次发起尝试请求的时间间隔

(4)、过期时间(expire) ---------------接不上主DNS服务器时,从DNS服务器多久后停止服务

(5)、否定答案的缓存时长(minimal TTL)


4、资源记录(RR)

  资源记录,就是存放于区域数据库文件中,用于解析工作的数据。

  

  常见的【7种资源记录】类型为:A、AAAA、PTR、SOA、NS、CNAME、MX,具体解释如下:

(1)、SOA -------------起始授权记录

  任何一个数据库中,有且仅有一条,必须是第一条。


(2)、A ------------主机记录(IPV4)

  标识完全合格域名,到IP地址的映射关系。


(3)、AAAA ------------主机记录(IPV6)

  标识完全合格域名,到IPV6地址的映射关系


(4)、PTR ----------------指针记录

  标识IP地址,到完全合格域名的映射关系。


(5)、NS ---------------名称服务器记录

  标明当前域中所有的DNS服务器。


(6)、CNAME -----------别名记录

  标识从完全合格域名,到完全合格域名的映射关系。


(7)、MX ---------------邮件交换器记录

  标识域中邮件服务器的主机名,从域名映射到完全合格域名


5、七种资源记录的格式(在区域数据库中):

 资源记录格式:name|FQDN  [TTL]  IN  RR_TYPE  VALUE

(1)、SOA资源记录

  name ------------当前域的域名(qhdlink.com.)/@

  value(三类):

  1)、当前区域的主DNS服务器的FQDN(ns1.qhdlink.com.)

  2)、当前区域数据库的管理员的邮件地址(mailmaster.qhdlink.com.)

  3)、主从服务器进行区域传送的相关时间定义及否定答案的统一TTL

    (Serial 1H 15M 1W 1D)

    (

    Serial; --------------序列号

    1H;refresh -----------刷新时间间隔

    15M;retry --------------------重试时间间隔

    1W;expire --------------------过期时间

    1D);minimal ttl -----------否定答案的缓存时长


 示例:

  $TTL 86400

  qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com.(

                          2017081001;serial

                          1H;refresh

                          15M;retry

                          1W;expire

                          1D);ttl


(2)、NS记录

 每个域中,可以有多条NS记录,但每一条NS记录必须对应一个A记录。

  name ------------当前域的域名

  value -----------当前区域内某【DNS服务器】的完全合格域名(ns.qhdlink.com.)


  示例:

  qhdlink.com. 86400 IN NS ns1.qhdlink.com.

  qhdlink.com. 86400 IN NS ns2.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  IN NS ns1

  IN NS ns2


(3)、MX记录

 一个域中,可以有多个MX记录,但每个MX记录必须与一条A对应。

  name -------------当前域的域名;

  value ------------当前域中某有效的【邮件服务器】的主机名


 示例:

  qhdlink.com. 86400 IN MX 10 mail1.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  @ IN MX 20 mail2


(4)、A记录

  name --------------域中某主机的FQDN或主机名称

  value --------------与主机名对应的IPv4地址


  示例:

  www.qhdlink.com. 86400 IN A 192.168.1.1

  www.qhdlink.com. 86400 IN A 192.168.1.2

  www.qhdlink.com. 86400 IN A 192.168.1.3

  www.qhdlink.com. 86400 IN A 192.168.1.4


  $ORIGIN qhdlink.com.

  $TTL 86400

  www IN A 192.168.1.1


(5)、CNAME记录

  name -------------别名的FQDN或简单的名称

  value --------------真正的名称的FQDN或其简单名称


  示例:

  web.qhdlink.com. 86400 IN CNAME www.qhdlink.com.


  $ORIGIN qhdlink.com.

  $TTL 86400

  web IN CNAME www


(6)、AAAA记录 -------------与A一致

  name --------------域中某主机的FQDN或主机名称

  value --------------与主机名对应的IPv4地址


  示例:

  ftp.qhdlink.com. 86400 IN AAAA ::1


(7)、PTR记录

  name -----------将IP地址反过来写,再加标准后缀。(1.72.16.172.in-addr.arpa.)

  value --------------域中某主机的FQDN


  示例:

  1.72.16.172.in-addr.arpa. 86400 IN PTR www.qhdlink.com.


  $ORIGIN 16.172.in-addr.arpa.

  $TTL 86400

  1.72 IN PTR www.qhdlink.com.


6、DNS配置(正反向区域配置)

(1)、正向区域配置

  正向区域配置,包括三部分,即:定义区域、创建区域数据文件、重载区域和配置文件。具体解释如下:

  1)、定义区域的方式-----------/etc/named.rfc1912.zones

      zone "ZONE_NAME" IN {

        type {master|slave|forward|hint};

        file "ZONE_NAME.zone";

      };


  例:zone "qhdlink.com" IN {

        type master;

        file "qhdlink.com.zone";

      };

  

  2)、创建区域数据文件 -----------/var/named/qhdlink.com.zone

    在创建区域数据文件时,需要对ZONE_NAME.zone权限进行修改

    # chown :named qhdlink.com.zone 

    # chmod o-r qhdlink.com.zone

  例:

  $ORIGIN qhdlink.com.

  $TTL 86400

  @ IN  SOA ns1.qhdlink.com. admin.qhdlink.com. (

                                2017081001;serial

                                1H;refresh

                                15M;retry

                                1W;expire

                                1D);TTL

    IN NS ns1.qhdlink.com.

    MX 10 mx1.qhdlink.com.

  ns1.qhdlink.com.   IN  A   172.16.72.1

  www   IN  A   172.16.100.1

  www   IN  A   172.16.100.2

  www   IN  A   172.16.100.3

  web   IN  CNAME www

  mx1   IN  A   172.16.100.4


  3)、重载区域和配置文件

    # named-checkconf -----------检测named.conf语法

    # named-checkzone "ZONE_NAME" FILE_NAME ---------检测域名、区域数据库文件语法

    # rndc reload ------------重载配置文件

    # systemctl reload named.service

    # service named reload ------------CentOS6

  

(2)、反向区域配置

  反向区域配置,包括三部分,即:定义区域、创建区域数据文件、重载区域和配置文件。具体解释如下:

  1)、定义区域 -----------------/etc/named.rfc1912.zones

      zone "ZONE_NAME" IN {

        type {master|slave|forward|hint};

        file "ZONE_NAME.zone";

      };


  例:zone "16.172.in-addr.arpa" IN {

        type master;

        file "172.16.zone";

      };


  2)、创建数据库文件 -------------/var/named/172.16.zone

  修改权限:

  # chown :named 172.16.zone 

  # chmod o-r 172.16.zone

  例:

  $ORIGIN 16.172.in-addr.arpa.

  $TTL 86400

  @ IN  SOA ns1.qhdlink.com. admin.qhdlink.com. (

                                2017081001;serial

                                1H;refresh

                                15M;retry

                                1W;expire

                                1D);TTL

    IN NS ns1.qhdlink.com.

  1.72  IN  PTR     ns1.qhdlink.com.

  1.100 IN  PTR     www.qhdlink.com.

  2.100 IN  PTR     www.qhdlink.com.

  3.100 IN  PTR     www.qhdlink.com.

  4.100 IN  PTR     mx1.qhdlink.com.


  3)、重载区域和配置文件

    # named-checkconf -----------检测named.conf语法

    # named-checkzone "ZONE_NAME" FILE_NAME ---------检测域名、区域数据库文件语法

    # rndc reload ------------重载配置文件

    # systemctl reload named.service

    # service named reload ------------CentOS6 


7、DNS配置(主从服务器) --------------区域级别

  配置一个从服务,主要包括两部分,即:定义区域、重载配置文件

(1)、主从服务器定义区域

  zone "ZONE_NAME" IN {

    type slave;

    file "slaves/ZONE_NAME.zone";

    masters { MASTER_IP; };

  };


  例:

  zone "qhdlink.com" IN {

    type slave;

    file "slaves/qhdlink.com.zone";

    masters { 172.16.72.1; };

  };


(2)、重载配置文件

  # named-checkconf

  # rndc reload



二、转发器

1、区域转发、全局转发

  转发器分为两种,即:区域转发、全局转发。区域转发器是针对于某个特定区域的转发,全局转发针对的是没有定义zone的全部区域。

(1)、区域转发 ------------------/etc/named.rfc1912.zones

  例:  

  zone "baidu.com" IN {

    type forward;

    forward {first|only};

    forwarders { 172.16.72.1; };

  };


  forward {first|only}中:

  first:首先转发,当指定的转发器无响应时,再自行迭代

  only:只使用转发器进行转发,不执行自行迭代


(2)、全局转发 -------------------/etc/named.conf

  例:

  options {

    ...

    forward {first|only};

    forwarders { SERVER_IP; };

    ...

  };


2、子域授权

(1)、子域授权

  对子域进行授权,只需在父域的区域文件中直接授权即可。在子域的NS服务器上,直接创建子域的区域文件,管理资源记录。

 例:

  qhdlink.com内容如下:-------------------区域的文件为/var/named/qhdlink.com.zone

   tech.qhdlink.com.   IN  NS  ns.tech.qhdlink.com.

   ns.tech.qhdlink.com. IN A   172.16.69.1

  其子域的授权如下(直接加一个域): ------------------/etc/named.rfc1912.zones

    zone "tech.qhdlink.com" IN {

      type master;

      file "tech.qhdlink.com.zone";

    };


(2)、子域的NS服务器解析父域的资源记录步骤: -------------需定义转发器(子 ---> 父)

  可以通过区域转发和全局转发,使子域能够通过父域的NS服务器,查找父域中的资源记录。区域转发、全局转发的定义如下:

  1)、定义区域转发 ----------------/etc/named.rfc1912.zones

    zone "qhdlink.com" IN {

      type forward;

      forward first;

      forwarders { 172.16.72.1; };

    };

  2)、全局转发 ------------/etc/named.conf

    options {

      ...

      forward first;

      forwarders { 172.16.72.1; };

      ...

    }; 



三、Bind

1、Bind配置文件

 Bind,实现DNS协议的程序,Bind对应的服务器的主程序为named,named使用的是tcp/udp的53号端口。

 Bind的主配置文件为:/etc/named.conf。对于该主配置文件,其注释可以使用单行注释,也可以采用多行注释。同时,该配置文件采用分段配置的方式,其配置文件主要分为6部分,即:访问控制列表段(acl ACL_NAME)、全局选项段(options)、日志配置段(logging)、区域配置段(zone "ZONE_NAME" IN)、视图配置段(view VIEW_NAME)、include包含段(include /PATH/TO/SOME_CONFIG_FILE)。


2、测试工具:dig, host, nslookup

 bind-utils通用工具包中,包含了dig、 host、 nslookup、rndc等测试工具。

(1)、dig命令 ------------DNS查询

  格式:dig [@Server] [-t RR_TYPE] [query_options]

  常用选项:

  @Server -----------此次的查询的DNS服务器,若没有,就读取/etc/resolv.conf中的nameserver配置项

  -t RR_TYPE ----------查询请求的资源记录类型

  +[no]trace ----------跟踪整个解析过程

  +[no]recurse -----------目标DNS服务器递归查询


  # dig -x IPADDR -----------反向解析

  # dig -t axfr DOMAIN_NAME [@Server] ----------模拟区域传送


(2)、host命令

  格式:host [-t RR_TYPE] DOMAIN_NAME SERVER

  常用选项:

  -t RR_TYPE ----------查询请求的资源记录类型 

  DOMAIN_NAME -----------域名 

  SERVER -----------此次的查询的DNS服务器


(3)、nslookup命令 ------DNS查询,多用于windows(交互式)

  > server IP_ADDR ----------DNS服务器的IP地址

  > set q=RR_TYPE ----------资源记录的类型

  > QUERY_NAME -------------------解析的主机名

  > set type=RR_TYPE ----------资源记录的类型


(4)、rndc命令 ----------------远程名称域控制器、DNS服务器端的控制命令,tcp/953

  # rndc status -----------服务器端的运行状态

  # rndc reload -----------服务器端程序重载配置为文件和区域文件


3、bind安全配置,acl访问控制列表

(1)、bind的四个acl访问控制列表,如下:none、any、local、localnet。

(2)、acl语法: ------------使用前,确保已定义

  acl acl_name {

    [!] ip;

    [!] network/prefix;

  };


  例:

  acl mynet {

    172.16.0.0/16;

    127.0.0.1;

    ! 172.16.100.100;

  };


4、定义视图

  view VIEW_NAME {

    match_clients { acl; };

    zone 

    zone

    zone

    ...

  };


视图配置示例:--------------定义视图后,所有zone必须定义如视图内。

view intranet {

  match-clients { mynet; };

  zone "." IN {

    type hint;

    file "named.ca";

  };

  zone "qhdlink.com" IN {

    type master;

    file "qhdlink.com.intra.zone";

    allow-query { mynet; };

    allow-update { none; };

    allow-transfer { none; };

  };

};


view internet {

  match-clients { any; };

  zone "." IN {

    type hint;

    file "named.ca";

  };

  zone "qhdlink.com" IN {

    type master;

    file "qhdlink.com.inter.zone";

    allow-update { none; };

    allow-transfer { none; };

  };

};