DNS学习总结

    友情提示:文中实验平台vmware 10 + Centos6.6 X86_64,涉及的命令只为实现工作模型,不做为生产服务器配置依据。

    内容概括:

    1.DNS的工作模型

    2.DNS正反解析实现

    3.DNS主从同步

    4.DNS子域授权和简单的安全机制

    5.DNS中view的使用


一.DNS细微知识点

      1.1)DNS: Domain Name Service,是个应用层协议,做域名与IP地址之间互相解析。

              使用UDP53做DNS查询应答

              使用TCP53做DNS服务器间区域文件传送。

       1.2)域名的结构示意图:



wKiom1U5rDajv0xZAAD39YvG0Ek330.jpg

       

      1.3)主机做域名查找的流程:

    Client-->本地host文件---->Local Cache--->(recursion递归)网络运营商DNS Server----->Server Cache ---->(iteration迭代)internet DNS domain name server

    *任一环节找到后停止后面位置查找

    Centos 6.6上 host文件位置:/etc/hosts

    windows上host位置:%WINDOWS%/system32/drivers/etc/hosts

   

      1.4)查找的方式:

    递归查找:recursion,发起域名查找后,必会得到一个明确的答案。

    迭代查找:iteration,发起域名查找后,得到的是个参考答案,还需根据参考答案,查询别的服务器。

      主机和本地运营商提供的DNS服务器之间是 递归查询,一次查询请求发出,得到明确答案。

      运营商DNS代替客户端去查询地址时,先搜索根区域,从全球13台根服务器中选一个最快的,进程查询,例如查找www.51cto.com,  先查找根服务器,根服务器回应让去找.com域名服务器和.com服务器的地址, 运营商DNS再去找.com域名服务器,.com服务器回应让去查找51cto.com域名服务器和51cto.com.域名服务器地址,运营商DNS再去找51cto.com域名服务器,取得www.51cto.com对应的ip地址,并返回给客户端,这就是 迭代查询。


      1.5)域名服务器的合法化

     假设 jx.santan.com 为santan.com域内的一台dns服务器,它若想合法化:

       (1)有个本地互联网运用商提供的可路由的ip地址

       (2)正常工作的提供域名查询的软件和santan.com域的资源文件。

       (3)在上级域名.com服务器中有关于santan.com域的NS记录和A记录(见下面的“DNS子域授权”)。


      1.6)DNS服务器的类型:
    主DNS服务器:维护所负责解析的域内解析库服务器,库文件由管理员维护的。
    辅助DNS服务器:从主DNS服务器或其他的从DNS服务器那里“区域传送”解析库
    缓存DNS服务器:带局域网内主机做DNS查询,将结果暂存在缓存中,便于下次快速查找。


       1.7)DNS服务器维护的资源记录类型:

       资源记录:Resource Record, RR
       记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;

A:internet Address,标明:FQDN对应的IP地址。
AAAA: 标明:FQDN对应的IPV6地址
PTR: PoinTeR,反向记录,标明:IP地址对应的FQDN
NS: Name Server,标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX: Mail eXchanger,邮件交换记录,定义区域内的邮件服务器。

        1.8)提供DNS服务的软件

    软件:bind,

wKioL1U5wCWAZY_TAANkpEACiDQ287.jpg

    

二.DNS正反解析模型的实现

    * 请关闭防火墙和selinux,以下配置仅做为实现DNS工作模型,你不要想的太多。

    wKiom1U5uYTzwqUIAANqo6jq69E600.jpg

    Test01.lijun.com上配置:

    2.1)安装bind软件:

    建议使用yum安装,bind,bind-libs,bind-utils这三个包是必装的。bind-chroot在实验环境下建议不安装。

    2.2)配置文件的设定:

      DNS的配置文件分为主配置文件和区域配置文件,其中主配置文件在/etc/named.conf其中最少应该包含三段信息,分别为根、local和127.0.0.1的配置,区域配置文件存放在/var/name的路径下,每个文件用于指定一个区域,名称要同在/etc/named.conf中配置的一致。

wKiom1U5wk2Tls0fAANsTsd0X5w756.jpg        2.3)区域配置文件的设定:

      bind软件运行后的进程名为named,进程属主为named,所以请注意建立的区域文件的权限和所有组的设定。

wKiom1U5wy2BCLubAAUep4MS6kQ666.jpg

[root@Test01 named]# vim lijun.com.zone        该文件是lijun.com域的正向解析文件

wKioL1U5xziTVPx0AAIMasnmljE730.jpg

[root@Test01 named]# vim 192.168.100.zone     该文件是lijun.com域的反向解析文件

反向解析文件中存在SOA,NS和PTR记录

wKioL1U50l3Tb5vYAAFr_OOPTeA040.jpg

   2.4)启动服务

    动服务前,请使用自带的named-checkzone检查区域文件,使用named-checkconf检查bind的配置文件。

wKioL1U5y1nT_r84AANKlhosSlc172.jpg

2.5)验证配置

wKioL1U50b2ShQtWAAM4rc24GYw581.jpg

三.DNS主从同步模型的实现

     注意: 每个域之能有一台主DNS服务器,从DNS服务器可有多台。

                 主DNS服务器的区域文件由管理员手工维护,从DNS服务器的区域文件从主DNS服务器上通过区域传送过来。当然也可从DNS服务器通过区域传送同步给从DNS服务器。

                 从DNS服务器bind的配置文件中指定的区域文件的名称一定要同主DNS服务器上设定的区域文件的名称一致。

  * 请关闭防火墙和selinux,以下配置仅做为实现DNS工作模型,你不要想的太多。

wKiom1U50UfQ3kfEAANqo6jq69E999.jpg

   3.1)主DNS服务器上添加关于辅助dns服务器的NS和A记录

[root@Test01 named]# vim /var/named/lijun.com.zone 

wKiom1U50iCT3TplAAHyVzaa6_M856.jpg

[root@Test01 named]# vim /var/named/192.168.100.zone

wKioL1U51AjTydOjAAHpb-XNPNU159.jpg


    3.2)辅助DNS的设定

安装bind程序包:

[root@Test02 ~]# yum install bind -y

编写bind主配置文件:

wKioL1U51aygO5YSAADkm-9njlo794.jpg

wKiom1U51YeDwXtfAANZLX9C0GM682.jpg

wKiom1U51fDxTZ9lAAKffNsMd3g478.jpg


    3.3)测试下辅助DNS的解析


wKioL1U5193w91JtAAQ2ZcGje_I591.jpg


   3.5)修改主DNS服务器中设定,观察主辅DNS服务器间传送

wKiom1U51zWzxNdwAAGn3EXZrnc465.jpg


wKiom1U52HWz4Lh7AAJDwZfCYaY085.jpg


wKiom1U52BGQoRvCAAF1dYmvoZE729.jpg


wKioL1U52lHjvT6JAAGNkOwvpfk363.jpg

四.DNS子域授权和简单的安全机制

       在DNS管理方面,通过子域授权,分离父域的工作负担,将子域的工作交给子域DNS服务器去维护,这样可减轻父DNS的压力,同时实现分布式部署DNS,避免因父域DNS服务器或网络故障导致整个域名下DNS的解析故障。

    这里实现的是DNS正向解析的子区授权,反向解析的子域授权没做成功j_0068.gif

    实现步骤:

             1)在父域的主DNS服务器上添加关于子域的NS记录和A记录。

             2)在子域DNS服务器上做好本区域的区域解析

            默认情况下:父域知道子域DNS服务器位置,而子域DNS服务器不知道父域DNS服务器。可以在子域DNS服务器上指定转发的方式,解决这种默认动作。

              3)子域DNS服务器上配置关于父域的指定转发。

                        格式:

                                zone "ZONE_NAME" IN {

                                        type forward;

                                        forward   only | first ;

                                    //在only 和 first中选一个,only表示为只发给下面的forwarders 后的地址,不管它理不理

                                    //first表示先发给下面forwarders 后的地址,它不理我,在去找根迭代解析

                                        forwarders { father-zone-name-ns-ip; };

                                    // 这是指明父域ns的IP地址

                            };

               4)本次实验中添加DNS简单的安全机制

                  allow-query {}; //指明解释查询的地址范围,这是个白名单

                  allow-transfer {}:允许区域传送的主机,也就是填写从DNS地址的;白名单;
                  allow-recursion {}: 允许递归的主机,DNS服务器应对所属区域下的主机做递归查询,其它的不做递归询;
                  allow-update {}: 允许更新区域数据库中的内容,这个不应允许任何的主机做该操作;

                5)DNS中做地址范围匹配,定义好后在配置文件中可被多次调用:

                    注意:只能先定义后使用,一般在配置文件最开始的地方,一般放置在option中。

                    格式:

                    acl acl_name {
                                ip;
                                ip;
                                net/prelen;
                        };

                例如:

                         acl dg {
                                  192.168.100.0/24;
                                   127.0.0.0/8;
                                };

                      bind有四个内置的acl:
                                none: 没有一个主机;
                                any: 任意主机;
                                local: 本机;
                                localnet: 本机的IP同掩码运算后得到的网络地址;              

    实验场景:L公司的lijun.com.域下,建立zhuzao.lijun.com.子域名给下属分公司使用,要求:父域服务器可对子域内主机域名的解析,子域DNS服务器可解析父域内主机域名的解析。

   * 请关闭防火墙和selinux,以下配置仅做为实现DNS工作模型,你不要想的太多。wKiom1U8mkqihYNGAAOY14xV3Uw753.jpg       

父域主DNS服务器Test01上:

1)yum安装bind程序包,见上,再次不重复。

2)设定配置文件和区域解析文件

wKioL1U8rX-y1RJ4AAPfWQKlt-U762.jpg


wKioL1U8oP-DxjpnAAIBkD8-Ofk752.jpg


[root@Test01 named]# vim lijun.com.zone

wKiom1U8oYCQGzWoAALYACZOl3s388.jpg

wKiom1U8rGXDnevBAABrjZbfrB4478.jpg


wKiom1U8oqnyppcKAAPYn9CxW5Y031.jpg


子域主DNS服务器Test02上:

1)yum 安装bind略

2)配置主配置文件/etc/named.conf

wKiom1U8qKOBnMtEAASCImFlWR0204.jpg

3)建立区域解析文件:

wKioL1U8pkXQ1vAHAAGqtrAn-rg102.jpg

wKioL1U8qkrjXEIEAAFvcB8sEWc796.jpg

wKioL1U8p1zCCuRXAALELCi1n-w788.jpg

wKioL1U8qC7hojHWAARsQPbcSE0740.jpg

wKioL1U8qQqSRxrPAAS4H685kbs619.jpg


在父区域上测试对子区域的解析:

wKioL1U8rnmwBhKeAAPbBfH4xLY290.jpg


五:DNS中view的使用:

    大家都知道在我们天朝,网络运营商是各自为营的,虽有中间的互通网络,但是面对汹涌的用户数据流,那点中间网络带宽瞬时会被占满,带来就是用户体验的不好,尤其是游戏运营,电商特注意用户体验。

    解决方式:1)在不同省份不同的运营商机房中分别配置服务器。2)将服务器放置于双线机房。使用智能DNS,根据用户来源网络运营商地址的不同,对相同域名的解析给出各自运营商网络主机的地址。 借用下面的图:都是对WWW.XBAO.COM这个域名的请求,因客户来源不同的运营商,那么中间的DNS主机,会智能进行判断,X信的用户给予的解析地址为10.100.100.1,而X通的用户得到的解析地址为192.168.1.100,虽然客户请求解析的地址都是www.xbao.com。

     当然要保证各个运营商服务器上网站内容一致性还需使用CDN技术,这就超出本文的内容范围。  

    中间DNS服务器要达到上述的效果可以使用bind的view技术来实现,下面就是实验过程。

    view要点:

            1)一个bind服务器可定义多个view,每个view中可定义一个或多个zone;
            2)每个view用acl定义的地址来匹配一组客户端;
            3)多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;
            4) 一旦启用了view,所有的zone都只能定义在view中;
            5)只在匹配允许递归请求的客户所在view中定义根区域;
            6)客户端请求到达时,是自上而下检查每个view所服务的客户端列表;先匹配的先处理,后续的就停止不再做匹配动作。

    view格式:

               view VIEW_NAME {

                match-clients {  ACL-NAME };
                zone "zone-name" IN {

                        ....

                };

                    ....

              };

  * 请关闭防火墙和selinux,以下配置仅做为实现DNS工作模型,你不要想的太多。

wKioL1U8sUqwpSudAAZhuyGF6Ls635.jpg


1)中间DNS服务器配置网络和安装BIND软件:

wKiom1U8uL6RpG_FAAFsfclQR_w901.jpg


wKioL1U8utrQoWqdAAWeL5Bx5xE387.jpg

2)安装bind并配置文件:

wKioL1U8uyzTtSmGAABjq6u4xX4893.jpg

wKiom1U8ueaBQTr0AADhVDz1yaA980.jpg


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

wKioL1U8yFGioeZoAAK9dixj7EU603.jpg

局部配置文件:/etc/named.rfc1912.zones

wKiom1U8wJbA48i9AAJi7mJU1sE301.jpg

wKioL1U8wofh82kUAAKFZZpDmcM137.jpg

3)定义区域解析文件:

wKioL1U8wz7CbTGiAAHVS7_7-iM998.jpg


wKiom1U8xBGhKqIYAAEbt26Zftc581.jpg

wKioL1U8xZHxW3-rAAEvimca5jk781.jpg


wKiom1U8xHqRmdp4AAGe7esF_wA924.jpg

4)测试机测试:

wKiom1U8x9nx15fuAAGebNJewqk497.jpg


另一台测试机地址

wKiom1U8yCnCd1OHAACTRq39Txk790.jpg


wKioL1U8ygfCrtxJAAE0oOFrqMA777.jpg


终于写完了!!






你可能感兴趣的:(dns,recursion)