我们不能失去信仰

我们在这个世界上不停地奔跑...

0%

DNS配置实践

DNS

解析类型:
Name –>ip
Ip –> Name

注意: 正方向解析是连个不同的名称空间,是两颗不同的解析树

DNS服务器类型:
主DNS服务器
辅助DNS服务器
缓存DNS服务器
转发器

主DNS服务器: 维护所负责解析的域内解析库服务器,解析库由管理维护
从DNS服务器: 从主服务器或其他服务器那里”复制“(区域传递)一份解析库
    序列号: 解析库的版本号,前提,主服务器解析库内容发生变化,器序列递增
    刷新时间间隔: 从服务器从主服务器请求同步解析库的时间间隔
    重试时间间隔: 从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔
    过期时长: 从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务

    ”通知“机制避免了从服务器在某些时间总是落后主服务器的情况


区域传送:
    全量传递:传递整个解析库
    增量传递:传递解析库变化的哪部分内容

DNS:
Domain:
正向:FQDN–> IP
反向:IP–> FQDN

    各需要一个解析库来分别负责本地域名的正向和反向解析
        正向区域
        反向区域

FQDN:Full Qualitfied DOmain Name
    www.enjoyms.com.

一次完整的查询请求经过的流程:
Client –> hosts文件 –> DNS Service
Local Cache –> DNS Server –> Server Cache –> iteration(迭代)———>

解析答案:
    肯定答案
    否定答案:请求的条目不存在等原因导致无法返回结果

    权威答案
    非权威答案

区域解析库:由众多RR组成
资源记录: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 eXchange,邮件交换器

资源记录定义的格式:
语法:name [TTL] IN rr_type value

注意:
    (1)TTL可以全局继承
    (2)@可用于引用当前区域的名字
    (3)同一个名字可以有多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应
    (4)同一个值也可能有多个不同的名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机,仅此而已。
SOA:
    name: 当前区域的名字,例如”enjoyms.com"
    value:有多部分组成
        (1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
        (2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如aaa.gmail.com
        (3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
    例如:
    enjoyms.com.     86400   IN SOA   ns.enjoyms.com  admin.enjoyms.com.  (
                    2017042201 ; 序列号
                    2H         ;刷新时间
                    10M        ;重试时间
                    1W         ;过期时间
                    1D         ;否定答案的TTL值

    )

    NS: 当前区域的名字
    value:当前区域的某DNS服务器的名字,例如ns.enjoyms.com.
        注意:一个区域可以有多个NS记录

    例如:
    enjoyms.com.   IN   NS   ns1.enjoyms.com.
    enjoyms.com.   IN   NS   ns2.enjoyms.com.

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

    MX:
        name:当前区域的名字
        value:当前区域的某邮件服务器(smtp服务器)的主机名
            一个区域内,MX记录可有多个,value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小,优先级越高
        例如:
        enjoyms.com.     IN  MX  10  mx1.enjoyms.com.
                         IN  MX  20  mx2.enjoyms.com.
    注意:
        (1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该有一个A记录

    A:
        name:某主机的FQDN,例如:www.enjoyms.com.
        value:主机名对应的IP地址

        例如:
            www.enjoyms.com.   IN   A    1.1.1.1
            www.enjoyms.com.   IN   A    1.1.1.2

        注意:
            *.enjoyms.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. 所以完整写法为: 4.3.2.1.in-addra.arpa.
                        value:FQDN

        例如:
        4.3.2.1.in-addr.arpa.   IN  PTR www.enjoyms.com
        简写:
        4   IN  PTR www.enjoyms.com
        注意:网路地址及后缀可省略:主机地址依然需要反着写

    CNAME:
        name:别名的FQDN
        value:正工名的FQDN
        例如:
            web.enjoyms.com     IN      CNAME       www.enjoyms.com

复习:dns服务系统的基础知识、DNS资源记录定义的方法

    dns:udp,tcp名称解析服务,53/udp,53/tcp

    查询:
        递归查询(只发出一次请求,得到最终答案)、迭代查询(通过发多次请求)
    解析:正向、反向
        权威:非权威

    主、从DNS服务器,区域传送
        全量传送
        增量传送

        SOA:
            序列号、刷新时间、重试时间、过期时间、否定的应答TTL:
            H,D,M,W

    BIND:
        RR类型:A,AAAA,PTR,NS,MX,CNAME,SOA,AAAA

DNS and BIND(2)
子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
类似根域授权tld:
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2

enjoyms.com.  在.com的名称服务器上,解析库中添加资源记录
    enjoyms.com.    IN      NS      ns1.enjoyms.com.
    enjoyms.com.    IN      NS      ns2.enjoyms.com.
    enjoyms.com.    IN      NS      ns3.enjoyms.com.
    ns1.enjoyms.com     IN      A   3.3.3.1
    ns2.enjoyms.com     IN      A   3.3.3.2    
    ns3.enjoyms.com     IN      A   3.3.3.3

glue record:粘合记录


主配置文件:
    全局配置: OPTIONS{}
    日志子系统配置:logging{}
    区域定义: 


测试命令:dig的使用
    dig [-t type] name [@SERVER] [query options]

    dig 用于测试dns系统,因此,不会查询hosts文件进行解析

    查询选项:

        +[no]trace :跟踪解析过程
        +[no]recurse:进行递归解析
    测试反向解析:
        dig -x IP @SERVER
    模拟区域传送:
        dig -t axfr ZONE_NAME @SERVER

    host命令:
        host [-t type] name [SERVER]
        nslookup [-option] [name] -] [server]
        交互式模式:
            nslookup>
                server IP: 致命使用哪个DNS进行查询
                set q=RR_type:指明资源的查询记录类型
                NAME: 要查询的名称


反向区域:

    区域名称:网络地址反写   .in-addr.arpa.
    172.16.100.--> 100.16.172.in-addr.arpa.

主从复制:
    1、应该为一台独立的名称服务器
    2、主服务器的区域解析文件中必须有一条NS记录是指向从服务器
    3、从服务器只需要定义区域,而无需提供解析库文件,解析库文件应该放置于/var/named/slaves/目录中
    4、主服务器得允许从服务器作区域传送
    5、主从服务器时间应该同步,可通过ntp进行
    6、bind程序的版本应该保持一致,否则从高主低


    定义从区域的方法:
        zone "ZONE_NAME" IN{
            type slave;
            masters {MASTER_IP};
            file "slaves/ZONE_NAME.zone";

        }


rndc:
    rndc  --> rndc (953/tcp)

    rndc COMMADN

    COMMADN:
        reload:重载主配置文件和区域解析文件
        reload zone:重载区域解析库文件
        retransfer zone:手动启动区域传送过程,而不管序列号是否增加
        notify zone:重新对区域传送发通知
        reconfig:重载主配置文件
        querylog:开启或关闭查询日志(出于定位错误时候启用,否则影响性能)
        trace : 递增debug级别
        trace LEVEL :指定使用的级别


复习:bind的安装配置,测试工具、正向解析区域、反向解析区域、主从同步
    bind安装:bind,bind-libs,bind-utils

    正向解析区域:
        (1)zone “ZONE_NAME" IN {
            type master;
            file "ZONE_NAME.zone";
        };

         (2) 区域解析库文件
            SOA,NS,MX,A,CNAME

    反向解析区域:
        (1) zone ”reverse_Net_Addr.in-addr.arpa" IN {
            type master;
            file "SOMEFILE.zone";
        }
        (2) 区域解析库(一个单独的文件)
            SOA,NS,PTR

    测试工具:dig,host,nslookup

    主从同步:
        主服务器:授权允许同步
            (1)NS记录
            (2)授权允许区域传送
        从服务器:
            (1)只需定义区域:


DNS and BIND(3)

子域授权:分布式数据库

正向解析区域子域方法:

    定义一个子区域:
        ops.enjoyms.com.    IN      NS      ns1.ops.enjoyms.com
        ops.enjoyms.com.    IN      NS      ns2.ops.enjoyms.com        
        ns1.ops.enjoyms.com.    IN      A       1.1.1.1
        ns2.ops.enjoyms.com.    IN      A       1.1.1.2


    定义转发服务器
        注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行

        (1)全部转发:凡是非本机所负责解析的区域请求,统统转发给指定的服务器:
                Options {
                    forward
                    forwarders
                }
        (2)区域转发:仅转发对特定的区域的请求至某服务器:
                zone “ZONE_NAME" IN {
                    type forward;
                    forward {first |only)
                    forwarders { SEVER_IP; }
                }
            注意: 关闭dnssec功能:
                dnssec-enable no;
                dnssec=validation no;

    bind中基础的安全相关的配置
        acl:把一个或多个主机归并为一个集合,并通过一个统一的名称调用;
            acl acl——name P{
                ip;
                ip;
                net/prelen;
            };

            示例:
                acl mynet {
                    172.16.0.0、16;
                }

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

                注意:只能先定义,后使用,因此,其一般定义在配置文件中options的前面

            访问控制的指令:
                allow-query {}: 允许查询的主机,白名单
                allow-transfer {}: 允许区域传送的主机,白名单
                allow-recursion {}: 允许递归的主机
                allow-update {}: 允许更新区域数据库内容,为了安全,不允许任何人更新


            bind view:
                视图:
                    一个bind服务器可以定义多个view,每个view中可以定义一个或者多个zone
                    每个view用来匹配一组客户端
                    多个view内可能需要对同一个区域进行解析,但是用不同的区域库解析文件

                    view VIEW_NAME {
                        match-clients {};
                    }

                    注意:
                        (1)一旦启用了view,所有的zone都只能定义在view中