DNS and Bind

DNS  :  工作在应用层 

DNS 作用 :  完成域名到IP的解析过程  FQDN --> IP   

        例如  :  www.ifeng.com  -->  123.103.122.24

DNS 查询方式: 

        1. 迭代查询

                   由DNS服务器通过层层查询得到结果的过程称为迭代查询

        2. 递归查询

                   客户机向服务器请求,返回结果的过程称为递归查询

DNS 工作过程:

        1. 客户机通过自身host 文件 及 DNS 缓存查找解析记录;

扫描二维码关注公众号,回复: 9196466 查看本文章

        2. 客户机将解析请求发送给指定的 DNS 服务器,例:114.114.114.114

        3. DNS服务器通过层层查找得到解析地址

        4. DNS服务器将得到的解析地址缓存到自身DNS cache中 ,并发送给客户机

        5. 客户将结果放入DNS cache ,并使用

     

DNS 服务器资源解析记录类型:

        SOA   : 起始解析记录,写在区域解析库文件的第一行

        NS     : ns 解析记录 ,可以有多个

        MX    :  邮件交换器解析记录

        A       :  正向解析

        AAAA :  正向解析(IPV6)

        PTR   :  反向解析

        CNAME  : 别名解析

资源解析记录库配置格式:

       name      [TTL]      IN     RR_TYPE    value    

        SOA :     1. 当前区域的名称

                       2. 当前区域管理员的邮箱地址

                       3. 配置与从属服务器协商内容

                                   协商内容: 序列号 (从服务器通过序列号的变更从主服务器更新资源库,如初始序列号为1,每更新一次资源库加1);

                                                      刷新间隔: 从服务器多久从主服务器更新资源库;

                 重传间隔 : 从服务器无法从主服务器更新资源库后,重试时间间隔;

                    过期时间 : 从服务器无法联系主服务器多久之后放弃从主服务器同步数据,并停止服务;

                 否定答案的缓存时常: 客户机获取否定答案(无法解析)后,将该答案缓存在本机的时常

                       示例:  ifeng.com.    86400    IN   SOA   ifeng.com.     admin.ifeng.com.   (

                                                                                  10;serial   (定义序列号)

                                                                                   2H;refresh    (定义刷新间隔)

                         20M;retry    (定义重传间隔)

                         1W;expire    (定义过期时间)

                          1D;negative answer ttl     (定义否定答案的缓存时常)

                                                                                    )

                                        注:在解析库中@表示DNS主机区域名,因此邮件中的@用.代替,为 admin.ifeng.com

        NS   :   name  : 区域名称     (一个区域中可以有多个NS记录)

                    value  :  区域内某DNS服务器的名称

                    示例;  

                                 ifeng.com.   86400   IN   NS   ns1.ifeng.com.

  MX  :   name :  区域名称  (一个区域内可以有多个MX记录, value之前用优先级标识,1~99,越低越优先)

                   value  :  区域内邮件交换器的名称

                   示例:

                                 ifeng.com.   86400   IN   MX   mx1.ifeng.com.

  A    :  name  : 某 FQDN ,  例如 www.ifeng.com

                 value : FQDN 对应的 ip 地址

                  示例:

                               www.ifeng.com.    86400   IN   A   192.168.1.1

  AAAA :   name : 某 FQDN 

                      value  : FQDN对应的 IPV6地址

  PTR  : name:IP地址,有特定格式,反过来写,加特定后缀:   例如:ip为 1.2.3.4 的记录应该写为 4.3.2.1.in-addr-arpa. 

                   value  : FQDN 

                  示例:

               4.3.2.1.in-addr-arpa.   IN   PTR   web.ifeng.com

  CNAME  : name: FQDN格式的名字

         value : FQDN  格式的正式名字

        示例:

           web.ifeng.com   IN   CNAME   www.ifeng.com

 

                 

            注意:  NS,MX  等记录的value为fqdn,该fqdn应该有一个A记录

实战:  配置一个正向解析 DNS 服务器:

(1) 安装 DNS 服务程序

        yum install bind    (主DNS程序)

        yum instal bind-utils  (DNS程序辅助工具)

(2) 修改主配置文件及添加解析区域;

  vim /etc/named.conf

    option {

           listen-on port 53 { 192.168.8.16; };     (监听地址为服务器网卡外网地址)

           。。。

           allow-query     { any; };                            (允许请求改为  any )

          };       

          dnssec-enable no;
          dnssec-validation no;             (关闭DNS校验)

         保存退出

         

         vim /etc/named.rfc1912.zones      (在文件尾部添加解析区域)

  zone "ifeng.com" IN {                      (此处以区域 ifeng.com 为例)
  type master;
  file "ifeng.com.zone";            (定义区域解析库文件名)
  };

        保存退出

(3)  添加资源解析库文件及修改DNS

  cd /var/named/

        vim ifeng.com.zone        (文件名与区域中定义文件名一致)      

  $TTL 1D             (在新文件中写以下内容,@会自动替换为区域名称,此处自动替换为 ifeng.com)
  @    IN    SOA    ns1.ifeng.com.   admin.ifeng.com (
        10
        2H
        10M
        1W
        1D
        )
  @   IN    NS    ns1.ifeng.com.                  (ns解析记录)
  @   IN   MX   10 mx1.ifeng.com.               (邮件交换器解析记录)
  ns1.ifeng.com.   IN    A    192.168.8.16
  mx1.ifeng.com.    IN    A   192.168.8.17              
  www.ifeng.com.   IN   A    192.168.8.16     (正向解析记录  FQDN --> IP)
  bbs.ifeng.com.   IN   A    192.168.8.17     (正向解析记录)

       保存退出

       vim /etc/resolv.conf   

        nameserver 192.168.8.16   (将DNS修改为服务器自身IP地址)

        保存退出

(4) 修改文件权限 ,确保文件不被其用户修改

           chgrp named /var/named/ifeng.com.zone

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

          

(5) 重载配置文件 及启动服务

          systemctl start named    

          systemctl enable named

          rndc reload     (重载配置文件)

          systemctl reload named    (重载配置文件)

(6)  测试  

       dig -t A www.ifeng.com 

    dig  -t A www.baidu.com 

      (修改其他主机DNS指向服务器端,测试是否可以递归解析)

实战: 配置反向 DNS 解析区域

(1)  添加反向解析区域

        vim /etc/named.rfc1912.zones     

  zone "8.168.192.in-addr.arpa" IN {           ( ip 解析区域为反向,此处需要解析区域为 192.168.8.1~254 ,则区域名称为 8.168.192.in-addr.arpa)
  type master;
  file "192.168.8.in-addr-arpa.zone";          (定义区域解析库文件名)
  };

(2)  添加反向解析区域库文件

           cd /var/named/ 

           vim 192.168.8.in-addr-arpa.zone

          

  $TTL 3600
  $ORIGIN 8.168.192.in-addr.arpa.        (表示自动补全内容,如下输入16 通过自动补全为 16.8.168.192.in-addr.arpa. ) 
  @   IN   SOA   ns1.ifeng.com    admin.ifeng.com (
        10
        2H
        10M
        1W
        1D
        )
  @   IN   NS   ns1.ifeng.com.
  16    IN   PTR    www.ifeng.com.
  17   IN    PTR    mx1.ifeng.com.
  18   IN    PTR    bbs.ifeng.com.
  16    IN    PTR    ns1.ifeng.com.

           保存退出

(3)  检查配置文件 :

       named-checkconf      (检查主配置文件)

       named-checkzone 8.168.192.in-addr.arpa  /var/named/192.168.8.in-addr-arpa.zone  (检查区域配置文件)

(4) 修改文件权限

     chgrp named /var/named/ifeng.com.zone

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

(5) 重载 配置文件

   rndc reload 

           systemctl reload named 

(6)  测试  

           dig -x 192.168.8.17  

实战: 主从服务器配置

      从服务器配置; 

(1) 安装DNS服务程序; 

  yum install bind 

     yum install bind-utils

(2) 添加解析区域及修改主配置文件

         vim /etc/named.rfc1912.zones

         在文件尾部添加以下行:   

  zone "ifeng.com" IN {
  type slave;                                   (定义区域类型为 slave,从服务器)
  file "slaves/ifeng.com.zone";           (定义区域解析库文件路径,无需创建,从主服务器同步)
  masters { 192.168.8.16; };                (定义主服务器地址)
  };

     保存退出

  vim /etc/named.conf     

  options {
  listen-on port 53 { 192.168.8.17; };          (修改监控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 { any; };        (允许DNS请求,any为所有

        

  recursion yes;      (是否为客户机进行递归查询,此处为允许,  no 为不进行递归查询)

  dnssec-enable no;           (关闭dnssec ,DNS校验)
  dnssec-validation no;         

       保存退出

(3) 启动named服务并重载配置文件

          systemctl start named 

          rndc reload 

          systemctl status named   (查看服务状态)

    主服务器配置 

(1) 添加从服务器ns记录  

          vim /var/named/ifeng.com.zone    (修改主资源解析库文件)

          @    IN   NS   ns2.ifeng.com       (添加从服务器ns2记录)

          ns2.ifeng.com   IN  A    192.168.8.17          (添加从服务器正向解析记录)

(2)  重载配置文件  (主,从服务器都需重载)

          rndc reload    

 (3) 测试从服务器 

            dig -t A www.ifeng.com @192.168.8.17 

实战: 子域委派配置

 (1) 主DNS服务器配置

           vim /var/named/ifeng.com.zone    (编辑正向解析库文件)

           添加行: 

    ops.ifeng.com.  IN      NS      ns1.ops.ifeng.com.     (添加子域ns解析记录)

       ns1.ops.ifeng.com.      IN      A       192.168.8.18      (添加子域A记录)

            保存退出  (注:序列号加1,重载配置文件)

(2)   委派服务器配置

  (2.1)        安装bind ,bind-utils  及修改主配置文件

           yum install bind   yum install bind-utils 

           vim /etc/named.conf

           listen-on port 53 { 192.168.8.18; 127.0.0.1; };            (设置监听地址为外网地址)

            allow-query     { any; };           (允许所有请求)

       dnssec-enable no;              (关闭DNS 校验)

       dnssec-validation no; 

            保存退出

   (2.2) 添加解析区域,及区域配置文件

          vim /etc/named.rfc1912.zones

          文件尾部添加行:

  zone "ops.ifeng.com" IN {
  type master;
  file "ops.ifeng.com.zone";
  };

       保存退出

       vim  /var/named/ops.ifeng.com.zone  (编辑新解析库文件)

  $TTL 3600
  $ORIGIN ops.ifeng.com.
  @    IN    SOA   ns1.ops.ifeng.com   admin.ops.ifeng.com (
    10
    2H
    10M
    1W
    1D
    )
  @   IN    NS   ns1.ops.ifeng.com.
  ns1   IN    A    192.168.8.18
  www   IN  A 1  92.168.8.17
  bbs   IN   A    192.168.8.18
  max    IN   A   192.168.8.16

             保存退出

(2.3) 检查文件及启动程序重载配置文件

          named-checkconf

   named-checkzone ops.ifeng.com   /var/named/ops.ifeng.com.zone

   

          systemctl start named

     rndc reload    

  

   (2.4)   测试

         dig -t A www.ops.ifeng.com 

实战:定义转发域: 

          

  (1)区域转发,只把对某个区域的请求转发给指定的服务器
  zone "ZONE_NAME" IN {
  type forward;
  forward {first|only}
  forwarders { server_ip; };
  };

  first : 首先转发;转发器不响应时自行去迭代查询;
  only : 只转发
  server_ip 可以有多个


  示例: /etc/named.rfc1912.zones
  zone "ifeng.com" IN {
  type forward;
  forward only
  forwarders { 172.16.100.67; };
  };


(2)全局转发,只要不是自己服务器定义的区域请求都转发给指定的服务器

  /etc/named.conf

  option {

  添加行:

  forwarders { 172.16.199.67; }; (只要自己无法解析,通通转发)
  };

实战:DNS  acl   配置: 

          

访问控制指令:
  allow-query {} :允许查询的主机(白名单)
  allow-transfer {} :允许向哪些区域做区域传送;默认为向所有主机;应该配置仅允许从服务器
  allow-recursion {} :允许哪些主机通过本主机递归查询
  allow-update {} ;DDNS ,允许动态更新区域数据库文件中内容;(一般不允许更新)

    

  BIND 有四个内置的alc
  none :没有一个主机
  any : 任意主机
  local : 本机
  localnet :本机所在的ip所属的网络;

     示例 : 定义 acl ,仅允许指定的主机查询

          vim  /etc/named.conf

          添加行:

          acl   control {

            192.168.8.0/24;                (设置允许网段

          };

          

            option    {

             ...

             allow-query  {  control; };      (修改改行,调用 acl控制)

            };  

            保存退出    

   测试: 仅允许 192.168.8.0/24 网段进行解析请求)

            

    

猜你喜欢

转载自www.cnblogs.com/qingfengguoke/p/12309453.html