配置DNS服务器(BIND程序;named进程)

 client配置

client配置:/etc/hosts;/etc/resolv.conf;/etc/nsswitch.conf
========================================================================================================
/etc/hosts :这个是最早的 hostname 对应 IP 的档案;

/etc/resolv.conf :记录DNS服务器IP的文件,是实时生效的;
    #这里配置的DNS是主备关系,只要主dns正常,就一直使用主dns;不要配置过多的dns,因为客户端会逐台进行尝试,若为本地网络问题,那么就需要经历N台的超时时间。。

/etc/nsswitch.conf:这个文件的配置决定 /etc/hosts 还是 /etc/resolv.conf 优先生效。
    [root@www ~]# vim /etc/nsswitch.conf
    hosts:      files dns           #file在前,所以hosts优先


使用dhcp获取IP的话,dhcp服务器同时也会进行dns的设置;
    若想要在本地设置,则要在 /etc/sysconfig/network-scripts/ifcfg-eth0 等相关档案内,增加一行:『PEERDNS=no』;
    否则在本地修改了dns,也会被dhcp 复原。
client配置:/etc/hosts;/etc/resolv.conf;/etc/nsswitch.conf

DNS概述

DNS概述;DNS架构和TLD(一级域);FQDN;授权与分层负责
======================================================================================================
domain name server :域名解析服务
    实现的软件:bind、dnsmasq、PowerDNS (本文的总结以bind为基础,bind软件对应named进程)
    协议+端口:(cat /etc/services)
        TCP 53/UDP 53 ---实现域名解析
        TCP 953 /UDP 953 ---实现rndc管理【rndc control sockets (BIND 9)】,主从DNS同步

------------------------------------------------------------------------------------------------------
DNS架构和TLD

    组织类域架构(国家类域的架构基本相同,但需要多一层国家码ccTLD)
    根域:"."  (称为 root)
    一级域:顶级域Top Level Domains (TLDs)---顶级域需要向root (.) 注册领域名查询授权
    二级域:---###一般是公司or个人向顶级域申请###
    ...
    底层:主机名

    常见的一级域:
        组织类域 (Generic TLDs, gTLD):例如 .com, .org, .gov 等等
        国家类域 (Country code TLDs, ccTLD):例如 .tw, .uk, .jp, .cn 等
        反向域 .in-addr.arpa

------------------------------------------------------------------------------------------------------
完整主机名: Fully Qualified Domain Name (FQDN):全网唯一表示一个主机的方式
    DNS 是以树状目录分阶层的方式来处理主机名
    格式:主机名.二级域.一级域.;主机名.三级域.二级域.一级域.    #注意:FQDN是以"."结尾的!
    实例:www.baidu.com.;www.baidu.com.cn.
    
------------------------------------------------------------------------------------------------------
授权与分层负责
    每一级域名都需要向上层域申请授权,
    例如 :".cn" 需要向 "."申请授权,即注册;"com.cn"需要向"cn."申请授权
    反过来说,只有注册授权了,那么在迭代查询过程中,这种域名管理服务器才可以查询到你的存在,进行正确地迭代

    每一个域名其实对应了一台or多台主机,这些关机管理子域的域名和主机
        每个上一层的 DNS 服务器所记录的信息,其实只有其下一层的主机名
DNS概述;DNS架构和TLD(一级域);FQDN;授权与分层负责

 

DNS 查询主机名 IP 的流程:递归、迭代;正向解析、反向解析
=========================================================================================================
DNS 查询主机名 IP 的流程
    DNS解析流程分为递归查询和迭代查询,
        递归查询是以本地名称服务器为中心查询,递归查询是默认方式,
        迭代查询是以DNS客户端,也就是客户机器为中心查询。
    DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代

    递归recursion:递归请求只会发起一次,然后等待最终的结果;例如家庭网络,PC向家庭路由器发起的就是递归请求;家庭路由器向运营商dns发起的是递归请求
    迭代iteration:需要发起多次请求,例如查询www.baidu.com ,当走迭代流程时,先找"."获知".com",再找"com."获知".baidu.com",最后找".baidu.com"获知"www.baidu.com"

    DNS递归名称解析:
        在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以本地名称服务器为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可

    DNS迭代名称解析:(或者叫迭代查询)的所有查询工作全部是DNS客户端自己进行(以DNS客户端自己为中心)。在条件之一满足时就会采用迭代名称解析方式:
        1.在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说”你都没有主动要求我为你进行递归查询,我当然不会为你工作了”
        2.客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0
    

dig +trace www.ksu.edu.tw       #看起来就是执行迭代解析过程;即使配置为递归解析,仍然显示的是迭代解析过程
迭代查询流程:. --> .tw --> .edu.tw --> .ksu.edu.tw --> www.ksu.edu.tw 
    

------------------------------------------------------------------------------------------------------
正向解析:域名解析为IP
反向解析:IP解析为域名
DNS 查询主机名 IP 的流程:递归、迭代;正向解析、反向解析

 bind安装

安装bind;bing安装包信息
=================================================================
yum install -y bind

[root@centos7 ~]# rpm -qf `which named`
bind-9.11.4-26.P2.el7_9.9.x86_64

[root@www ~]# rpm -qa | grep '^bind'
bind-libs-9.7.0-5.P2.el6_0.1.x86_64     <==给 bind 与相关指令使用的函式库
bind-utils-9.7.0-5.P2.el6_0.1.x86_64    <==这个是客户端搜寻主机名的相关指令
bind-9.7.0-5.P2.el6_0.1.x86_64          <==就是 bind 主程序所需软件
bind-chroot-9.7.0-5.P2.el6_0.1.x86_64   <==将 bind 主程序关在家里面!
安装bind;bing安装包信息
/etc/sysconfig/named 与 chroot 环境
================================================================================
为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot 
    [root@www ~]# cat /etc/sysconfig/named
    ROOTDIR=/var/named/chroot           #这个是dns的实际根所在,但是这样使用上又很不方便

所以又使用了mount来进行挂载
mount --bind /var/named /var/named/chroot/var/named
/etc/sysconfig/named 与 chroot 环境

DNS配置

cache-only (仅快取) DNS server:这个 DNS server 只有快取搜寻结果的功能
  这个dns只有". zone"正向解析配置文件;除此之外,没有其他任何正反解析文件
forwarding DNS 服务器
  这个服务器可以不配置任何解析配置文件,甚至连". zone"正向解析配置文件都可以没有。

named.conf文件的相关配置:zone;master/slave 架构;/etc/named.conf配置说明
===================================================================================================================
BIND 的配置文件为 /etc/named.conf

区域 (zone):包含了一个要解析的领域 (domain)
    一台DNS 服务器可以管理多个zone,即可以管理多个领域
zone类型:
    hint类型:zone "."  hint类型,每个DNS的必备zone,记录的是13个根域的IP!!!!
        其实若配置仅递归的dns服务器,那么zone "."文件也不是必要的
    master类型:管理员需要手工维护master类型dns;注意对slave服务器的IP进行限制,避免受到攻击
    slave类型:配置为slave后,当master更新时,slave会自动同步


在 DNS 系统当中,领域名的查询是『先抢先赢』的状态,我们不会晓得哪一部主机的数据会先被查询到的!
        先抢先赢是什么鬼,PC配置了多个DNS,不是轮询的吗?

------------------------------------------------------------------------------------------------------
master/slave 架构
master:管理员需要手工维护master类型dns;注意对slave服务器的IP进行限制,避免受到攻击
slave:配置为slave后,当master更新时,slave会自动同步

Master/Slave数据的同步过程
    同步依据:数据库的序列号
    更新的方式主要有两种:
        1.Master 主动告知:例如在 Master 在修改了数据库内容,并且加大数据库序号后, 重新启动 DNS 服务,那 master 会主动告知 slave 来更新数据库,此时就能够达成数据同步;
        2.由 Slave 主动提出要求:基本上, Slave 会定时的向 Master 察看数据库的序号, 当发现 Master 数据库的序号比 Slave 自己的序号还要大 (代表比较新),那么 Slave 就会开始更新。如果序号不变, 那么就判断数据库没有更动,因此不会进行同步更新。

------------------------------------------------------------------------------------------------------
[root@centos7 ~]# cat /etc/named.conf 
    options {               #在 named.conf 的结构中,与服务器环境有关的是由 options 这个项目内容设定的   http://cn.linux.vbird.org/linux_server/0350dns_3.php
            listen-on port 53 { any; };                                     #默认只监听127.0.0.1,此处需要修改
            listen-on-v6 port 53 { ::1; };                                  #默认只监听::1,此处需要修改
            directory       "/var/named";                                   #仓库目录,本配置文件中的一些文件若配置为"相对路径or文件名",那么就存放在该仓库目录下   //数据库默认放置的目录所在
            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";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
            allow-query     { any; };                                       //可不设定,代表全部接受;这里应该要配置为允许被rndc控制的IP or 网段;即填写主从DNS服务器的IP


            recursion yes;                                                  #是否允许递归
            forward only;                                                   #only模式,仅执行转发;first模式:先查找本地zone,再转发
            forwarders {                     
                168.95.1.1;                                                 #设置递归查询的dns服务器
                139.175.10.20;                                              #设置递归查询的dns服务器
            };                                                              //最终记得要结尾符号!

            dnssec-enable yes;
            dnssec-validation yes;

            /* Path to ISC DLV key */
            bindkeys-file "/etc/named.root.key";

            managed-keys-directory "/var/named/dynamic";

            pid-file "/run/named/named.pid";
            session-keyfile "/run/named/session.key";
    };

    //logging {
    //        channel default_debug {
    //                file "data/named.run";                                                                    #log的默认配置
    //                severity dynamic;
    //        };
    //};

    logging {
        channel null { null; };
        channel default_stderr { stderr; severity info; };
        channel query_log { file "data/named.query" versions 5 size 100m; severity dynamic; print-time yes;};       #以为可以看到查询日志,但实际无结果        
        channel update_log { file "data/named.update" versions 5 size 100m; severity dynamic; print-time yes;};
        channel default_debug { file "data/named.run" versions 5 size 100m; severity dynamic; print-time yes;};     #debug日志,重启named进程时,可以在该文件查看到相关log
        channel general_debug { file "data/named.general" versions 3 size 100m; severity dynamic; print-time yes;};
        channel default_syslog { file "data/named.syslog" versions 5 size 100m; severity dynamic; print-time yes; };
        channel database_debug { file "data/named.database" versions 3 size 100m; severity dynamic; print-time yes;};
        channel resolver_log { file "data/named.resolver" versions 3 size 100m; severity dynamic; print-time yes;};
        // channel security_log { file "data/named.security" versions 3 size 100m; severity dynamic; print-time yes;};

        category default { default_debug; };
        category unmatched { default_debug; };
        // category queries { query_log; };
        category resolver { resolver_log; };
        // category security { security_log; };
        category update { update_log; };
    };



    zone "." IN {
            type hint;                                          # . zone,固定使用hint类型
            file "named.ca";
    };
    zone "aabbcc.cn" IN {                                       #自定义zone
            type master;
            file "aabbcc.cn.zone";
            allow-transfer { 192.168.1.0/24;};                  #指定允许哪个网段的DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有
    };


    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
named.conf文件的相关配置:zone;master/slave 架构;/etc/named.conf配置说明

 named.conf forword配置

zone "intra.test111.sg.com." IN {
type forward;
forward only;
forwarders { 10.43.0.1; 10.43.0.2; };
};

zone文件的相关配置;正向解析zone文件;反向解析zone文件;RR种类(SOA/NS/A/AAAA/PTR等)及格式;正向解析RR格式;反向解析RR格式
==========================================================================================================================
zone文件的相关配置
***注意zone文件的权限问题,注意查看named日志(zone权限有问题,named进程还是可以成功重启的)
在zone文件中,
    "#"/";"都表示备注
    "@"指代域名,所以SOA记录、NS记录、MX记录的域名都简写为@


正向解析zone文件通常包含以下资源:
    SOA:就是开始验证 (Start of Authority) 的缩写,相关资料本章后续小节说明;
    NS:就是名称服务器 (NameServer) 的缩写,后面记录的数据是 DNS 服务器的意思;
    A:就是地址 (Address) 的缩写,后面记录的是 IP 的对应 (最重要);

反向解析zone:能够配置反向解析的只有IP的拥有者,所以只有ISP才有权限设置反向解析。(你到ISP取得一个固定IP也是不能假设反向解析的,必须要拥有C类及以上级别的网段)
反向解析zone文件通常包含以下资源:
    SOA
    NS
    PTR:就是指向 (PoinTeR) 的缩写,后面记录的数据就是反解到主机名啰!


-------------------------------------------------------------------------------------------------------------------------
资源记录Resource Record, RR
[domain]   [ttl]          IN [[RR type]  [RR data]]
[待查数据] [缓存时间(秒)] IN [[资源类型] [资源内容]]
    #domain 尽量使用FQDN格式;当然也可以使用简写,即不以"."结尾,那么系统会自动加上域名
    #ttl    缓存时间;ttl 可由特定的参数来统一控管,所以通常省略了

-------------------------------------------------------------------------------------------------------------------------
常见的正解文件 RR 相关信息
    [domain]    IN  [[RR type]  [RR data]]
    领域名.     IN  SOA         管理这个领域名的七个重要参数(容后说明)       #域名可以用"@"符号替换
    领域名.     IN  NS          管理这个领域名的服务器主机名字.               #主机名若不是FQDN格式,则自动补全为FQDN
    领域名.     IN  MX          优先级  接收邮件的服务器主机名字              #主机名若不是FQDN格式,则自动补全为FQDN
    主机名.     IN  A           IPv4                                          #主机名若不是FQDN格式,则自动补全为FQDN
    主机名.     IN  AAAA        IPv6                                          #主机名若不是FQDN格式,则自动补全为FQDN
    主机别名.   IN  CNAME       实际代表这个主机别名的主机名字.               #主机名若不是FQDN格式,则自动补全为FQDN

    ksu.edu.tw.             1596    IN      NS      dns1.ksu.edu.tw.
    www.ksu.edu.tw.         2987    IN      A       120.114.100.101
    dns1.ksu.edu.tw.        577     IN      A       120.114.50.1
    www.google.com.         557697  IN      CNAME   www.l.google.com.
    www.l.google.com.       298     IN      A       72.14.203.99
    ksu.edu.tw.             3600    IN      MX      8 mx01.ksu.edu.tw.

    SOA记录的SOA字段后跟随的RR数据可以分为7个部分(SOA记录提供了DNS名称空间和服务器之间的授权联系)
        1.Master DNS 服务器主机名
        2.管理员的 email        #由于 @ 在数据库档案中是有特别意义的,所以用.代替@
        3.序号 (Serial)         #这个序号代表的是这个数据库档案的新旧,序号越大代表越新。主从dns的同步就是根据该序号进行判断的。通常序号都会使用日期格式"YYYYMMDDNU",不能超过2的32次方
        4.更新频率 (Refresh)     #从dns主动同步的周期时间    
        5.失败重新尝试时间 (Retry)
        6.失效时间 (Expire)         #如果从dns一直同步失败,直到超时,那么从服务器将会删除相应的zone文件
        7.快取时间 (Minumum TTL)    #这是最小默认 TTL 值,如果您在前面没有用“$TTL”来定义,就会以此值为准。
    ###注意:SOA记录只能有一个,同时zone配置文件中的第一个记录必须是SOA记录
        建议设置
        Refresh >= Retry *2
        Refresh + Retry < Expire
        Expire >= Rrtry * 10
        Expire >= 7Days



    dig www.aabbcc.cn       #其实这个查询,也可以看到哪台dns设备该域名的;查询结果先看到A记录,再看到NS记录
    dig -t ns aabbcc.cn     #查询NS记录,看看这个域名是哪台dns设备进行管理的,查询结果可以先看到NS记录,再看到A记录
    dig -t soa aabbcc.cn    #查看SOA记录,结果会先显示SOA记录,再显示NS记录,最后显示A记录

-------------------------------------------------------------------------------------------------------------------------
反向解析RR格式

    反向解析文件只有ISP才能配置
        能够配置反向解析的只有IP的拥有者,所以只有ISP才有权限设置反向解析。(你到ISP取得一个固定IP也是不能假设反向解析的,必须要拥有C类及以上级别的网段)

    PTR记录格式
        IP逆序+固定的(.in-addr.arpa.)
        101.100.114.120.in-addr.arpa. 3600 IN   PTR     www.ksu.edu.tw.

    例如 120.114.100.0/24 这个 class C IP 网段的反解设定,就必须要写成: 100.114.120.in-addr.arpa. 这样的 zone 名称
    反解最重要的地方:后面的主机名尽量使用完整 FQDN,亦即加上小数点 (.) 
        举 100.114.120.in-addr.arpa. 为例,如果你只是填写主机名,并没有填写领域名, 那么当人家追踪你的主机名时,你的主机名会变成: www.100.114.120.in-addr.arpa. 的怪模样
zone文件的相关配置;正向解析zone文件;反向解析zone文件;RR种类(SOA/NS/A/AAAA/PTR等)及格式;正向解析RR格式;反向解析RR格式

 

鸟哥的master dns服务器配置案例
现在假设鸟哥的区网环境中想要设定 DNS 服务器,
鸟哥的区网原本规划的域名就是 centos.vbird,且搭配的 IP 网段为 192.168.100.0/24 这一段,因此主要的正解网域为 centos.vbird,而反解的网域则为 192.168.100.0/24, 
鸟哥的这部 DNS 服务器想要自己找寻 .(root) 而不透过 forwarders 的辅助,因此还得要 . 的领域正解档。

1.主配置文件 /etc/named.conf 
    [root@www ~]# vim /etc/named.conf
    options {
            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;                      #配置该dns服务器具备递归查询功能
            allow-transfer  { none; };          #除非你有 slave DNS 服务器,否则这里不要开放;这里应该是根据从dns进行有限开放
    };

    zone "." IN {
            type hint;
            file "named.ca";
    };
    zone "centos.vbird" IN {            // 这个 zone 的名称   #配置正解
            type master;                
            file "named.centos.vbird";  
    };
    zone "100.168.192.in-addr.arpa" IN {        #配置反解
            type master;
            file "named.192.168.100";
    };

2.named.ca:"." zone 配置文件;由 bind 软件提供的正向解析文件
    [root@www ~]# vim /var/named/named.ca
    . <==这里有个小数点     518400  IN      NS      A.ROOT-SERVERS.NET.
    A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4
    # 上面这两行是成对的!代表点由 A.ROOT-SERVERS.NET. 管理,并附上 IP 查询
    . <==这里有个小数点     518400  IN      NS      M.ROOT-SERVERS.NET.
    M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33
    M.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:dc3::35
    # 上面这三行是成对的,代表 M 开头的服务器有 A 与 AAAA 的记录

3.named.centos.vbird:"centos.vbird"域的正向解析文件
    ###注意,这里犯错了,直接复制系统的默认配置文件,没注意权限问题,虽然重启named进程没有报错,但是实测dns解析一直失败,实际上/var/named/messages中一直是有错误日志的!
    所有设定数据一定要从行首开始,前面不可有空格符。若有空格符,代表延续前一个 domain
    @   这个符号代表 zone ;例如写在 named.centos.vbird 中,@ 代表 centos.vbird.,如果写在 named.192.168.100 档案中,则 @ 代表 100.168.192.in-addr.arpa. 的意思
    .   这个点 (.) 很重要!因为他代表一个完整主机名 (FQDN) 而不是仅有 hostname 
    ;   代表批注符号~似乎 # 也是批注~两个符号都能使用


    一个正向解析数据库设定,至少应该要有 $TTL, SOA, NS (与这部 NS 主机名的 A)
    $TTL    为了简化每笔 RR 记录的设定,因此我们将 TTL 挪到最前面统一设定。
    $ORIGIN     这个设定值可以重新指定 zone 的定义。#一般情况下,每个正向解析文件的zone由named.conf文件指定,但是这个zone是可以由$ORIGIN来修改的。
    
    
    [root@www ~]# vim /var/named/named.centos.vbird
    # 与整个领域相关性较高的设定包括 NS, A, MX, SOA 等标志的设定处!
    $TTL    600
    @                       IN SOA   master.centos.vbird. vbird.www.centos.vbird. (2011080401 3H 15M 1W 1D ) 
    @                       IN NS    master.centos.vbird.  ; DNS 服务器名称
    master.centos.vbird.    IN A     192.168.100.254         ; DNS 服务器 IP
    @                       IN MX 10 www.centos.vbird.     ; 领域名的邮件服务器

    # 针对 192.168.100.254 这部主机的所有相关正解设定。
    www.centos.vbird.       IN A     192.168.100.254
    linux.centos.vbird.     IN CNAME www.centos.vbird.
    ftp.centos.vbird.       IN CNAME www.centos.vbird.
    forum.centos.vbird.     IN CNAME www.centos.vbird.

    # 其他几部主机的主机名正解设定。
    slave.centos.vbird.       IN A    192.168.100.10
    clientlinux.centos.vbird. IN A    192.168.100.10
    workstation.centos.vbird. IN A    192.168.1.101
    winxp.centos.vbird.       IN A    192.168.100.20
    win7                      IN A    192.168.100.30  ; 这是简化的写法!


4.named.192.168.100:"100.168.192.in-addr.arpa"域反向解析文件

    [root@www ~]# vim /var/named/named.192.168.100
    $TTL    600
    @       IN SOA  master.centos.vbird. vbird.www.centos.vbird. (
                    2011080401 3H 15M 1W 1D )
    @       IN NS   master.centos.vbird.
    254     IN PTR  master.centos.vbird.  ; 将原本的 A 改成 PTR 的标志而已

    254     IN PTR  www.centos.vbird.     ; 这些是特定的 IP 对应
    10      IN PTR  slave.centos.vbird.
    20      IN PTR  winxp.centos.vbird.
    30      IN PTR  win7.centos.vbird.

    101     IN PTR  dhcp101.centos.vbird.  ; 可能针对 DHCP (第十二章) 的 IP 设定
    102     IN PTR  dhcp102.centos.vbird.
    ....(中间省略)....
    200     IN PTR  dhcp200.centos.vbird.



5.启动dns
    systemctl start named
    systemctl enable named

    tail -n 30 /var/log/messages | grep named


6.修改PC的dns服务器,并进行验证
    vim /etc/resolv.conf

    检查 master.centos.vbird 以及 www.centos.vbird 的 A 标志
        dig master.centos.vbird
        dig www.centos.vbird

    检查 ftp.centos.vbird 与 winxp 等等的 A 标志
        dig ftp.centos.vbird
        dig winxp.centos.vbird

    检查 centos.vbird 这个 zone 的 MX
        dig -t mx centos.vbird

    检查 192.168.100.254 及 192.168.100.10 的反解
        dig -x 192.168.100.254
        dig -x 192.168.100.10

7.dns数据库的更新
    a.增删改zone文件的RR记录
    b.修改zone文件的序列号
    c.重新启动 named (或者让named重新读取配置文件)
鸟哥的master dns服务器配置案例
slave dns服务器的配置
slave DNS 服务器本身并没有数据库,他的数据库是由 master DNS 所提供的


1.master DNS 服务器的配置
    ###修改 named.conf,主要修改 zone 参数内的 allow-transfer 项目
        [root@www ~]# vim /etc/named.conf
        ....前面省略....
        zone "centos.vbird" IN {
                type master;                        #类型为master
                file "named.centos.vbird";
                allow-transfer { 192.168.100.10; };  // 在这里新增 slave 的 IP,可以成网段形式,例如192.168.1.0/24
        };
        zone "100.168.192.in-addr.arpa" IN {
                type master;                        #类型为master
                file "named.192.168.100";
                allow-transfer { 192.168.100.10; };  // 在这里新增 slave 的 IP,可以成网段形式,例如192.168.1.0/24
        };

    ###在 zone file 里面新增 NS 标志,要注意需要有 A(正解) 及 PTR(反解) 的设定
        [root@www ~]# vim /var/named/named.centos.vbird
        $TTL    600
        @                       IN SOA   master.centos.vbird. vbird.www.centos.vbird. (
                                         2011080402 3H 15M 1W 1D )                  #注意修改序列号
        @                       IN NS    master.centos.vbird.
        @                       IN NS    slave.centos.vbird.                        #需要新增NS资源记录
        master.centos.vbird.    IN A     192.168.100.254
        slave.centos.vbird.     IN A     192.168.100.10                             #新增NS资源记录对应的A记录
        @                       IN MX 10 www.centos.vbird.
        ....(底下省略)....

        [root@www ~]# vim /var/named/named.192.168.100
        $TTL    600
        @       IN SOA  master.centos.vbird. vbird.www.centos.vbird. (
                        2011080402 3H 15M 1W 1D )
        @       IN NS   master.centos.vbird.
        @       IN NS   slave.centos.vbird.                                         #同上
        254     IN PTR  master.centos.vbird.
        10      IN PTR  slave.centos.vbird.                                         #同上
        ....(底下省略)....


    ###修改完毕后,重启named进程
        [root@www ~]# /etc/init.d/named restart
        [root@www ~]# tail -n 30 /var/log/messages | grep named
        starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot
        ....(中间省略)....
        zone 100.168.192.in-addr.arpa/IN: loaded serial 2011080402
        zone centos.vbird/IN: loaded serial 2011080402
        zone 100.168.192.in-addr.arpa/IN: sending notifies (serial 2011080402)
        zone centos.vbird/IN: sending notifies (serial 2011080402)


2.Slave DNS 的配置与数据库权限问题
    ###安装bind程序
        过程略……
    
    ###Slave DNS的 named.conf 配置:
        [root@clientlinux ~]# vim /etc/named.conf
        ....(前面的部分完全与 master.centos.vbird 相同,故省略)....
        zone "centos.vbird" IN {
                type slave;                             #类型为slave
                file "slaves/named.centos.vbird";
                masters { 192.168.100.254; };           #master DNS 的 IP
        };
        zone "100.168.192.in-addr.arpa" IN {
                type slave;                             #类型为slave
                file "slaves/named.192.168.100";
                masters { 192.168.100.254; };           #master DNS 的 IP
        };

    ###检查 存放 zone file 的目录权限是否正确:
        [root@clientlinux ~]# ll -d /var/named/slaves
        drwxrwx---. 2 named named 4096 2011-06-25 11:48 /var/named/slaves
        # 注意权限、使用者以及群组三个字段的数据!需要与 named 这个用户及群组有关!

        [root@clientlinux ~]# ll -dZ /var/named/slaves
        drwxrwx---. named named system_u:object_r:named_cache_t:s0 /var/named/slaves
        # 也不要忘记与 SELinux 有关的事情!


3.启动Slave DNS 并进行测试
    [root@clientlinux ~]# /etc/init.d/named start
    [root@clientlinux ~]# chkconfig named on
    [root@clientlinux ~]# tail -n 30 /var/log/messages | grep named
    starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot
    loading configuration from '/etc/named.conf'
    ....(中间省略)....
    running
    zone 100.168.192.in-addr.arpa/IN: Transfer started.
    zone 100.168.192.in-addr.arpa/IN: transferred serial 2011080402
    zone centos.vbird/IN: Transfer started.
    zone centos.vbird/IN: transferred serial 2011080402  <==注意序号正确否
    # 你会看到如上的讯息,重点是还有告知序号喔!非常重要!

    [root@clientlinux ~]# ll /var/named/slaves
    -rw-r--r--. 1 named named 3707 2011-08-05 14:12 named.192.168.100
    -rw-r--r--. 1 named named  605 2011-08-05 14:12 named.centos.vbird
    # 这两个 zone file 会主动被建立起来呢!

    [root@clientlinux ~]# dig master.centos.vbird @127.0.0.1
    [root@clientlinux ~]# dig -x 192.168.100.254 @127.0.0.1
    # 上述两个检测的指令如果是正确的显示出 A 与 PTR 的话,那就完成了!
slave dns服务器的配置
配置子域 DNS 服务器

1.上层 DNS 服务器:只需新增 zone file 的 NS 与 A 即可
    [root@www ~]# vim /var/named/named.centos.vbird
    @                       IN SOA   master.centos.vbird. vbird.www.centos.vbird. (
                                     2011080501 3H 15M 1W 1D )

    niki.centos.vbird.      IN NS    dns.niki.centos.vbird.     #新增NS记录,看起来和新增普通的NS记录是一样的,但是注意,这条NS的域名和zone文件对应的域名不一致
    dns.niki.centos.vbird.  IN A     192.168.100.200            #新增A记录

    [root@www ~]# /etc/init.d/named restart
    [root@www ~]# tail -n 30 /var/log/messages | grep named
    Aug  5 14:22:36 www named[9564]: zone centos.vbird/IN: loaded serial 2011080501     # 登录档的关键是上面的序号部分~必须是我们填写的新的序号才对!

    [root@www ~]# dig dns.niki.centos.vbird @127.0.0.1          # 你会发现无结果。
    注意,新增的NS的域名和zone文件对应的域名不一致
    猜测:因为上面配置的关系,所以会去找"dns.niki.centos.vbird."这台DNS查询A记录,而此时"dns.niki.centos.vbird."还未搭建
    

2.下层 DNS 服务器:需要有完整的 zone 相关设定
    修改 named.conf ,增加 zone 的参数,假设档名为 named.niki.centos.vbird
        [root@niki ~]# vim /etc/named.conf
        ....(前面省略)....
        zone "niki.centos.vbird" IN {
                type master;
                file "named.niki.centos.vbird";
        };

    配置 named.niki.centos.vbird
        [root@niki ~]# vim /var/named/named.niki.centos.vbird
        $TTL   600
        @      IN SOA   dns.niki.centos.vbird. root.niki.centos.vbird. (
                        2011080501 3H 15M 1W 1D )
        @      IN NS    dns.niki.centos.vbird.
        dns    IN A     192.168.100.200
        www    IN A     192.168.100.200
        @      IN MX 10 www.niki.centos.vbird.
        @      IN A     192.168.100.200
        # 为了简化整个版面,所以鸟哥都使用 hostname 而非 FQDN!请见谅!

    启动并观察相关登录信息
        [root@niki ~]# /etc/init.d/named restart
        [root@niki ~]# tail -n 30 /var/log/messages | grep named
        ....(前面省略)....
        zone niki.centos.vbird/IN: loaded serial 2011080501
        ....(底下省略)....
        # 同时,记得处理一下防火墙的放行问题!否则测试会失败!!

        [root@niki ~]# dig www.niki.centos.vbird @192.168.100.254
        # 上述的动作必须要有响应才行!否则就会出问题~
配置子域 DNS 服务器

 

BIND日志
==========================================================================
注意:zone文件权限不对,named进程仍然是可以成功重启的。

https://blog.csdn.net/linggang_123/article/details/109216807

下面是可用的分类和相关的简明描述,以后的BIND版本中会包含更多的分类:
default: 默认分类,没有分类的日志都使用这个分类的配置.
general: 没有分类的日志都记录在此分类中.
database: 服务器内部使用存储zone和缓存数据.
security: 允许/拒绝的请求.
config: 配置文件分析和处理.
resolver: DNS解析,被dns缓存服务器进行递归查询.
xfer-in: 接收区域传输.
xfer-out: 发送区域传输.
notify: NOTIFY协议.
client: 客户端请求进程.
unmatched: 未匹配的查询.
network: 网络操作.
update: 动态更新.
update-security: 允许/拒绝更新请求.
queries: 客户端队列日志.
dispatch: 数据包传送日志.
dnssec: DNSSEC和TSIG协议处理.
lame-servers: 远端的配置错误的服务器发送的请求.
delegation-only: NXDOMAIN的结果将被强制定义到delegation-only区域.

---------------------------------------------------------------------------------------------------------------
[root@www ~]# tail -n 30 /var/log/messages | grep named
Apr 24 17:04:27 centos7 named[19455]: starting BIND 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 (Extended Support Version) <id:7107deb>
Apr 24 17:04:27 centos7 named[19455]: running on Linux x86_64 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019
Apr 24 17:04:27 centos7 named[19455]: built with '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-python=/usr/bin/python' '--with-libtool' '--localstatedir=/var' '--enable-threads' '--enable-ipv6' '--enable-filter-aaaa' '--enable-rrl' '--with-pic' '--disable-static' '--includedir=/usr/include/bind9' '--with-geoip' '--with-libidn' '--enable-openssl-hash' '--enable-native-pkcs11' '--with-pkcs11=/usr/lib64/pkcs11/libsofthsm2.so' '--with-dlopen=yes' '--with-dlz-ldap=yes' '--with-dlz-postgres=yes' '--with-dlz-mysql=yes' '--with-dlz-filesystem=yes' '--with-dlz-bdb=yes' '--with-gssapi=yes' '--disable-isc-spnego' '--with-lmdb=no' '--with-atf=yes' '--enable-fixed-rrset' '--with-tuning=large' '--with-docbook-xsl=/usr/share/sgml/docbook/xsl-stylesheets' '--enable-full-report' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS= -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' 'LDFLAGS=-Wl,-z,relro ' 'CPPFLAGS= -DDIG_SIGCHASE'
Apr 24 17:04:27 centos7 named[19455]: running as: named -u named -c /etc/named.conf -4
Apr 24 17:04:27 centos7 named[19455]: compiled by GCC 4.8.5 20150623 (Red Hat 4.8.5-44)
Apr 24 17:04:27 centos7 named[19455]: compiled with OpenSSL version: OpenSSL 1.0.2k  26 Jan 2017
Apr 24 17:04:27 centos7 named[19455]: linked to OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017
Apr 24 17:04:27 centos7 named[19455]: compiled with libxml2 version: 2.9.1
Apr 24 17:04:27 centos7 named[19455]: linked to libxml2 version: 20901
Apr 24 17:04:27 centos7 named[19455]: compiled with zlib version: 1.2.7
Apr 24 17:04:27 centos7 named[19455]: linked to zlib version: 1.2.7
Apr 24 17:04:27 centos7 named[19455]: threads support is enabled
Apr 24 17:04:27 centos7 named[19455]: ----------------------------------------------------
Apr 24 17:04:27 centos7 named[19455]: BIND 9 is maintained by Internet Systems Consortium,
Apr 24 17:04:27 centos7 named[19455]: Inc. (ISC), a non-profit 501(c)(3) public-benefit
Apr 24 17:04:27 centos7 named[19455]: corporation.  Support and training for BIND 9 are
Apr 24 17:04:27 centos7 named[19455]: available at https://www.isc.org/support
Apr 24 17:04:27 centos7 named[19455]: ----------------------------------------------------
Apr 24 17:04:27 centos7 named[19455]: adjusted limit on open files from 4096 to 1048576
Apr 24 17:04:27 centos7 named[19455]: found 1 CPU, using 1 worker thread
Apr 24 17:04:27 centos7 named[19455]: using 1 UDP listener per interface
Apr 24 17:04:27 centos7 named[19455]: using up to 21000 sockets
Apr 24 17:04:27 centos7 named[19455]: loading configuration from '/etc/named.conf'
Apr 24 17:04:27 centos7 named[19455]: reading built-in trust anchors from file '/etc/named.root.key'
Apr 24 17:04:27 centos7 named[19455]: initializing GeoIP Country (IPv4) (type 1) DB
Apr 24 17:04:27 centos7 named[19455]: GEO-106FREE 20180327 Build 1 Copyright (c) 2018 MaxMind Inc All Rights Reserved
Apr 24 17:04:27 centos7 named[19455]: initializing GeoIP Country (IPv6) (type 12) DB
Apr 24 17:04:27 centos7 named[19455]: GEO-106FREE 20180605 Build 1 Copyright (c) 2018 MaxMind Inc All Rights Reserved
Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv4) (type 2) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv4) (type 6) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv6) (type 30) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv6) (type 31) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP Region (type 3) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP Region (type 7) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP ISP (type 4) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP Org (type 5) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP AS (type 9) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP Domain (type 11) DB not available
Apr 24 17:04:27 centos7 named[19455]: GeoIP NetSpeed (type 10) DB not available
Apr 24 17:04:27 centos7 named[19455]: using default UDP/IPv4 port range: [32768, 60999]
Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface lo, 127.0.0.1#53
Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface eth0, 172.17.22.136#53
Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface virbr0, 192.168.122.1#53
Apr 24 17:04:27 centos7 named[19455]: binding TCP socket: address in use
Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface docker0, 10.0.32.1#53
Apr 24 17:04:27 centos7 named[19455]: generating session key for dynamic DNS
Apr 24 17:04:27 centos7 named[19455]: sizing zone task pool based on 7 zones
Apr 24 17:04:27 centos7 named[19455]: none:104: 'max-cache-size 90%' - setting to 1654MB (out of 1837MB)
Apr 24 17:04:27 centos7 named[19455]: set up managed keys zone for view _default, file '/var/named/dynamic/managed-keys.bind'
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 10.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 16.172.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 17.172.IN-ADDR.ARPA
…………………………………………………………………………………………………………………………
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 126.100.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 127.100.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 127.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 254.169.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 100.51.198.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 113.0.203.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: D.F.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 8.E.F.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 9.E.F.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: A.E.F.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: B.E.F.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: EMPTY.AS112.ARPA
Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: HOME.ARPA
Apr 24 17:04:27 centos7 named[19455]: none:104: 'max-cache-size 90%' - setting to 1654MB (out of 1837MB)
Apr 24 17:04:27 centos7 named[19455]: configuring command channel from '/etc/rndc.key'
Apr 24 17:04:27 centos7 named[19455]: command channel listening on 127.0.0.1#953


[root@centos7 data]# tail -10 named.run
24-Apr-2022 14:42:17.604 zone 0.in-addr.arpa/IN: loaded serial 0
24-Apr-2022 14:42:17.610 zone aabbcc.cn/IN: loaded serial 0
24-Apr-2022 14:42:17.610 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
24-Apr-2022 14:42:17.611 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
24-Apr-2022 14:42:17.611 zone localhost/IN: loaded serial 0
24-Apr-2022 14:42:17.611 zone localhost.localdomain/IN: loaded serial 0
24-Apr-2022 14:42:17.611 all zones loaded
24-Apr-2022 14:42:17.611 running
24-Apr-2022 14:42:17.619 zone aabbcc.cn/IN: sending notifies (serial 0)
24-Apr-2022 14:42:18.537 managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
BIND日志

DNS主从秘钥认证

 

DNS基本工作原理、配置使用

鸟哥--服务器架设篇

posted @ 2022-04-25 10:44  雲淡風輕333  阅读(392)  评论(0编辑  收藏  举报