DNS

DNS总结
  DNS是应用层协议
  本地名称解析的配置文件:/etc/hosts
  域名最多有127级
  DNS查询类型:递归查询 , 迭代查询

  解析类型分为正向解析和反向解析:
      域名---> IP
      IP ----> 域名


  DNS服务器的类型分为:主服务器 , 从服务器 , 缓存DNS服务器(转发器)
      主服务器:管理和维护所负责解析的域内解析的服务器。
      从服务器:从主服务器或从服务器“复制”解析库副本。
      序列号:解析库版本号,主服务器解析库变化时,其序列递增
      刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
      重试时间间隔:从服务器请求失败时再次尝试时间间隔
      过期时长:从服务器联系不到主服务器时,多久后停止服务

  区域传输:
      完全传输:传递整个解析库
      增量传输:传递解析库变化的那部分内容。

  DNS解析:
      Client --> host文件 --> DNS service local cache --> DNS server --->server cache --> iteration(迭代) ---> 根 ---> 顶级域名DNS ---> 二级域名DNS
        解析答案:
          肯定答案:
          权威答案
          非权威答案
          否定答案


  资源记录:
      A:internet address 作用:域名---> IP
      AAAA:域名 ---> Ipv6
      PTR:PointTeR IP ---> 域名
      NS:用于表明当前区域的DNS服务器
      CNAME:别名记录
      MX:邮件交换器

  资源记录定义语法:

      语法:name [TTL] IN rr_type value

          TTL可从全局继承
          @可用于引用当前区域的名字
          同一个名字可以通过多条记录电一不同的值;此时DNS服务器会以轮询的方式响应
          同一个值也可能有多个不同的定义名字;通过不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机


  SOA记录:
      name:当前区域的名字 :例如: “magedu.com”
      value: 有多部分组成
    (1)当前区域的主DNS服务器的域名,也可以使用当前区域的名字;
    (2)当前区域管理员的邮箱地址;单地址中不能使用@符号,一般用.替换
        例如;linuxdu.mage.com
      (3)主从服务区域传输相关定义以及否定的答案的统一的TTL

  NS记录:
      一个区域可以有多个NS记录

      相邻两个资源记录的name相同时,后续的可省略
      对NS记录而言,任何一个NS记录的后面的服务器名字,都应该在后续有一个A记录


  MX记录:

      一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小越优先。
      注意:对MX记录而言,任何一个MX记录后面的服务起名字,都应该在后续有一个A记录


  A记录:
      例如:
          www.magedu.com. IN A 1.1.1.1
          $GENERATE 1-254 HOST$ A 1.2.3.$
          *.magedu.com. IN A 5.5.5.5
          magedu.com. IN A 3.3.3.3

  PTR记录:
        name:IP , 有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.

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

  别名记录:
        name:别名的域名
        value:真正名字的域名
        例如:www.magedu.com. IN CNAME websrv.magedu.com.

  DNS的安装:
        程序包:bind unbound
        程序名:named, unbound
        yum list all bind*
        bind: 服务器
        bind-libs:相关库
        bind-utils:客户端
        bind-chroot:/var/named/chroot

  部署magedu.com 正反向解析记录

 1)        [root@centos7 ~]# vim /etc/named.conf
          listen-on port 53 { localhost; };
          allow-query { any; };

          include "/etc/named.magedu.zones";

  

2)        [root@centos7 ~]# cp -p /etc/named.rfc1912.zones /etc/named.magedu.zones
         [root@localhost named]# chgrp named /etc/named.magedu.zones

 

 3)
        [root@centos7 ~]# vim /etc/named.magedu.zones
        zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
        };

        zone "125.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.125.zone";
        };

  

4)
[root@centos7 ~]# cd /var/named/
[root@centos7 named]# cp -p named.localhost magedu.com.zone
[root@centos7 named]# cp -p named.localhost 192.168.125.zone	
5)
    $TTL 1D
    @ 10D IN SOA @ admin (
                  0 ; serial
                  1D ; refresh
                  1H ; retry
                  1W ; expire
                  3H ) ; minimum
           NS     ns1.magedu.com.
   ns1       A     192.168.125.5
   @       A     10.12.11.1
centos6      A      192.168.125.6
www       CNAME     centos6
*.magedu.com  A       8.8.8.9
mail       A       2.2.2.2
$GENERATE 100-200 desktop$   A   172.19.0.$
6)
      [root@centos7 named]# vim 192.168.123.zone         $TTL 1D         @ 10D IN SOA ns1.magedu.com. admin.magedu.com. (                                 0 ; serial                                 1D ; refresh                                 1H ; retry                                 1W ; expire                                 3H ) ; minimum          @           NS   ns1.magedu.com.          7           PTR   ns1.magedu.com.          100           PTR   centos6.magedu.com.

 

7)
    root@centos7 named]# named-checkconf 
    在6中也可以使用 [root@centos6 ~]# /etc/init.d/named configtest
    [root@centos7 named]# named-checkzone magedu.com /var/named/magedu.com.zone 
      zone magedu.com/IN: loaded serial 0
      OK
    [root@centos7 named]# named-checkzone 123.168.192.in-addr.arpa /var/named/192.168.123.zone 
      zone 123.168.192.in-addr.arpa/IN: loaded serial 0
      OK
    root@centos7 named]# rndc reload
    server reload successful
    或
    [root@centos7 named]# systemctl reload named
查询测试:    

     [root@centos6 ~]# dig www.magedu.com @192.168.123.7      [root@centos6 ~]# dig -t soa magedu.com @192.168.123.7      [root@centos6 ~]# dig -t ptr 7.123.168.192.in-addr.arpa. @192.168.123.7       或      [root@centos6 ~]# dig -x 192.168.123.7 @192.168.123.7           注释:               [root@localhost ~]# dig www.baidu.com 查看DNS               [root@localhost ~]# dig -t soa baidu.com 查看序列号               [root@localhost named]# vim magedu.com.zone                       @ 10D IN SOA @ liu.magedu.com. (                                   0 ; serial 序列号                                   1D ; refresh 刷新时间                                   1H ; retry 重试时间                                   1W ; expire 过期时间                                   3H ) ; minimum 否定答案的TTL值

  



  关于缓存:
      LINUX客户端无缓存
      服务端清空缓存 :rndc flush

      WINDOWS客户端
      ipconfig/displaydns 查看缓存
      ipconfig/flushdns 清空缓存

  dig命令:
      dig [-t type] name [@SERVER] [query options]
      dig只用于测试DNS系统,不会查询hosts文件进行解析

  查询选项:dig +trace magedu.com 跟踪解析过程
        dig +[no]recurse magedu.com 进行递归解析

  测试反向解析:
        dig -x IP = dig -t ptr reverseip.in-addr.arpa

  模拟区域传送:
        dig -t axfr ZONE_NAME @SERVER
        dig -t axfr magedu.com @10.10.10.10
        dig -t axfr 125.168.192.in-addr.arpa @172.16.1.1

  host测试命令:
        host -t NS magedu.com 172.18.0.1
        host -t SOA magedu.com
        host 1.2.3.4

  nslookup命令:
    交互式模式:
      nslookup>
      >server IP :指明使用哪个DNS sever 进行查询
      >set q=RR_TYPE :知名查询的紫云记录类型
      >NAME :要查询的名称。

  访问控制指令:
        allow-query {} : 允许查询的主机名单;白名单
        allow-transfer {}: 允许区域传送的主机;白名单
        allow-recusion {}: 允许递归的主机,建议全局使用
        allow-update {} : 允许更新区域数据库中的内容
    例如:[root@localhost ~]# nsupdate
                > server 192.168.125.5
                > zone magedu.com
                > update add ftp.magedu.com 7800 IN A 9.9.9.9
                > send
                > quit

  DNS安全工具bind-chroot的应用:
        centos5: yum -y install bind bind-chroot caching-nameserver
            安装chroot时,会将源目录下的所有conf和zone文件以软连接的方式放到chroot环境,安装后对chroot的改变都应该在chroot下完成。
        centos6:yum -y install bind bind-chroot
            在启动时会将源目录以 mount -o bind 的方式挂载到chroot环境,在关闭时卸载,但不会自动挂载自定义的扩展文件
        centos7:bind bind-chroot
            一旦安装bind-chroot,以后将使用named-chroot.service服务,原始的named.service无效,在启动named时,会将源目录以 mount -o bind 的方式挂载到chroot环境,在关闭时卸载,但不会自动挂载自定义的扩conf展文件



  主从服务器:

   从服务器上:
      [root@localhost chroot]# vim /etc/named.rfc1912.zones
          zone "magedu.com" IN {
          type slave;
          masters { 192.168.125.5; };
          file "slaves/magedu.com.zone";

          };

    如果从服务器想动态更新就得在主服务器上做如下操作:
          在NS记录上加一条从服务器
            NS ns2.magedu.com.
            ns2 A 192.168.125.9
    禁止其他人成为你的辅DNS:
        再主上:vim /var/named/chroot/etc/named.conf
            allow-transfer { 192.168.125.9; };

        在辅上加:vim /var/named/chroot/etc/named.conf
            allow-transfer { none; };

  


  配置子DNS:
    

  在主DNS上的操作:

          $TTL 1D
          @ 10D IN SOA magedu.com. admin.magedu.com. (
                                      3 ; serial
                                      86400 ; refresh (1 day)
                                      3600 ; retry (1 hour)
                                      604800 ; expire (1 week)
                                      10800 ; minimum (3 hours)
                                    )
                        NS       ns1.magedu.com.
            bj           NS       ns2.magedu.com.
            zz           NS       ns3.magedu.com.
            ns1           A       192.168.125.5
            ns2           A       192.168.125.9
            ns3           A       192.168.125.10
          注意主的dnssec需要关闭:
                  dnssec-enable no;
                  dnssec-validation no;

  

  子DNS:

    vim /etc/named.conf
    listen-on port 53 { localhost; };
    allow-query { any; };
  [root@slave1 named]# vim /etc/named.rfc1912.zones

      zone "bj.magedu.com" IN {
      type master;
      file "bj.magedu.com.zone";
    };

  

  转发服务器:
   

 在子域上做:

         forward first;
        forwarders { 192.168.125.5; };
    注意主的dnssec需要关闭:
      dnssec-enable no;
      dnssec-validation no; 
第一种:全局
    在/etc/named.conf 在options中 forwarders { 192.168.123.7; };

第二种:部分域的转发 
    在zone文件中做
        zone "bj.magedu.com" IN {
        type forward;
        forwarders { 192.168.123.8; };
        };

  



  模拟根环境:
    根的配置文件:

       [root@localhost named]# vim /etc/named.rfc1912.zones
            zone "." IN {
            type master;
            file "root.zone";

          };
      删除[root@localhost named]# vim /etc/named.conf 中的"."的zone文件

        vim /var/named/root.zone

              $TTL 1D
                . IN SOA ns. root. (
                                0 ; serial
                                1D ; refresh
                                1H ; retry
                                1W ; expire
                                3H ) ; minimum
                        NS     ns.
              ns.         A     192.168.123.9
              com.        NS     ns.com.
            ns.com.         A     192.168.123.8

  

  com的配置文件:

    vim /etc/named.conf
          dnssec-enable no;
          dnssec-validation no;


      [root@slave1 chroot]# vim /etc/name.rfc1912.zones

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

      [root@slave1 named]# vim com.zone
                    $TTL 1D
                    @ IN SOA @ rname.invalid. (
                                      0 ; serial
                                      1D ; refresh
                                      1H ; retry
                                      1W ; expire
                                      3H ) ; minimum
                           NS       ns.com.
                    ns       A       192.168.125.9
                magedu.com.     NS       magedu.com.
                magedu.com.     A        192.168.125.5

  

  magedu.com的配置文件:

      [root@localhost named]# vim magedu.com.zone

                $TTL 1D
                @ 10D IN SOA magedu.com. admin.magedu.com. (
                                          3 ; serial
                                          86400 ; refresh (1 day)
                                          3600 ; retry (1 hour)
                                          604800 ; expire (1 week)
                                          10800 ; minimum (3 hours)
                                          )
                              NS       ns1.magedu.com.
                              NS       ns2.magedu.com.
                  ns1           A       192.168.125.5
                  ns2           A       192.168.125.9
                  www           A       8.8.8.8



      [root@localhost chroot]# vim //etc/named.magedu.zones
                      zone "magedu.com" IN {
                      type master;
                      file "magedu.com.zone";

                      };
      [root@localhost chroot]# vim /etc/named.conf 
                    allow-query { any; };
                    allow-transfer { 192.168.125.10; };

  

  DNS加密技术:

      1.主DNS生成密钥        

        [root@centos7 ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave

      2.读取密钥文件获得加密字符串,然后生成transfer.key   

        [root@centos7 ~]# vim /etc/transfer.key
                  key "master-slave" {
                  algorithm hmac-md5;
                  secret "CieaJpeOw8zCJq9VDO492g==";
                  };

        并设置权限为440 group为named

  

      3.主DNS配置

      [root@centos7 ~]# vim /etc/named.conf
            include "/etc/transfer.key";
            allow-transfer { key master-slave; };
      重启服务

      4.将transfer.key 发往从DNS,并设置权限为440 group为named

      5.编辑从DNS的配置

      [root@dns10 slaves]# vim /etc/named.conf
            include "/etc/transfer.key";
            server 192.168.123.7 {
            keys { master-slave; };
            };

  

      6.最后重启从DNS的服务 。

  智能DNS:
    首先我们需要定义不懂的acl .

    1)从完整模板中考出view段使用:[root@localhost ~]# cd /usr/share/doc/bind*/sample/

    2)将“.”的zone文件写在:[root@localhost chroot]# vim /etc/named.rfc1912.zones 中。并删除[root@localhost chroot]# vim /etc/named.conf 中的zone文件。

    3) 拷贝 cp -p /etc/named.rfc1912.zones /var/named/chroot/etc/named.zz-magedu.com.zones

        cp -p /etc/named.rfc1912.zones /var/named/chroot/etc/named.bj-magedu.com.zones
      注意:每个zones文件中都要有“.”的zone文件


    4)编辑上边拷贝出来的文件:

            zone "magedu.com" IN {
                          type master;
                          file "zz.magedu.com.zone";

                        };

            zone "magedu.com" IN {
                          type master;
                          file "bj.magedu.com.zone";

                         };

  

     5)拷贝出对应的zone文件,最后重新启动服务即可

  编译安装bind:
        下载软件包
        tar xvf bind-9.11.0a3.tar.gz
        [root@slave2 app]# cd bind-9.12.1/

        编译安装:

            [root@slave2 bind9]# ./configure --prefix=/app/bind9 --sysconfdir=/etc/bind9 --without-openssl


            [root@slave2 bind9]# make -j 2

            [root@slave2 bind9]# make install

        配置相关命令文件:

            [root@slave2 bind9]# vim /etc/profile.d/env.sh
                      export PATH=/app/bind9/bin:/app/bind9/sbin:$PATH
            [root@slave2 bind9]# source /etc/profile.d/env.sh 

              创建/etc/bind9/named.conf 文件:并将权限改为640 所属组为named
            [root@slave2 bind9]# vim named.conf
                  options {
                            directory "/var/named";
                        };
                   zone "." IN {
                            type hint;
                            file "named.ca";
                           };
                   zone "test.com" IN {
                              type master;
                              file "test.com.zone";
                              };

  

      创建用户:
      

          [root@slave2 bind9]# useradd -r -m -d /var/named -s /sbin/nologin named
          [root@slave2 bind9]# cd /var/named/
          [root@slave2 named]# dig -t ns . @172.18.0.1 > named.ca
          [root@slave2 named]# chgrp named named.ca 
          [root@slave2 named]# chmod 640 *

  


      编辑zone文件:

            $TTL 1D
            @ 10D IN SOA ns.test.com. admin.com. (
                                    1 ; serial
                                    86400 ; refresh (1 day)
                                    3600 ; retry (1 hour)
                                    604800 ; expire (1 week)
                                    10800 ; minimum (3 hours)
                                  )
                       NS       ns.test.com.
            ns           A       192.168.125.10
            www          A         7.7.7.7
      启动服务:
            [root@slave2 named]# named -u named -f -g -d 3

  

   压力测试:
      先编译安装软件包:

[root@slave2 ~]# cd /app/bind-9.12.1/contrib/queryperf/
[root@slave2 queryperf]# ./configure 
[root@slave2 queryperf]# make
[root@slave2 queryperf]# ./queryperf -d /app/ceshi.txt

  

猜你喜欢

转载自www.cnblogs.com/sanqianfanhua01/p/8903746.html
DNS