DNS and BIND

    Domain Name Server(Syetem、Service)
    Bekerley Internet Name Domain,ISC(www.isc.org)

    协议 C/S架构、udp53和tcp53
    IANA分配域名

    本地名称解析配置文件
    /etc/hosts
    %Windows%/system32/dirvers/etc/hosts
    1.1.1.1 www.qq.com

    Top Level Domain .tld

    三类:组织域、国家域、反向域

    DNS查询类型
        递归查询:一次查询就能得到最终结果(客户端-ISPDNS)
        迭代查询:一次查询需要发起多次查询请求(ISPDNS-目标DNS)

    名称服务器:域内负责本域内名称解析的服务器
        13个根域服务器

    解析类型:
        正向解析:FQDN -->> IP
        反向解析:IP -->> FQDN

        正向解析和反向解析是两个不同的名称空间(解析库),正向是按名称从右到左查询,反向是按ip地址段查询

    DNS服务器的类型:
        主DNS服务器
            维护所负责解析的域域内解析,解析库由管理员维护
        辅助DNS服务器
            从主DNS服务器或者其他的从DNS服务器那里“复制”(区域传递)一份解析库
            序列号:解析库的版本号,前提:主服务器解析库发生变化是,序列号递增
            区域传递:
                第一次全量传递
                后续增量传递
            刷新时间:从服务器想主服务器同步解析库的时间间隔
            重试时长:解析库同步失败重试时间间隔,数值一般小于刷新时间
            过期时长:超过该时长联系不到主服务器时,从服务器停止对外提供dns解析服务
            通知机制:当主服务器解析库发生变化时,通知从服务器过来进行同步
        缓存DNS服务器
        转发器

    解析过程:
        client -- local cache -- hosts -- dns server -- dns server cache -- other dns server
                                    recursion                        iteration

    解析结果:
        肯定答案
            权威解析
            非权威解析
        否定答案
            解析库中没有对应的条目,否定答案也可以缓存,避免重复的无结果查询

    资源记录:Resource Record :RR
        有记录类型:
            A         Internet Address:FQDN -->> IP
            PTR        PoinTeR,IP -->> FQDN
            SOA     Start Of Authority: 起始授权记录,一个区域解析库只有一个SOA记录,必须为解析库的第一条记录
            NS         专用于标明当前区域的dns服务器
            CNAME     Canonical Name:别名记录
            MX         Mail eXchanger:邮件交换器
            AAAA     FQDN -->> IPV6

    资源记录定义格式:
        语法: name [TTL] IN rr_type value
        注意:
            TTL可以全局继承
            @可以引用当前区域的名字
            相邻的两个资源记录name相同时,后续的可以省略
            同一个name可以对应不同的value,但是需要定义多条RR,解析是轮询
            同一个value也可以有多个不同的name

        SOA
            name 当前区域的名字,如:qq.com
            value:
                当前区域的主DNS服务器FQDN,也可以使用当前区域的名字:@
                当前区域管理员的邮箱地址,用.代替@
                (主从我去协调属性,以及否定答案统一的ttl值)

            qq.com. 86400 IN SOA ns.qq.com. admin.qq.com. (
                    2016013101    ;序列号
                    2H            ;刷新时间
                    10M            ;重试时间
                    1W            ;过期时间
                    1D            ;否定答案的过期ttl值
            )

        NS
            name 当前区域的名字
            value 当前区域的某DNS服务器名字,如ns1.qq.com. 一个区域可以有多个ns记录
            每条ns记录都应该在后面有一条对应的A记录

            qq.com. IN NS ns1.qq.com.
            qq.com. IN NS ns2.qq.com.

        MX
            name 当前区域的名字
            value 当前区域的某邮件服务器(smtp)的主机名
                一个区域内可以有多个MX记录,每条记录的value之前要有一个数字表示优先级,数值越小优先级越高
            每条MX记录都应该在后面有一条对应的A记录

            qq.com. IN MX 10 mx1.qq.com.
                    IN MX 20 mx2.qq.com.

        A
            name 某主机的FQDN
            calue 该FQDN对应的ip地址

            www.qq.com. IN A 1.1.1.1
            www.qq.com. IN A 1.1.1.2

            qq.com. IN A 1.1.1.1
            *.qq.com. IN A 1.1.1.5    避免用户给错名称时给出错误的答案,可以通过泛域名解析到指定地址

        AAAA 同A,ipv6地址

        PTR
            name  IP,有特定格式 192.168.1.5 写成5.1.168.192.in-addr.arpa.
                网络地址及后缀可省略
            value FQDN

            5.1.168.192.in-addr.arpa. IN PTR www.qq.com.
            (5 IN PTR www.qq.com.)

        CNAME
            name 别名的FQDN
            value 正式名字的FQDN

            web.qq.com. IN CNAME host.qq.com.

    域名注册:
        代理商:万网、新网、godaddy.com

        注册完成后,去网站上配置dns解析

    BIND的安装配置
        dns服务,程序包名bind,程序名named

        程序包:
            bind         提供服务
            bind-libs     库文件
            bind-utils     工具包,测试工具:dig、host、nslookup、nsupdate

            bind-chroot        将工作限制在/var/named/chroot/目录下

            rpm -qi (查看程序信息)  rpm -ql (查看程序安装到系统上的文件)

        bind
            服务脚本:/etc/rc.d/init.d/named
            主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
                rndc:remote name domain controller,默认与bind一起安装,且只能通过127.0.0.1来连接named进程,提供辅助性管理功能,监听tcp953端口
                全局配置:options{}
                日志子系统配置:logging {}
                区域定义;本机能够为那些zone进行解析
                    zone "zone_name" IN {}
            解析库文件:/var/named/zone_name.zone
                一台服务器可以为多个域进行解析
                必须有根区域文件 named.ca
                应该有两个或更多特殊区域文件,用来解析本地回环地址 named.localhost、named.loopback

            /etc/named.conf
            语法
                每行以 ; 结尾
                {} 中的内容以 ; 结尾
                {} 中内容开头结尾必须有空格,不能挨着括号  { xxx }
                单行注释 //
                多行注释 /*    */

    ####################################################################

    options {
            listen-on port 53 { any; };    //any监听所有ipv4地址
            listen-on-v6 port 53 {  };    //空或者删掉本行不监听ipv6地址
            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; };        //允许哪些客户端查询
            recursion yes;                    //允许递归查询
    //      dnssec-enable yes;                                //dnssec相关
    //      dnssec-validation yes;                            //dnssec相关
    //      dnssec-lookaside auto;                            //dnssec相关
    //                                                        //dnssec相关
    //      /* Path to ISC DLV key */                        //dnssec相关
    //      bindkeys-file "/etc/named.iscdlv.key";            //dnssec相关
    //                                                        //dnssec相关
    //      managed-keys-directory "/var/named/dynamic";    //dnssec相关
    //};                                                    //dnssec相关
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    zone "." IN {
            type hint;
            file "named.ca";
    };
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    zone "zone_name" IN {
        type {master|slave|hit|forward};
        file "zone_name.zone";
    };

    ####################################################################

    vim /var/named/zone_name.zone
    $TTL 86400            定义宏:本解析文件中全局ttl
    $ORIGIN qq.com.        定义宏:本解析文件中全部简写域名后缀
    @    IN     SOA     ns1.qq.com.    admin.qq.com.    (    ;SOA记录
                    20160201001                        ;版本号
                    1H                                ;刷新时间
                    5M                                ;重试时间
                    7D                                ;过期时间
                    1D                                 ;否定答案过期时间
    )
        IN     NS         ns1.qq.com.
        IN     NS         ns1.qq.com.
        IN     MX     10     mx1.qq.com.
        IN     MX     20     mx2.qq.com.
    ns1 IN     A         1.1.1.1        
    ns2 IN     A         1.1.1.2
    mx1 IN     A         1.1.1.3
    mx2 IN     A         1.1.1.4
    www IN     A         1.1.1.5
    *    IN    A         192.168.92.77 (泛域名解析)
    named-checkconf        检查主配置文件语法
    named-checkzone    "qq.com" qq.com.zone     检查解析文件语法
    chmod 640 qq.con.zone
    chgrp named qq.com.zone
    rndc status     查看dns服务器运行状态
    /etc/init.d/named reload     重新加载配置文件
    rndc reload                 重新加载配置文件
    [root@lab named]# rndc status
    version: 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6
    CPUs found: 4
    worker threads: 4
    number of zones: 20
    debug level: 0
    xfers running: 0
    xfers deferred: 0
    soa queries in progress: 0
    query logging is OFF
    recursive clients: 0/0/1000
    tcp clients: 0/100
    server is up and running

    dig [-t type] name [@server] [query option]
        -t type :    A NS MX SOA PTR 等
        @server :     找谁去查,默认找本机配置的dns服务器查
        query option
            +[no]trace     跟踪解析过程
            +[no]recurse     进行递归解析

        dig -t A www.qq.com @127.0.0.1     去127.0.0.1查询www.qq.com的A记录
        dig -x 192.168.92.1 @127.0.0.1

        dig -t axfr qq.com @192.168.92.66     得到全部的资源记录

    host -t A www.qq.com 127.0.0.1     去127.0.0.1查询www.qq.com的A记录

        host -t NS qq.com 127.0.0.1     去127.0.0.1查询qq.com的NS记录

    nslookup [-option] [name | -] [server]

        交互式模式
            server x.x.x.x
            set q=A、NS、PTR、MX
            set q=NS
            www.qq.com

    定义反向区域:
        zone "100.16.172.in-addr.arpa" IN {
            type {master | slave | forward};
            file 172.16.100.zone;
        };

    vim 172.16.100.zone (SOA、NS、PTR)
        $TTL 1D
        $ORIGIN 100.16.172.in-addr.arpa.
        @    IN     SOA     ns1.qq.com.     admin.qq.com. (
                    20160201001
                    1H
                    5M
                    7D
                    1D        )
            IN     NS     ns1.qq.com.
            IN     NS     ns2.qq.com.
        1     IN     PTR mx1.qq.com.
        2     IN     PTR mx2.qq.com.
        3     IN     PTR www.qq.com.
        4     IN     PTR ftp.qq.com.
    [root@lab named]# dig -t axfr qq.com @192.168.92.66
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6 <<>> -t axfr qq.com @192.168.92.66
    ;; global options: +cmd
    qq.com.            86400    IN    SOA    ns.qq.com. admin.qq.com. 2016020201 3600 300 604800 86400
    qq.com.            86400    IN    NS    ns.qq.com.
    qq.com.            86400    IN    MX    10 mx1.qq.com.
    qq.com.            86400    IN    MX    20 mx2.qq.com.
    ftp.qq.com.        86400    IN    CNAME    www.qq.com.
    mx1.qq.com.        86400    IN    A    192.168.92.1
    mx2.qq.com.        86400    IN    A    192.168.92.2
    ns.qq.com.        86400    IN    A    192.168.92.66
    www.qq.com.        86400    IN    A    192.168.92.3
    qq.com.            86400    IN    SOA    ns.qq.com. admin.qq.com. 2016020201 3600 300 604800 86400
    ;; Query time: 1 msec
    ;; SERVER: 192.168.92.66#53(192.168.92.66)
    ;; WHEN: Tue Feb  2 02:28:03 2016
    ;; XFR size: 10 records (messages 1, bytes 245)
    [root@lab named]# dig -t axfr 92.168.192.in-addr.arpa @192.168.92.66
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.6 <<>> -t axfr 92.168.192.in-addr.arpa @192.168.92.66
    ;; global options: +cmd
    92.168.192.in-addr.arpa. 86400    IN    SOA    ns.qq.com. admin.qq.com. 2016020201 3600 300 604800 86400
    92.168.192.in-addr.arpa. 86400    IN    NS    ns.qq.com.
    1.92.168.192.in-addr.arpa. 86400 IN    PTR    mx1.qq.com.
    2.92.168.192.in-addr.arpa. 86400 IN    PTR    mx2.qq.com.
    3.92.168.192.in-addr.arpa. 86400 IN    PTR    www.qq.com.
    3.92.168.192.in-addr.arpa. 86400 IN    PTR    ftp.qq.com.
    66.92.168.192.in-addr.arpa. 86400 IN    PTR    ns.qq.com.
    92.168.192.in-addr.arpa. 86400    IN    SOA    ns.qq.com. admin.qq.com. 2016020201 3600 300 604800 86400
    ;; Query time: 1 msec
    ;; SERVER: 192.168.92.66#53(192.168.92.66)
    ;; WHEN: Tue Feb  2 02:29:55 2016
    ;; XFR size: 8 records (messages 1, bytes 237)