您的位置:新葡亰496net > 电脑系统 > CentOS7下安装配置DNS服务器,DNS原理简介及配置

CentOS7下安装配置DNS服务器,DNS原理简介及配置

发布时间:2019-12-12 11:25编辑:电脑系统浏览(119)

    Linux DNS原理简介及配置

    前言

    DNS(Domain Name System),网域名称系统,是互联网上基础性的服务。DNS 将域名和网络服务器的 IP 地址相互映射,并将这些数据保存至 DNS 服务器。两台主机通信事实上是依赖于IP地址,而不能识别域名,因为 IP 地址非常不方便于记忆,所以域名的产生,极大的方便了访问互联网。例如,有一台服务器的IP为 115.159.221.170,当我们访问这台服务器的资源时,更多的时候是通过输入域名来访问的,当输入(www.huxiaoqi.com)域名后,DNS服务器自动将域名"翻译"成 IP 地址,然后访问网络的服务器。DNS 是一个域名和 IP 地址相互映射关系的分布式数据库。在浏览器中输入 www.huxiaoqi.com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
    本篇博客将会介绍DNS服务的相关内容,同时介绍目前互联网上使用最为广泛的DNS服务器软件BIND。

    概念

    • DNS简介
    • DNS解析关键概念
    • BIND

    CentOS7下安装配置DNS服务器过程,写下来以备不时之需好了。先介绍一下相关的名词解释。

    1. DNS简介

    2. DNS原理

    3. 域名解析的过程

    4. 资源记录

    5. DNS BIND安装配置

    基本原理

    是什么?

    一、DNS简介:

    名词解析:

    一、简介

    一般来讲域名比IP地址更加的有含义、也更容易记住,所以通常用户更习惯输入域名来访问网络中的资源,但是计算机主机在互联网中只能通过IP识别对方主机,那么就需要DNS域名解析服务了。

    域名:www.baidu.com(也叫做FQDN:Full Qualified Domain Name, 完全限定域名,同时带有主机名和域名的名称)

     

    通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。

    TLD(top level domain)

    组织域:.com, .org, .net, .cc

    国家域: .cn, .tw, .hk, .iq, .ir, .jp

    反向域: IP-->FQDN 将IP地址转换成主机名,早期只能正向解析,后来引入了一个机制。指针;但是从IP转换成FQDN是另外一套数据库。

     

    DNS服务协议采用类似目录树的层次结构记录域名与IP地址的映射对应关系,形成一个分布式的数据库系统,上级仅知道其直接下级,下级只知道根的位置。结构模型:

    新葡亰496net 1

     

        DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析反向解析

    正向解析:根据主机名(域名)查找对应的IP地址。

    反向解析:根据IP地址查找对应的主机名(域名)。

     

    DNS域名称

    根域
    一级域名:Top Level Domain: tld com, edu, mil, gov, net, org, int,arpa 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
    二级域名
    三级域名
    最多127级域名
    ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全 球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶 级域名(ccTLD)系统的管理、以及根服务器系统的管理

    DNS (Domain Name System)域名解析服务器

    • linux 常用软件 BIND;另译 Berkeley Internet Name Domain

    (一)DNS服务

    • DNS:Domain Name Service,域名解析服务,服务于应用层的协议
    • 端口:TCP的53端口和UDP的53端口
    • 主流软件实现:BIND(Berkeley Internet Name Domain)
    • 域名解析方式:
      • 本地解析:hosts文件,每一行格式IP地址 域名
      • 网络分层解析:DNS服务
      • 域名解析时先查询本机hosts文件,匹配则直接使用文件中的域名;若无匹配项,再使用DNS服务
    • FQDN:Fully Qualified Domain Name,完全合格域名,是指主机名加上全路径,例如ns1.baidu.com.

    • SOA:Start of Authority,起始授权记录,用于设置该域的序列号、刷新时间、过期时间等信息,在定义每个域时SOA只能定义一条,而且必须在起始位置定义。

    • NS:Name Server,域名服务器记录,作用是定义创建的新域是由哪个DNS服务器来负责解析。

    • MX:Mail eXchanger,邮件交换记录,指向的是一个邮件服务器,用来当发邮件的时候,根据收件人的地址后缀来定位邮件服务器,说白了就是让邮件服务器知道应该把这封邮件发到哪里去。

      需要注意一点的是定义MX记录时因为@符号在DNS服务器配置中有特殊的含义,表示当前定义的域的域名。所以在定义邮件服务器时需要将@写为“.”号来代替,定义格式示例:mail1  IN  MX 10  mail1.baidu.com. 。

    • A:用来指定完全合格域(FQDN)名对应的IP记录,可以通过此设置改域名下,指定用户自己的WEB服务器地址,示例:www.baidu.com.  IN  A  172.16.81.250  (注:此仅做演示,baidu.com.表示自己定义的区域名,并非真实的域名)。

    • CNAME:别名记录,这种记录允许将多个名字映射到同一台计算机,示例:ftp   IN   CNAME   www    (注:此处是省略了域名的写法,可以在区域开头位置定义域名$ORIGIN  baidu.com.  再次强调域名后边的“.”不可以省略)。

    • PTR:反向域名解析,即将IP地址转换为FQDN,此记录一般定义在反向域名解析中在定义反向区域时,区域的名称一般是取IP地址的网络地址然后反写组成,示例:原来IP地址为172.16.81.250,定义

      $ORIGIN 81.16.172.

      250     IN         PTR         www.baidu.com.

    • TTL:Time To Live ,生存时间,表示DNS记录在DNS服务器上的缓存时间,时间越长对于服务器的压力越小,时间越短表示服务器需要重新查询并生成缓存的频率越高,压力越大。

    • *:泛域名解析,用于指定域名下所有未创建域名记录同一定位到指定主机中,示例   

    二、原理

    Linux下nsswitch(network service switch)是一个通用框架,与各种类型存储交互的公共实现,实现名称解析服务。其中有库文件,libnss_files.so库文件就是实现查找文件时, 其应该调用的文件。其展现的就是一个配置文件,/etc/nssitch.conf,此配置文件中

    新葡亰496net 2

    这个files就是通过libnss_files来查找/etc/hosts

     

    hosts可通过两种方式来查找:     files    dns

    file: /etc/hosts配置文件

    dns: DNS服务器

    系统中stub resolver:名称解析器,根据配置文件来查找对应的ip地址。

     

    ping www.itodo.com此过程就是先查找本地/etc/hosts文件,如果没有再查找dns服务器。

     

    hosts格式:

        IPADDR FQDN    Ailases

        192.168.100.1    www.ss.com     www

     

    DNS服务

    DNS:Domain Name Service 应用层协议
    C/S,服务端口:53/udp, 53/tcp
    BIND:Bekerley Internat Name Domain
    ISC (www.isc.org)
    本地名称解析配置文件:hosts
    /etc/hosts
    %WINDIR%/system32/drivers/etc/hosts
    122.10.117.2 www.huxiaoqi.com
    93.46.8.89 www.google.com

    有啥用?

    通过将主机名(FQDN Full Qualified Domain Name, 完全限定域名 )解析为IP 地址;IP地址解析成主机名的服务软件,这个过程叫名称解析(Name Resolving),在背后查询数据记录集得到结果

    (二)DNS域名

    • 分层设计,自上而下分为:根域、一级域名、二级域名、三级域名......,最多127级
    • 一级域名:
      • 组织域名:com, edu, mil, gov, net, org
      • 国家地区域名:cn, uk, hk
      • 反向域名:arpa

    *  IN   CNAME    www  ``#为所有未创建的域名记录定义一个别名指向www主机。

    三、域名解析的过程

        当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回。

        新葡亰496net 3

    dns查询:

        递归查询:主机向本地域名服务器的查询一般都是采用递归查询,只发出一次请求。

        迭代查询:本地域名服务器向根域名服务器的查询的迭代查询,发出多次请求。

     

     

    新葡亰496net 4

    以上简单理解来说,主机1访问主机2的域名a.zz.com,首先向本机域名服务器发起请求主机2的ip,本机没有,向根域名服务器查询,根返回消息说顶级域名服务器那里知道,本机又向顶级域名服务器查询,顶级域名服务器又返回消息说二级域名服务器那里有答案,本机又向二级域名查询,最后经过本机域名服务器的缓存之后,返回主机2的域名对应的ip地址。

     

    DNS服务器类型

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

    示例

    FQDN ==> IP (正向解析) www.example.com --> 10.0.0.1
    IP ==> FQDN (反向解析) 10.0.0.1 --> www.example.com

    (三)DNS解析

    • 按查询类型分为:递归解析和迭代解析

      • 递归解析:客户端向所在网络DNS服务器发起请求,DNS服务器发回解析结果的过程
      • 迭代解析:当某个DNS服务器无法解析客户端的请求时,从根域名服务器开始,向每层DNS服务器发出请求,并接收每层DNS服务器的查询结果,直至找到权威DNS服务器(存储主机准确IP地址的服务器)的过程
    • 一次完整的查询请求经过的流程:
      Client -->hosts文件-->DNS Service Local Cache(本地DNS缓存,Windows有,Linux没有)--> DNS Server (recursion, 递归) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

    • 按解析方向解析:

      • FQDN(Fully Qualified Domain Name):完全合格域名,主机 全域名路径,逻辑上能够准确表达主机的位置
      • 正向解析:FQDN解析为IP
      • 反向解析:IP解析为FQDN
      • 正向解析和反向解析是两个不同的名称空间,两个不同的解析树

    在centos系统下实现域名服务器通常是使用bind工具来完成DNS的功能,下边开始进行bind的安装与配置。

    四、资源记录

    数据库中的每一个条目称作一个资源记录(Resource Record,RR)

    资源记录的格式:

     

    $TTL 600;

     

    NAME            [TTL]            IN            RRT            VALUE

    www.ss.com                        IN            A            1.1.1.1

     

    1.1.1.1                        IN            PTR            www.ss.com

    资源记录类型(RRT):

    SOA(start of authority)

        ZONE_NAME    TTL        IN    SOA        FQDN        ADMINISTRATOR_MAILBOX(

                                serial number 版本号

                                refresh    刷新时间

                                retry    重试时间

                                expire    过期时间

                                na ttl )    否定答案的ttl

    时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

    邮箱格式:admin@ss.com -写为-> admin.ss.com

    @:也就是ZONE_NAME

    NS(Name Server): ZONE_NAME --> FQDN

        magedu.com.        600        IN        NS        ns1.magedu.com.

        ns1.magedu.com.    600        IN        A        1.1.1.2

        

    MX(Mail eXchanger): ZONE_NAME --> FQDN

        ZONE NAME    TTL        IN        MX pri        VALUE

        优先级:0-99,数字越小级别越高

            magedu.com.    600        IN        MX    10    mail.magedu.com.

            mail.magedu.com.    600        IN    A    1.1.1.3

     

    A(address):    FQDN-->IPv4    

    AAAA:FQDN-->IPv6

    PTR(pointer):IP-->FQDN

    CNAME(Canonical NAME): FQDN-->FQDN

        www2.magedu.com.        IN        CNAME        www.magedu.com.

    TXT:文本字符串

     

    DNS区域:

    正向区域文件

        magedu.com.        IN        SOA    

     

    www.maged.com.   IN    A    192.168.0.1

    简写为:

    www          IN    A    192.168.0.1

     

    反向区域文件

    0.168.192.in-addr.arpa.       IN    SOA    

     

    1.0.168.192.in-addr.arpa.      IN    PTR        www.magedu.com.

    简写为:

    1       IN       PTR       www.magedu.com.

     

    区域传送

        区域传送的类型:

        完全区域传送: axfr

        增量区域传送:ixfr

        

    区域类型:

        主区域:master

        从区域:slave

        提示区域:hint

        转发区域:forward

        

    区域传输

    区域传输:
    完全传输:传送整个解析库
    增量传输:传递解析库变化的那部分内容
    Domain: Fully Qualified Domain Name 简称FQDN,完全合格域名/全称域名
    正向解析:FQDN --> IP
    反向解析: IP --> FQDN
    负责本地域名的正向和反向解析库 正向区域 反向区域

    相关内容

    IANA: 互联网地址名称分配机构(美国机构),通过维护,申请IP地址+FQDN(只有先后;申请后别人没办法使用相同域名)
    ICNAA: 授权机构,区域授权;授权给组织域,国家域自行管理

    (四)DNS服务器类型

    • 主服务器:管理和维护所在域的解析服务

    • 从服务器:主服务器解析库的镜像,复制和更新的过程称为区域传输,涉及的概念有:

      • 序列号(serial):解析库版本号,主服务器解析库变化时,其序列递增,从服务器从序列号判断主服务器的解析库是否发生变化,最长10位数字
      • 刷新时间间隔(refresh):从服务器从主服务器请求同步解析的时间间隔
      • 重试时间间隔(retry):从服务器请求同步失败时,再次尝试时间间隔
      • 过期时长(expire):从服务器联系不到主服务器时,多久后停止服务
    • 缓存服务器:转发器

    • 主从服务器解析库更新机制:Push和Pull

      • Push:推送,主服务器解析库发生变化时,主动通知从服务器更新
      • Pull:拉取,从服务器按照设置每隔一定时间主动同步主服务器的解析库

    ~]``# yum install bind-untils bind  -y

    五、DNS BIND安装配置

    DNS所用的最常用软件为BIND

    bind:

        新葡亰496net 5

        /etc/named.conf

            BIND进程的工作属性

            区域的定义

        /etc/rndc.key

            rndc: Remote Name Domain Controller

            密钥文件

            配置信息:/etc/rndc.conf    

        /var/named/

            区域数据文件

     

    bind-chroot:为了提高系统安全新,把系统中的一个子目录作为bind运行时的目录。

        默认:named

            用户:named

            组:named        

        /var/named/chroot/

            etc/named.conf

            etc/rdnc.key

            sbin/named

            var/named/

     

    安装配置:

    1.安装bind,查看是否安装成功

     yum -y install bind bind-utils bind-chroot

     rpm –qa | grep "^bind"

    2.修改/etc/named.conf

     listen-on port 53 { any; };

    3.修改/etc/named.rfc1912.zones

    新葡亰496net 6

    4.添加所需要的zone文件

     在/var/named目录下添加正向解析文件named.yan和反向解析文件named.222

    新葡亰496net 7

    新葡亰496net 8

     

    5.检查语法

     named-checkconf

     named-checkzone "区域名" 区域文件路径

    新葡亰496net 9

     

     

    6.修改/etc/resolv,并启动服务。

    新葡亰496net 10

    systemctl start named

     

     

    7.nslookup测试,或者使用dig命令。

     正向解析测试:

    新葡亰496net 11

     反向解析测试:

    新葡亰496net 12

     

    至此简单的配置完毕。

    DNS解析

    一次完整的查询请求经过的流程:
    Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
    解析答案:
    肯定答案:
    否定答案:请求的条目不存在等原因导致无法返回结果
    权威答案:
    非权威答案

    二、DNS解析关键概念:

     

    BIND

    根域 "."

    根域名服务器(英语:root name server)是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址。它们是互联网基础设施中的重要部分,因为所有域名解析操作均离不开它们。由于DNS和某些协议(未分片的用户数据报协议(UDP)数据包在IPv4内的最大有效大小为512字节)的共同限制,根域名服务器地址的数量被限制为13个。 ---- 维基百科

    新葡亰496net 13

    13个根的地址.jpg

    dig 命令用法在下半部分说道,或自己看下linux命令dig用法

    例如:
    www.example.com. 其中的.表示的就是根域

    域是有授权跟上下级关系的,根将组织域的管理授权给组织域自己管理,根只知道自己的直接下级,或者说是授权下级,并不知道自己的下下级是谁。比如,根将.com授权给.com域自己来管理,并在根的ns服务器中记录.com域的ns服务器地址(下文会介绍一些相关概念)

    (一)资源记录(RR, Resource Record)

    • 每个DNS服务器的解析库由各类RR组成

    • 资源记录的类型:

      • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
      • A:Internet Address,FQDN --> IP
      • AAAA:FQDN --> IPv6
      • PTR:PoinTeR,IP --> FQDN
      • NS:Name Server,专用于标明当前区域的DNS服务器
      • CNAME:别名记录
      • MX:Mail eXchanger,邮件交换器
    • 资源记录定义的格式:

      • 语法:name [TTL] IN rr_type value
      • 注意:
        (1) TTL(缓存的生命期)可从全局继承,如:$TTL 1d
        (2) @可用于引用当前域的名字
        (3) 同一个名字可以通过多条记录定义多个不同的IP,此时DNS服务器会以轮询方式响应,这种方式实现了简单的平衡负载
        (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机
        (5) 相邻资源记录的name相同时,后续的name可以省略

    ~]``# rpm -ql bind

    相关介绍

    BIND(Berkeley Internet Name Daemon),是现今互联网上最常使用的DNS服务器软件。
    BIND软件的包名为bind
    服务名:
    /etc/rc.d/init.d/named #CentOS6
    /usr/lib/systemd/system/named.service #CentOS7
    相关包:
    bind-chroot:将named进程的活动范围限定在chroot (/var/named/chroot/)目录,保证安全性。
    bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)
    bind-libs:bind服务器端和客户端都使用到的公共库-文件
    bind-utils:bind客户端工具
    安装:

    [root@CentOS7 ~]#yum -y install bind
    Installed:
      bind.x86_64 32:9.9.4-50.el7         
    Dependency Updated:
    bind-libs.x86_64 32:9.9.4-50.el7        
    bind-libs-lite.x86_64 32:9.9.4-50.el7
    bind-license.noarch 32:9.9.4-50.el7
    bind-utils.x86_64 32:9.9.4-50.el7
    Completet
    

    组织域

    组织域 (TLD: Top Level Domain 顶级域)

    • TLD(组织域)常见域:
      1. 组织域:.com .org .net .cc ……
      2. 国家域:.cn .jp .iq .ca ……
      3. 反向域:IP --> FQDN(正向解析跟反向解析不在同一个数据库中查询)
        • 反向:IP --> FQDN
        • 正向:FQDN -->IP

    (二)SOA记录

    • name:当前域名,可用"@"代替

    • value:包含多部分内容
      (1) 当前区域的主DNS服务器的FQDN(无命名要求,只要和相应的A记录匹配即可)
      (2) 当前区域管理员的邮箱地址;但地址中不能使用"@"符号,一般用"."替换,例如linuxedu.hellopeiyang.com.
      (3) 主从服务器区域传输相关定义,否定结果缓存统一的TTL

    /etc/NetworkManager/dispatcher``.d``/13-named

    配置文件功能

    [root@CentOS6 ~]#rpm -ql bind
    /etc/named.conf             #主配置文件
    /etc/named.rfc1912.zones    #区域配置文件
    /etc/rndc.conf              #rndc(远程名称服务器控制器)配置文件
    /etc/rndc.key               #rndc加密密钥
    /etc/sysconfig/named    
    /var/named/named.ca         #13个根服务器存放文件
    /etc/rc.d/init.d/named      #服务脚本
    /var/named                  #解析库文件存放目录
    /var/named/ZONE_NAME.ZONE   #解析库文件
    

    NS服务器

    客户端请求一个主机的时候,通常是交由这个域下的ns服务器解析(不考虑hosts文件,配置啥的),ns服务器查看当前本地是否有该域名解析结果的缓存,如果没有就去找根.,比如www.example.com,如果本地没有该域名解析的结果就去找根,根只知道自己的直接下级中的.com,根返回参考答案.com 的ns地址,然后ns服务器就去找.com 域下的ns服务器,.com 发现自己的域下有.example 的记录,然后返回.example 下的ns服务器地址,然后ns服务器再去找.example 域下的ns服务器,找www,然后.example 域下的ns服务器直接返回最后结果。

    相关概念:

    • 递归(根是不给任何人递归的):客户端 -->.服务器 -->,根.服务器--> .com服务器 ,根.服务器--> .example服务器
      大致理解成:A问B1 1=?,B说我不知道C知道,B去问C,B告诉A等于2。在这过程中A只发出一次请求,B发出了两次最后得到答案

    • 迭代:客户端 -->.服务器 ,客户端--> .com服务器 ,客户端--> .example服务器
      大致理解成:A问B1 1=?,B说我不知道C知道,A去问C,C告诉A等于2。在这过程中B只发出一次请求,A发出了两次最后得到答案

    • 权威答案:ns服务器返回自己直接域或子域下的域

    • 非权威答案:ns服务器返回非自己直接域或子域下的域

    (三)NS记录

    • name:当前域名,可用"@"代替,常省略
    • value:当前域DNS服务器的主机名
    • 一个域可以有多条NS记录,每条记录都应该匹配一条A记录

    /etc/logrotate``.d``/named

    rndc命令

    rndc:
    rndc --> rndc (953/tcp)
    rndc COMMAND
    COMMAND:
    reload: 重载主配置文件和区域解析库文件
    reload zonename: 重载区域解析库文件
    retransfer zonename: 手动启动区域传送,而不管序列号是否增加
    notify zonename: 重新对区域传送发通知
    reconfig: 重载主配置文件
    querylog: 开启或关闭查询日志文件/var/log/message
    trace: 递增debug一个级别 trace LEVEL: 指定使用的级别
    notrace:将调试级别设置为 0
    flush:清空DNS服务器的所有缓存记录

    NS服务器

    大致理解成,根将.com域授权给.com管理,但是要在根服务器的NS服务器中留下一个记录,让客户端来查询的时候好返回并告诉.com域中NS服务器的地址。你理解成管理员也行,就像我问你XX小学三年级有没有个叫张三的,XX小学相当域根.,三年级相当于.com域,张三相当于.example域,而NS服务器就相当于这个班的班主任(管理员),你问班主任他肯定知道有没有。

    (四)MX记录

    • name:当前域名,可用"@"代替,常省略
    • value:当前域的邮件服务器的主机名,格式:## mail_server_addr
      ##表示数字(1-99),数字越小优先级越高
    • 一个域可以有多条MX记录,每条记录都应该匹配一条A记录

    /etc/named   

    开启服务

    [root@CentOS6 ~]#service named start
    [root@CentOS7 ~]#systemctl start named
    Generating /etc/rndc.key:                 [  OK  ]
    Starting named:                           [  OK  ]
    

    DNS服务器类型

    • 主DNS服务器:数据(记录,配置)的修改

    • 辅助DNS服务器服务器
      请求数据同步(通过主版本号的变更,或者主通知从修改)涉及axfr/ixfr 完全/增量

      serial number:    版本号(不超过十位)  
      
      refresh :     定义每隔多少时间检查主版本号时间
      retry:            重试时间(refresh没有响应)
      expire:               过期时间(主宕机)
      nagative answer TTL: 否定答案缓存时长(该解析没有结果)
      
    • 缓存DNS服务器

    • 转发器

    NS服务器数据库中的每一个条目称作一个资源记录(Resource Record,RR)
    资源记录的格式:

    新葡亰496net,NAME(名称) [TTL]
    TTL(失效时间)
    IN(表明Internet上的记录)
    RRT(资源记录类型)
    VALUE(值)

    例如:
    www.example.com.  600  IN  A  10.0.0.1
    10.0.0.1  600  IN  PTR  www.example.com.

    (五)A记录和AAAA记录

    • name:主机的FQDN
    • value:主机的IP地址
    • 特殊写法:
      $GENERATE 1-254 HOST$ A 1.2.3.$:按照序号排列规律的FQDN与IP的对应关系
      *.magedu.com. IN A 5.5.5.5:泛域名解析,当用户输错地址时,统一解析至某个地址
      magedu.com. IN A 6.6.6.6:当用户没有输入www主机名时解析至地址
    • AAAA记录与A记录相似,只是IP地址为IPv6地址

    /etc/named``.conf    ``#bind主配置文件

    查看端口

    [root@CentOS7 ~]#ss -nutlp
    Netid  State    Recv-Q Send-Q   Local Address:Port
    udp    UNCONN     0      0         *:5353             *:*   
    users:(("avahi-daemon",pid=560,fd=12))
    udp    UNCONN     0      0      127.0.0.1:53          *:*         
    users:(("named",pid=7540,fd=513),("named",pid=7540,fd=512))
    udp    UNCONN     0      0      192.168.122.1:53      *:*         
    users:(("dnsmasq",pid=2189,fd=5))
    udp    UNCONN     0      0       ::1:53               :::*       
    users:(("named",pid=7540,fd=515),("named",pid=7540,fd=514))
    tcp    LISTEN     0      10     127.0.0.1:53           *:*       
    users:(("named",pid=7540,fd=21))
    tcp    LISTEN     0      5      192.168.122.1:53       *:*       
    users:(("dnsmasq",pid=2189,fd=6))
    tcp    LISTEN     0      10      ::1:53               :::*       
    users:(("named",pid=7540,fd=22))
    

    DNS服务使用UDP和TCP协议的53端口,观察开启服务后的53端口状态,发现53端口只监听本机的回还网址127.0.0.1而本机的回还网址,只能本机访问,其他机器不能访问到DNS服务监听的端口。所以,DNS服务安装服务包之后,直接开启服务并不能做到为其他机器提供DNS服务。

    tcp协议53端口负责主从同步
    udp协议53端口负责主从同步以及客户端查询

    注意:

    (1) 一台物理服务器可同时为多个区域提供解析

    (2) 必须要有根区域文件;named.ca

    (3) 应该有两个(如果包括ipv6的,应该更多)实现localhost 和本地回环地址的解析库

    rndc: remote name domain controller, 默认与bind安装在同一主机,且只能通过127.0.0.1连接 named进程
    提供辅助性的管理功能;953/tcp

    资源记录类型(RRT)
    1. SOA (Start Of Authority;起始授权记录)
      格式:ZONE NAME  TTL  IN  SOA  FQDN  ADMINISTRATOR_MAIL( serial number refresh retry expire nagative answer TTL )
      时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
      邮箱地址:admin@example.com 写为--> admin.example.com @有特殊含义
      例:example.com.  600  IN  SOA  ns1.example.com.  admin.example.com.  ( 20171123 1D 5M 3D 3H )

    2. NS(Name Server): ZONE NAME --> FQDN (指定该域ns记录,一定要随之给条A记录)
      例:example.com.  600  IN  NS  ns.example.com.

    3. A(address):FQDN --> IPv4

    4. AAAA:FQDN --> IPv6

    5. PTR(pointer): IP --> FQDN ;(不区分IPv4,IPv6)

    6. MX(Mail eXchanger): ZONE NAME --> FQDN
      格式:ZONE NAME  TTL  IN  MX  pri(优先级,越小越高)  VALUE
      例:example.com.  600  IN  MX  10  mail.example.com.

    7. CNAME(Canonical NAME;正式名称): FQDN --> FQDN
      例:www2.example.com.  600  IN  CNAME  www.example.com.

    (六)CNAME记录

    • name:别名QFDN
    • value:真实名QFDN

    /etc/named``.iscdlv.key

    备份配置文件

    配置服务配置文件之前,养成良好习惯做备份

    [root@CentOS6 ~]#cp /etc/named.conf /etc/named.conf.bak
    [root@CentOS6 ~]#ll /etc/named.conf*
    -rw-r----- 1 root named 984 Nov 20  2015 /etc/named.conf
    -rw-r----- 1 root root  984 Sep 20 17:04 /etc/named.conf.bak
    [root@CentOS6 ~]#getent passwd named
    named:x:25:25:Named:/var/named:/sbin/nologin
    

    备份配置文件要注意文件的权限,以及所有者所属组。如上,主配置文件对于other是没有任何权限的,但是文件属于named组,bind包安装的时候会创建named用户,服务运行将会以named的身份运行用户named属于named组所以对配置文件有读权限。如果备份的配置文件不属于named组那么程序以named身份运行就拿不到配置文件的读权限,程序自然也就不能正常运行了。

    [root@CentOS6 ~]#chgrp named /etc/named.conf.bak 
    [root@CentOS6 ~]#ll /etc/named.conf.bak
    -rw-r----- 1 root named 984 Sep 20 17:04 /etc/named.conf.bak
    

    接下来就可以放心更改主配置文件了

    域跟区域

    域(Domain):一个逻辑概念
    区域(Zone):不太好解释,他们有包含关系,又好像没有关系。
    一个域中可以分为多个区域,但一个区域又能指向一个域。就好像根区域文件中定义.com域记录,但是.com域中有可以有多个区域。额。。。我也是看视频理解的,这个不太好描述

    • 区域文件:
      一般都会定义两个区域文件正向区域文件反向区域文件
      正向区域文件:
      example.com.  600  IN  SOA  ns1.example.com.  admin.example.com. ( 20171122 1H 5M 1D 3H )
      简写:
      @  600  IN  SOA  ns1  admin ( 20171122 1H 5M 1D 3H ) 应该可以,我是试了下,dig了下正常解析没有报错
      反向区域文件(假如当前172.17.0.0/16段网络,网段反过来加后缀,后缀固定):
      0.17.172.in-addr.arpa  600  IN  SOA  ns1.example.com.  admin.example.com. ( 20171122 1H 5M 1D 3H )
      简写:
      @  600  IN  SOA  ns1.example.com.  admin.example.com. ( 20171122 1H 5M 1D 3H ) 区域名一定不能简写

    • 区域传送方式 (主dns服务器传送更新数据至从dns服务器 ):

      • 完全区域传送(同步所有):axfr
      • 增量区域传送(同步修改):ixfr
    • 区域类型:

      • 提示区域(定义根在什么地方):hint
      • 主区域:master
      • 从区域:slave
      • 转发区域(不需要通过根查询,直接配置需要查询域内的ns服务器地址):forward

    (七)PTR记录

    • name:特定格式IP 特定后缀
      IP地址反过来写:如1.2.3.4写作4.3.2.1
      特定后缀:in-addr.arpa.
      完整写法:4.3.2.1.in-addr.arpa.
    • value:FQDN

    /etc/named``.rfc1912.zones    ``#定义zone的文件

    /etc/named.conf

    主配置文件

    [root@CentOS6 ~]#vim /etc/named.conf
    options {
    #options全局配置
            listen-on port 53 { localhost; };
            #监听端口默认只监听本机回还网址不提供外界服务
            #可以修改添加本机能与外部主机通信的IP地址来位外界服务
            #或者将53端口绑定在本机所有IP写法为{ localhost; };
            #或者加注释,或者删除该行,默认监听所有本机所有IP地址
            listen-on-v6 port 53 { ::1; };
            #IPV6地址监听情况可以写法与IPV4类似
            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     { localhost; };
            #允许查询列表默认只允许本机查询
            recursion yes;              
            #递归行为开关,是否提供本地有记录的域名解析服务,如果被查询的域名在本地的数据库没有记录是否转发到根去递归查询。
            dnssec-enable yes;
            dnssec-validation yes;
           /* Path to ISC DLV key */
             bindkeys-file "/etc/named.iscdlv.key";
            managed-keys-directory "/var/named/dynamic";
    };
    #记录日志部分
    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.rfc1912.zones";
    include "/etc/named.root.key";
    

    BIND:Berkeley Internet Name Domain(ISC 维护)

    • 配置文件:

      • /etc/named.conf:定义BIND进程的工作数据,区域文件定义
      • /etc/rndc.key:定义rndc访问秘钥
      • /etc/rndc.conf:rndc访问配置文件
      • /var/named/:区域数据文件存放位置
      • /etc/rc.d/init.d/named {start|stop|restart|status|reload|configtest}:二进制启动文件
    • 启动进程:named

    • 监听协议及端口:
      53/UDP:查询,解析
      53/TCP:主从同步数据传输
      953/TCP:rndc访问时使用端口

    三、BIND:

    /etc/named``.root.key

    /etc/named.rfc1912.zones

    区域信息配置文件
    主DNS名称服务器:

    (1) 在主配置文件中定义区域
    zone "ZONE_NAME" IN {
    type {master|slave|hint|forward};
    file "ZONE_NAME.zone";
    };

    (2) 定义区域解析库文件
    出现的内容
    宏定义
    资源记录
    主配置文件语法检查: named-checkconf

    [root@CentOS6 ~]#vim /etc/named.rfc1912.zones 
    zone "huxiaoqi.com" IN {
    #表示huxiaoqi.com这个域的DNS服务器
    #IN表示inter类型,可以省略不写
            type master;
            #一个域通常要有多个DNS服务器,保证主DNS服务器出现故障时要有其他
            #DNS服务器顶替主DNS服务器的工作。一个域只有一个主DNS服务器,type
            #类型为master,其他的DNS服务器则为slave从服务器
            file "huxiaoqi.com.zone";
            #表示区域数据库文件名,路径在/var/named下
    };
    

    (3)允许更新:
    指定的zone语句块中:Allow-update {any;};

    [root@CentOS6 ~]#vim /etc/named.rfc1912.zones 
    zone "huxiaoqi.com" IN {
            type master;
            file "huxiaoqi.com.zone";
            allow-update { 172.18.45.7; };
    };
    #指定IP为172.18.45.7的主机可以动态更新解析库文件
    

    其他主机通过命令动态更新解析库文件之后更新的内容会立即生效,但是不会立即写入解析库文件,而是先以named这个系统用户在/var/named/这个目录下创建一个日志文件,隔一段时间才会更新真正的解析库文件。
    所以,要实现授权其他主机可以动态更新解析库文件,前提是named这个系统用户对/var/named这个目录有读写执行权限,默认只有读执行权限。
    更改权限:

    [root@CentOS6 ~]#ll -d /var/named
    drwxr-x--- 5 root named 4096 Sep 23 20:44 /var/named
    [root@CentOS6 ~]#chmod g w /var/named/
    [root@CentOS6 ~]#ll -d /var/named/
    drwxrwx--- 5 root named 4096 Sep 23 20:44 /var/named/
    

    setsebool -P named_write_master_zones on 设置selinux策略
    动态更新:

    [root@CentOS7 ~]#nsupdate
    > server 172.18.45.6        #指定要更新的DNSsrv
    > zone huxiaoqi.com         #指定要更新的库
    > update add dbsrv.huxiaoqi.com 68400 IN A 8.8.8.8
    #更新内容:添加一条A记录
    #对应的删除该条记录就是update delete dbsrv.huxiaoqi.com A 
    > send
    

    自动生成的日志文件:

    -rw-r--r-- 1 named named  726 Sep 23 22:16 huxiaoqi.com.zone.jnl
    

    测试:

    [root@Centos6 ~]#dig dbsrv.huxiaoqi.com
    ;; ANSWER SECTION:
    dbsrv.huxiaoqi.com. 68400   IN  A   8.8.8.8
    

    /etc/named.conf 配置文件解析(主要options、zone、view)

    (一)BIND的安装

    • 安装:yum install BIND
    • 列出BIND有关程序包名:yum list all BIND*
      bind:服务器
      bind-libs:相关库
      bind-utils:客户端
      bind-chroot:迁移BIND目录至深层目录,减少BIND被黑客攻破对系统的影响
    • 程序名:named
    • 服务脚本:
      /etc/rc.d/init.d/named CentOS 6
      /usr/lib/systemd/system/named.service CentOS 7
    • 主要配置文件:
      /etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
    • 解析库文件
      /var/named/ZONE_NAME.ZONE

    /etc/portreserve/named

    区域数据库文件

    options 参数选项解析

    options {
            directory "/PATH/TO/SOMEWHERE";  工作目录
            recursion yes;  是否开启递归
            allow-recursion { 10.0.0.1/16; };   定义递归客户端来源
            masters { 10.0.0.1; };  定义从服务器拉取数据的主服务器地址
            querylog yes;   打开查询记录日志功能
            allow-query {}; 允许谁来查询
            allow-transfer {};  允许谁发送传送请求(完全区域传送axfr增量ixfr)
            notify yes;     是否启动通知
            forward {only|first};   转发方式 only:直接丢给父域解析,或自己先解析
            forwarders  { 10.0.0.1/16; };   接受转发地址
    }; 严格限定语法,需要加结束符";"号
    

    (二)BIND的配置

    /etc/rc``.d``/init``.d``/named    #bind脚本文件

    区域数据库文件简介

    区域数据库文件的文件名要与之前区域配置文件中指定的文件名严格一致,存放位置在/var/named目录下
    区域数据库文件要手工创建,格式较为复杂,可以参考系统已经存在的文件按照需求适当修改。

    [root@CentOS6 ~]#ls /var/named/
    data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
    #named.localhost 参考该文件的格式
    [root@CentOS6 ~]#cp -p /var/named/named.localhost /var/named/huxiaoqi.com.zone
    #复制同样要注意权限问题 -p 保留源文件的属性信息
    

    DNS服务器数据库中每一个条目都是一个资源记录(Resource Record,RR)。
    常见的正解文件 RR 相关信息

    [domain] IN [[RR type] [RR data]](值)
    主机名. IN A IPv4 的 IP 地址
    主机名. IN AAAA IPv6 的 IP 地址
    领域名. IN NS 管理这个领域名的服务器主机名字.
    领域名. IN SOA 管理这个领域名的七个重要参数
    领域名. IN MX 顺序数字 接收邮件的服务器主机名字
    主机别名. IN CNAME 实际代表这个主机别名的主机名字.

    格式:任何类型的记录都会有五条内容
    1NAME 2TTL 3IN 4RRType 5VALUE

    NAME:拥有资源记录的DNS域名
    TTL:以时间为单位,表示记录的缓存有效期,一般所有记录的缓存有效期都会一样。所以TTL可以提前定义变量,全局有效,不用每条记录都写。当然如果有特殊的记录与其他纪录的缓存有效期不同,也可以单独定义,单独定义的TTL的优先级高于提前定义的变量。
    IN:internet类型一般照抄就行
    VALUE:值,不同类型记录的值不同
    RRType,记录类型包括:A, AAAA, PTR, SOA, NS, CNAME, MX

    注意:

    (1) TTL可从全局继承

    (2) @可用于引用当前区域的名字

    (3) 同一个名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应

    (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

    zone 参数选项解析
    zone "ZONE NAME" IN {
                type {master|slave|hint|forward};   服务器类型
                allow-transfer {none};  执行区域传送主机
                masters { 10.0.0.1; };  定义从服务器拉取数据的主服务器地址
                forward {only|first};   转发方式 only:直接丢给父域解析
                forwarders  { 10.0.0.1/16; };   接受装发地址
                querylog yes;   打开查询记录日志功能
    };
    
    (1)配置主配置文件:/etc/named.conf
    • 全局配置:options {};
    • 日志子系统配置:logging {};
    • 区域定义:zone "ZONE_NAME" IN {};
    • 定义本机能够提供解析的zone
    • dnssec:dns的安全选项,建议关闭dnssec,设为no

    /etc/rndc``.conf    ``#rndc配置文件

    常用记录类型:

    1. A:
      A记录也称为主机记录。将DNS域名指向一个IPv4的IP地址。一个域名可以创建多个不同的IPv4地址。
      示例:www.huxiaoqi.com. IN A 172.18.45.6
      FQDN(完全合格域名/全称域名)可以使用相对名称
      泛域名解析:*.huxiaoqi.com. IN A 5.5.5.5 当用户输入错误的域名是跳转到指定的IP,例如输入wwwwww.huxiaoqi.com 这个域名那么跳转到5.5.5.5Z这个IP
      $GENERATE 1-254 HOST$ A 1.2.3.$表示在某个个域中有HOST{1,254}这么多子域对应的域名是1.2.3.{1,254}
    2. AAAA:
      将DNS域名指向一个IPv6的IP地址。
      CNAME:FQDN --> FQDN ,别名记录
    3. MX:
      Mail eXchanger,邮件交换器
      (Mail exchanger),区域名称 --> FQDN
    4. NS:
      域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析
      NAME:区域名称,可以简写为@符号
      VALUE:DNS服务器的FQDN,(可以使用相对名称)可以有多条
    5. SOA:Start of Authority
      NS记录说明了有多台服务器在进行解析,但哪一个才是主服务器呢,NS并没有说明,这个就要看SOA记录了,SOA名叫起始授权机构记录,SOA记录说明了在众多NS记录里那一台才是主要的服务器

      $TTL 1D     #提前定义所有记录的缓存有效期为一天,后续记录省略该项
       @    IN     SOA    DNS1    rname.invalid. (
                                           0       ; serial
                                           1D      ; refresh
                                           1H      ; retry
                                           1W      ; expire
                                           3H )    ; minimum
      #NAME:@ SOA的NAME就是本域的域名可以用@表示,也可以写成本域的域名既对应的区域配置文件中定义的域的域名,之前配置文件定义的域是huxiaoqi.com,所以这里的本域域名应叫huxiaoqi.com.注意,com之后的.不能省略。简易直接使用@表示。
      #TTL:省略,因为提前定义了
      #IN:照抄的关键字
      #RRType:SOA资源记录类型
      #VALURE:SOA记录的值有七项,从DNS1到记录末尾都是SOA记录的值
          #第一项:主DNSsrv的标识,表示谁提供了本域的主要解析服务,只起到表标识作用,配合一条A记录指明主DNSsev的IP地址例如:
                  #DNS1   A   172.18.45.6
          #第二项:主DNSsev的管理员的邮箱地址,邮箱中的@以.替换末尾以.结束
          #第三项:0    ; serial表示该区域数据库的版本号,可以从任何数字开始,最多十位。每次更改主数据库内容时都要增大版本号,从数据库根据版本号来判断主数据库的数据是否发生变化。
          #第四项:1D   ; refresh表示从DNSsrv主动去主DNSsrv拉取数据的周期。
          #第五项:1H   ; retry表示从DNSsrv主动去主DNSsrv拉取数据失败后再次尝试的时间间隔。
          #第六项:1W   ; expire表示从DNSsrv如果一周时间还不能成功的从主DNSsrv拉取数据,那么从DNSsrv数据失效
          #第七项:3H   ; minimum表示解析失败记录缓存有效期
      
    6. PTR
      反向解析记录
      PoinTeR,IP --> FQDN

    7. CNAME:
      Canonical Name,别名记录

      ### DNS正向解析

      基于之前配置的主配置文件,以及区域配置文件。然后配置解析数据库文件,达到DNS服务的初步正向解析。
      解析库文件语法检查:
      named-checkzone "huxiaoqi" /var/named/huxiaoqi.com.zone
      rndc status|reload 服务状态|重读配置文件
      service named reload 重读配置文件
      配置解析数据库文件:

      [root@CentOS6 ~]#vim /var/named/huxiaoqi.com.zone 
      $TTL 1D
      @     IN    SOA     dns1    rname.invalid. (
                                          0       ; serial
                                          1D      ; refresh
                                          1H      ; retry
                                          1W      ; expire
                                          3H )    ; minimum
          NS      dns1
      dns1    A       172.18.45.6
      websrv  A       172.18.45.7
      www     CNAME   websrv
       #主DNSsrv为dns1
       #一条A记录域名为websrv的主机的IP地址为172.18.45.7
       #一条CNAME别名记录,表明www为websrv的别名
      

      检查配置文件语法:

      [root@CentOS6 ~]#named-checkzone huxiaoqi.com /var/named/huxiaoqi.com.zone 
      zone huxiaoqi.com/IN: loaded serial 0
      OK
      #命令之后跟域名再跟解析数据库文件的路径
      

      重读配置文件:

      [root@CentOS6 ~]#rndc reload 
      server reload successful
      

      测试:
      使用其他机器测试的时候要求修改主配置文件/etc/named.conf中options栏下的allow-query { 172.18.45.61; };项,指定允许查询的主机IP,如果该DNSsrv提供外界服务那么可以写成allow-query { any; };表示所有主机都能查询。

      [root@CentOS6 ~]#dig www.huxiaoqi.com @172.18.45.6
      ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> www.huxiaoqi.com @172.18.45.6
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
      ;; ANSWER SECTION:
      www.huxiaoqi.com.   86400   IN  CNAME   websrv.huxiaoqi.com.
      websrv.huxiaoqi.com.    86400   IN  A   172.18.45.7
      #只摘取了部分信息
      #flags: qr aa 表示查询的域名在这台DNS服务器的解析数据库中有记录,是权威数据。
      

      ### DNS反向解析

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

    (1) 定义区域
    zone "ZONE_NAME" IN {
    type {master|slave|forward};
    file "网络地址.zone"
    };

    (2) 定义区域解析库文件
    注意:不需要MX,以PTR记录为主

    基于之前主配置文件/etc/named.conf的配置,配置区域信息配置文件,建立反向解析数据库,实现DNSsrv反响解析:
    区域信息配置文件写法示例:

    zone "45.18.172.in-addr.arpa"{
            type master;                
            file "172.18.45.zone";      #指定反向解析数据库文件名
    };
    [root@CentOS6 ~]#named-checkconf
    #语法检查
    

    反向解析数据库文件写法:

    [root@CentOS6 ~]#vim /var/named/172.18.45.zone 
    $TTL 1D
    @    IN    SOA   dns1.huxiaoqi.com.   admin.hxq.com.  (
                                                             1
                                                             10m
                                                             2m
                                                             1h
                                                             3h )
                    NS      dns1.huxiaoqi.com.
    7               PTR     websrv.huxiaoqi.com.
    6               PTR     mailsrv.huxiaoqi.com.
    #SOA记录指定dns1.huxiaoqi.com.这个主机是该域的反向解析的主DNSsrv.
    #两条PTR记录分别表示IP为172.18.45.7对应的FQDN是dns1.huxiaoqi.com.,IP为172.18.45.6的这个主机对应的FQDN是mailsrv.huxiaoqi.com.
    

    语法检查:

    [root@CentOS6 named]#named-checkzone "45.18.172.in-addr.arpa" 172.18.45.zone 
    zone 45.18.172.in-addr.arpa/IN: loaded serial 1
    OK
    ​````
    检测:
    ​```shell
    [root@Centos6 ~]#dig -x 172.18.45.7
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> -x 172.18.45.7
    ;; global options:  cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41806
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
    ;; ANSWER SECTION:
    7.45.18.172.in-addr.arpa. 86400 IN  PTR websrv.huxiaoqi.com.
    

    拿到域名,完成反向解析

    view 参数选项解析(定义视图实现智能dns解析)

    一旦定义视图,zone都要定义在视图中

    view VIEW_NAME {
            match-clients {};   匹配客户端来源
            zone "ZONE NAME" IN { };
    };
    

    dig命令:
    dig -t RT(资源记录类型) NAME(资源记录名称) @IP(指定ns地址查询)
      -x IP: 查找该ip的FQDN

    2017/11/23 13:40:41

    (2)配置解析库文件:按照资源记录的格式定义

    /etc/rndc``.key

    实现主从服务器

    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";
    };

    zone "huxiaoqi.com" IN {
            type slave;
            masters { 172.18.45.6; };
            file "slaves/huxiaoqi.com.slave.zone";
    };
    #类型为slave,指定主DNSsrv是172.18.45.6
    #解析库文件位置在/var/named/slaves/目录下
    #解析库文件名为huxiaoqi.com.slave.zone
    

    从DNSsrv的解析库文件,不需要手动去创建,系统自动从指定的主DNServ上抓取数据然后保存在/var/named/slaves目录下。
    主DNSsrv的解析库文件如果修改数据的话,一定要把版本号serial调大,从DNSsrv只根据主DNSsrv的解析库文件的版本好来判断解析库文件是否发生变化。
    默认情况下,其他主机可以轻易的通过命令抓取DNSsrv的解析库文件的数据,存在安全风险,所以主DNSsrv应设置只允许自己的从DNSsrv从自己的解析库文件抓取数据。而从DNSsrv则应设置不允许任何人抓取解析库文件。
    在/etc/named.conf中添加一行:allow-transfer {none|IP;};

    (3)格式检查:
    • 主配置文件语法检查:named-checkconf
    • 解析库文件语法检查:named-checkzone zone_name PATH_TO_ZONE_NAME

    /etc/sysconfig/named

    子域

    实现子域父域在同一台DNSsrv
    假设huxiaoqi.com这个域有一个子域zhengzhou,平时访问量不大,没有单独配置DNSsrv的意义,就考虑在一台DNSsrv配置。
    方法就是将zhengzhou.huxiaoqi.com这个域独立成一个域,也就是独立创建一个zone。此时事实上这两个域相互独立没有关系,仅从域名来说存在父子关系。
    实现主DNSsrv委派子域给其他DNSsrv:
    例如zhengzhou这个域是huxiaoqi.com 的一个子域,因为访问量太大,一台服务器那一负载。所以考虑将该子域委派给其他DNSsrv。
    在huxiaoqi.com这个域的解析库文件中添加一条NS记录:

    zhengzhou       NS  172.18.45.7
    #指定郑州这个域由IP为172.18.45.7这台主机提供名字解析服务
    

    在IP为172.18.45.7这台主机上创建zhenghzou.huxiaoqi.com这个域

    [root@CentOS7 ~]#vim /etc/named.rfc1912.zones
    zone "zhengzhou.huxiaoqi.com" IN {
            type master;
            file "zhengzhou.huxiaoqi.com.zone";
    };      
    

    创建该域的解析库文件:

    [root@CentOS7 ~]#cat /var/named/zhengzhou.huxiaoqi.com.zone 
    $TTL 86400  ; 1 day
    @   IN   SOA    dns1     rname.invalid. (
                        1
                        86400
                        3600
                        604800
                        10800
                        )
            NS  dns1
    dns1    A   172.18.45.7
    dbsrv   A   8.8.8.8
    

    测试:

    [root@Centos6 ~]#dig dnsrv.zhengzhou.huxiaoqi.com
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6 <<>> dnsrv.zhengzhou.huxiaoqi.com
    ;; global options:  cmd
    ;; Got answer:
    ;; ANSWER SECTION:
    dnsrv.zhengzhou.huxiaoqi.com. 86400 IN  A   8.8.8.8
    

    成功

    (4)重载配置:

    rndc reloadservice named reload

    /usr/lib64/bind

    转发服务器

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

    (1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器

    /etc/named.com
    Options { 
            forward  first|only; 
            forwarders { ip;}; 
    }; 
    #两种转发规则:
    #first:自己解析不了的域名先转发给指定的DNSsrv,如果目标DNSsrv也不能解析就继续转发给根。
    #only:自己解析不了的域名只转发给指定的DNSsrv,无论有么有得到答案都不再继续转发。
    

    (2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高

    /etc/named.rfc1912.zones 
    zone "ZONE_NAME" IN {
            type forward; 
            forward  first|only; 
            forwarders { ip;}; 
    }; 
    

    注意:关闭dnssec(安全检测)功能:
    dnssec-enable no;
    dnssec-validation no;

    (5)实验:配置基本的DNS服务,DNS正向解析

    将192.168.136.230配置为"hellopeiyang.com"域的DNS服务器,本区域主机"websrv"的IP地址为192.168.136.229,"www"是"websrv"的别名,邮件服务器"mailsrv1"的IP地址为192.168.136.100,邮件服务器"mailsrv2"的IP地址为192.168.136.101,mailsrv1的优先级更高

    • 第1步,配置主配置文件/etc/named.conf,修改options字段,修改部分如下:
    vim /etc/named.conf
    
    options {
            listen-on port 53 { localhost; };
            //修改监听主机IP为localhost,这样网络上的其他主机可以连接本机的DNS服务
            //也可以通过注释本条语句达到相同效果
            allow-query     { any; };
            //修改允许查询的客户端网段,any表示任意客户端可以向本机发起DNS请求,并得到查询结果
    };
    
    • 第2步,修改独立区域配置文件,添加区域配置信息:
    vim /etc/named.rfc1912.zones
    
    zone "hellopeiyang.com" IN {
            type master;                      //类型为主服务器
            file "hellopeiyang.com.zone";     //必须与/var/named下的文件名相同
    };
    
    • 第3步,配置解析库文件
      解析库文件可以手动编辑,也可以复制类似文件修改,这里将/var/named目录下的named.localhost文件复制并重命名为hellopeiyang.com.zone文件,并作出相应修改
    cp -p /var/named/named.localhost /var/named/hellopeiyang.com.zone  //复制时保留所属组权限
    vim /var/named/hellopeiyang.com.zone
    
    $TTL 1D     //DNS缓存生命期的全局设置
    @       IN SOA  dns1 admin.hellopeiyang.com. (    
    //dns1:主DNS服务器域名
    //本配置文件中凡是域名处若末尾不加"."系统识别时自动认为其后增加当前域名,
    如这里"dns1"视作"dns1.hellopeiyang.com."
                                            100     ; serial     //序列号,不多于10位
                                            1D      ; refresh    //从DNS服务器更新时间
                                            1H      ; retry      //从DNS服务器重试时间
                                            1W      ; expire     //从DNS服务器失效时间
                                            3H )    ; minimum    //错误的DNS缓存生命期
            NS      dns1             //DNS服务器主机名
    dns1    A       192.168.136.230  //DNS服务器的IP地址
    websrv  A       192.168.136.229  //本域下的主机websrv的IP地址
    www     CNAME   websrv           //主机websrv的别名
    @       MX      10 mailsrv1      //邮件服务器mailsrv1.hellopeiyang.com
    @       MX      20 mailsrv2      //邮件服务器mailsrv2.hellopeiyang.com
    mailsrv1  A     192.168.136.100  //邮件服务器mailsrv1.hellopeiyang.com的IP
    mailsrv2  A     192.168.136.101  //邮件服务器mailsrv2.hellopeiyang.com的IP
    
    • 第4步,格式检查:
      检查主配置文件:named-checkconf
      检查解析库文件:named-checkzone hellopeiyang.com hellopeiyang.com.zone

    新葡亰496net 14

    • 第5步,重新载入配置:
      rndc reload 或者 systemctl reload named

    • 第6步,测试:
      dig www.hellopeiyang.com @192.168.136.230
      测试成功,返回结果中NS、A、CNAME记录与设置相同,同时aa标签表明指定的DNS服务器192.168.136.230是www.hellopeiyang.com网路主机的权威服务器

    新葡亰496net 15

    /usr/sbin/arpaname

    bind中ACL

    bind中基础的安全相关的配置: acl: 把一个或多个地址归并为一个集合,并通过一个统一的名 称调用
    格式:

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

    bind有四个内置的acl:
    none: 没有一个主机
    any: 任意主机
    localhost: 本机
    localnet: 本机的IP同掩码运算后得到的网络地址
    注意:只能先定义,后使用;因此一般定义在配置文件中, 处于options的前面

    (6)只允许DNS返回本机存在的DNS记录(适用于企业内网)

    修改/etc/named.conf文件options字段recursion选项,修改如下:
    recursion no;
    此时,请求一个DNS服务器不知道的域名,服务器直接拒绝

    新葡亰496net 16

    /usr/sbin/ddns-confgen

    访问控制

    访问控制的指令:
    allow-query {}: 允许查询的主机;白名单
    allow-transfer {}:允许区域传送的主机;白名单
    allow-recursion {}: 允许递归的主机,建议全局使用
    allow-update {}: 允许更新区域数据库中的内容

    (三)测试命令

    /usr/sbin/dnssec-dsfromkey

    测试命令

    (1)dig命令
    • 语法:dig [-t type] name [@SERVER]
      dig只用于测试dns系统,不会查询hosts文件进行解析
    • 查询选项:
      [no]trace:跟踪解析过程
      [no]recurse:进行递归解析
    • 测试反向解析:dig -x IP
    dig -t ns . @114.114.114.114     //查询根DNS服务器域名
    dig -t mx hellopeiyang.com @192.168.136.230     //查询hellopeiyang.com域的邮件服务器
    

    新葡亰496net 17

    /usr/sbin/dnssec-keyfromlabel

    dig:

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

    查询选项:
    [no]trace:跟踪解析过程 : dig trace huxiaoqi.com
    [no]recurse:进行递归解析
    测试反向解析:
    dig -x IP = dig –t ptr reverseip.in-addr.arpa
    模拟区域传送:
    dig -t axfr ZONE_NAME @SERVER
    dig -t axfr magedu.com @10.10.10.11
    dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
    dig -t NS . @114.114.114.114 #查询根的NS记录,也就是根的13个DNSsrv
    dig -t NS . @a.root-servers.net

    (2)host命令
    • 语法:host [-t type] name [SERVER]
    host -t ns . 114.114.114.114     //查询根DNS服务器域名
    dig -t mx hellopeiyang.com 192.168.136.230     //查询hellopeiyang.com域的邮件服务器
    

    新葡亰496net 18

    /usr/sbin/dnssec-keygen

    host:

    语法:
    host [-t type] name [SERVER]
    host –t NS huxiaoqi.com 172.16.0.1
    host –t soa huxiaoqi.com
    host –t mx huxiaoqi.com
    host –t axfr huxiaoqi.com
    host 1.2.3.4

    (3)nslookup命令
    • 交互式命令:
      • server IP:指定DNS服务器地址
      • 域名:查找域名的A记录
      • set type=TYPE_NAME:设置之后查询信息的记录类型

    新葡亰496net 19

    /usr/sbin/dnssec-revoke

    nslookup:

    nslookup [-option] [name | -] [server]
    交互式模式:
    nslookup>
    server IP: 指明使用哪个DNS server进行查询
    set q=RR_TYPE: 指明查询的资源记录类型
    NAME: 要查询的名称

    (四)反向区域解析

    • 反向区域解析与正向区域解析类似,同样需要修改/etc/named.rfc1912.zones和建立/var/named目录下的解析库文件

    • 第1步,修改独立区域配置文件,添加区域配置信息:

    vim /etc/named.rfc1912.zones
    
    zone "136.168.192.in-addr.arpa"{     //反向解析域,IP需要倒写
            type master;
            file "192.168.136.zone";
    };
    
    • 第2步,配置解析库文件:
    vim /var/named/192.168.136.zone
    
    $TTL 1d
    @  IN  SOA dns1.hellopeiyang.com. admin.hellopeiyang.com. (100 3h 1h 12h 1d )
           NS  dns1.hellopeiyang.com.
    230    PTR dns1.hellopeiyang.com.
    229    PTR websrv.hellopeiyang.com.
    100    PTR mailsrv1.hellopeiyang.com.
    101    PTR mailsrv2.hellopeiyang.com.
    

    注意:NS和PTR记录的域名应该写全并以"."结束,以防止系统自动视作在其后添加反向解析域

    • 第3步,格式检查:
      named-checkconf
      named-checkzone 192.168.136.zone /var/named/192.168.136.zone

    • 第4步,重新载入配置:
      rndc reload

    • 第5步,测试:
      dig -x 192.168.136.229 @192.168.136.230 或者下条命令
      dig -t ptr 229.136.168.192.in-addr.arpa @192.168.136.230

    新葡亰496net 20

    /usr/sbin/dnssec-settime

    智能DNS

    服务器与客户端之间的距离也会影响连接速度,DNS可以利用视图的原理实现智能DNS,既实现当来自不同地区的客户访问同一台客户端的时候,DNS服务器自动识别客户端的地区,然后返回一个与客户端相对距离较近的服务器的IP地址。
    view:视图,一个bind服务器可定义多个view,每个view中可 定义一个或多个zone
    每个view用来匹配一组客户端
    多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
    格式:

    view VIEW_NAME { 
        match-clients { testacl;  }; 
        zone “huxiaoqi.com” { 
            type master; 
            file “huxiaoqi.com.zone”; 
            }; 
        include “/etc/named.rfc1912.zones”; 
    };
    

    事实上DNSsrv的搭建是比较困难的,对于一般的中小型公司可以选择购买CDN服务。
    CDN: Content Delivery Network 服务商:蓝汛,网宿,帝联等
    智能DNS: dnspod dns.la
    关于DNS的相关知识就介绍到这儿了,如果有疑问,或者发现错误请留言吧。

    (五)bind-chroot程序包

    • 功能:将DNS服务的相关文件移至更深的目录中,减少DNS被攻破时对系统的影响

    • 安装并启动服务:
      yum install bind-chroot
      systemctl start named-chroot

    • 发现/var/named/chroot目录下有很多与named服务相关文件,并且文件的inode相同而硬连接数都只是1

    新葡亰496net 21

    • 这种情况只能是文件目录挂载所形成的,执行mount命令发现大量相关文件的挂载记录,证明bind-chroot程序实现迁移文件至更深目录的实质是将文件挂载至更深的目录下

    新葡亰496net 22

    /usr/sbin/dnssec-signzone

    (六)允许动态更新

    • 功能:允许客户端通过命令更新解析库资源记录信息
    • 准备工作:
      • 指定的zone语句块中修改allown-update选项
        例如:allow-update {192.168.136.229;};:只允许192.168.136.229主机能够动态更新本机DNS解析库指定zone的资源记录
      • chmod770 /var/named:增加写权限
    • 动态更新命令:nsupdate
    nsupdate
    >server 192.168.136.230
    >zone hellopeiyang.com
    >update add ftp.hellopeiyang.com 86400 IN A 192.168.136.150
    >send
    >update delete ftp.hellopeiyang.com A
    >send
    

    /usr/sbin/genrandom

    (七)从服务器

    • 从DNS服务器从主DNS服务器拷贝解析库文件,共同提供DNS服务,提升DNS服务的可靠性

    • 第1步,从服务器:配置主配置文件,修改options字段的如下内容:

    options {
        listen-on port 53 { localhost; };
        allow-query     { any; };
    };
    
    • 第2步,从服务器:修改独立区域配置文件,添加区域配置信息
    zone "hellopeiyang.com" IN {
        type slave;
        masters {192.168.136.230;};
        file "slaves/hellopeiyang.com.slave.zone";
    };
    
    • 第3步,主服务器:添加解析库文件NS记录,修改后如下
    vim /var/named/hellopeiyang.com.zone
    
    $TTL 1D
    @       IN SOA  dns1 admin.hellopeiyang.com. (
                                            101     ; serial     //只要解析库更新,一定要更新序列号
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
            NS      dns2                //增加的NS记录
    dns1    A       192.168.136.230
    dns2    A       192.168.136.130     //增加的A记录
    websrv A        192.168.136.229
    www     CNAME   websrv
    @       MX      10 mailsrv1
    @       MX      20 mailsrv2
    mailsrv1  A 192.168.136.100
    mailsrv2  A 192.168.136.101
    
    • 第4步,主服务器、从服务器:设置防止黑客窥视DNS信息

      • 为了防止黑客通过建立从服务器,获得主服务器的解析库信息,需要在主服务器和从服务器的主配置文件/etc/named.conf中options条目中增加"allow-transfer"选项

      • 主服务器增加内容:allow-transfer {192.168.136.130;};:只允许从服务器IP复制解析库文件

      • 从服务器增加内容:allow-transfer {none;};:不允许任何IP复制解析库文件

    • 第5步,主服务器、从服务器:格式检查
      分别在主服务器和从服务器上执行named-checkconf命令
      在主服务器上执行named-checkzone hellopeiyang.com /var/named/hellopeiyang.com.zone

    • 第6步,主服务器、从服务器:重新载入配置
      rndc reload

    • 第7步,测试
      dig www.hellopeiyang.com @192.168.136.130

    新葡亰496net 23

    • 注意:客户端查询过程通过UDP的53端口进行,主、从服务器之间的解析库同步操作需要通过TCP和UDP的53端口联合进行。

    /usr/sbin/isc-hmac-fixup

    (八)子域

    /usr/sbin/lwresd

    (1)子域与父域在一台主机上(适用于子域的流量比较小时)
    • 第1步,修改独立区域配置文件,添加子域配置信息,增加的信息如下:
    zone "zhengzhou.hellopeiyang.com" IN {
        type master;
        file "zhengzhou.hellopeiyang.com.zone";
    };
    
    • 第2步,添加子域解析库文件,内容如下:
    cp -p /var/named/hellopeiyang.com.zone /var/named/zhengzhou.hellopeiyang.com.zone
    复制一份父域的解析库文件,在其上做修改
    vim /var/named/zhengzhou.hellopeiyang.com.zone
    
    $TTL 1D
    @       IN SOA  dns1 admin.hellopeiyang.com. (
                                            101     ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
    dns1    A       192.168.136.230
    websrv  A       192.168.136.160
    www     CNAME   websrv
    @       MX      10 mailsrv1
    mailsrv1  A     192.168.136.170
    
    • 第3步,检查语法
      named-checkconf
      named-checkzone zhengzhou.hellopeiyang.com /var/named/zhengzhou.hellopeiyang.com.zone

    • 第4步,重新载入配置
      rndc reload

    • 第5步,测试
      dig www.zhengzhou.hellopeiyang.com @192.168.136.230

    新葡亰496net 24

    /usr/sbin/named

    (2)子域与父域不在一台主机上(适用于子域的流量比较大时)

    又称作:父域DNS服务器将DNS管理权委派给子域DNS服务器

    • 第1步,父域DNS:在解析库文件中增加子域的NS记录
    vim /var/named/hellopeiyang.com.zone
    
    $TTL 1D
    @   IN SOA  dns1 admin.hellopeiyang.com. (
                        101 ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
        NS  dns1
    henan   NS  dns2
    dns1    A   192.168.136.230
    dns2    A   192.168.136.130
    websrv A    192.168.136.229
    www CNAME   websrv
    @   MX  10 mailsrv1
    @   MX  20 mailsrv2
    mailsrv1  A 192.168.136.100
    mailsrv2  A 192.168.136.101
    
    named-checkzone hellopeiyang.com /var/named/hellopeiyang.com.zone     //检查语法
    rndc reload     //重新载入配置
    
    • 第2步,子域DNS:创建子域shanghai.hellopeiyang.com
    //步骤1:修改主配置文件
    vim /etc/named.conf     //修改的内容如下
    
    options {
            listen-on port 53 { localhost; };
            allow-query     { any; };
    };
    
    //步骤2:修改独立区域配置文件
    vim /etc/named.rfc1912.zones     //增加的内容如下
    
    zone "henan.hellopeiyang.com" IN {
            type master;
            file "henan.hellopeiyang.com.zone";
    };
    
    //步骤3:创建解析库文件
    vim /var/named/henan.hellopeiyang.com.zone
    
    $TTL 1D
    @       IN SOA  dns1 admin.hellopeiyang.com. (
                                            101     ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
            NS      dns1
    dns1    A       192.168.136.130
    websrv  A       192.168.136.133
    www     CNAME   websrv
    
    chgrp named /var/named/henan.hellopeiyang.com.zone     //更改所属组
    
    //步骤4:检查语法
    named-checkconf 
    named-checkzone henan.hellopeiyang.com /var/named/henan.hellopeiyang.com.zone
    
    //步骤5:重新载入配置
    rndc roload
    
    • 第3步,测试
      dig www.henan.hellopeiyang.com @192.168.136.230

    新葡亰496net 25

    /usr/sbin/named-checkconf    #检测/etc/named.conf文件语法

    (九)转发服务器

    /usr/sbin/named-checkzone    #检测zone和对应zone文件的语法

    (1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器

    实现:修改/etc/named.conf文件

    options {
    forward first|only;    
    //first:转发到达的DNS服务器若解析失败,则自身直接发起DNS解析请求
    //only:转发到达的DNS服务器若解析失败,则自身不再发起请求,本次DNS解析结果为失败
    forwarders { ip;};
    };
    

    /usr/sbin/named-compilezone

    (2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高

    实现:修改/etc/named.rfc1912.zones文件

    zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
    };
    

    /usr/sbin/named-journalprint

    (3)实验一:实现全局转发
    • 第1步,转发服务器的设置:
    vim /etc/named.conf
    options{
      forward first;
      forwarders {192.168.136.139;};     //凡是不在本区域DNS服务器中的请求一律转发给192.168.136.139
      dnssec-enable no;
      dnssec-validation no;
    };
    named-checkconf
    rndc reload
    
    • 第2步,被转发服务器:设置DNS服务
    //步骤1:修改主配置文件
    vim /etc/named.conf 
    
    options {
      listen-on port 53 { localhost;};
      allow-query     { any; };
    };
    
    //步骤2:修改独立区域配置文件
    vim /etc/named.rfc1912.zones
    
    zone "byebye.com" IN {
      type master;
      file "byebye.com.zone";
    };
    
    //步骤3:创建解析库文件
    vim /var/named/byebye.com.zone
    
    $TTL 1D
    @       IN SOA  dns1 admin.hellopeiyang.com. (
                                             101     ; serial
                                             1D      ; refresh
                                             1H      ; retry
                                             1W      ; expire
                                             3H )    ; minimum
             NS      dns1
     dns1    A       192.168.136.139
     websrv A        192.168.136.66
     www     CNAME   websrv
    
    chgrp named /var/named/beijing.hellopeiyang.com.zone     //更改所属组
    
    //步骤4:检查语法
    named-checkconf
    named-checkzone byebye.com /var/named/byebye.com.zone
    
    //步骤5:重新载入配置
    rndc reload
    
    • 第3步,测试
      dig www.byebye.com @192.168.136.230

    新葡亰496net 26

    /usr/sbin/nsec3hash

    (4)实验二:实现特定区域转发
    • 第1步,转发服务器的设置:
    vim /etc/named.rfc1912.zones
    
    zone "byebye.com" IN {
            type forward;
            forward first;
            forwarders {192.168.136.139;}; 
            //仅当请求解析beijing.hellopeiyang.com区域时,转发给192.168.136.224 
    };
    named-checkconf
    rndc reload
    
    • 第2步,被转发服务器:设置DNS服务,与实验一:实现全局转发过程完全相同

    • 第3步,测试
      dig www.byebye.com @192.168.136.230

    新葡亰496net 27

    /usr/sbin/rndc    #远程dns管理工具

    (十)bind中的acl

    • acl:把一个或多个地址归并为一个集合,并通过一个统一的名称调用

    • 语法:

    acl acl_name{
      ip;
      net/prelen;
      ……
    };
    
    • acl只能先定义后使用,因此一般定义在/etc/named.conf文件中options前面

    • bind的内置acl

      • none:没有一个主机
      • any:任意主机
      • localhost:本机
      • localnet:本机的IP同掩码运算后得到的网络地址
    • 访问控制的指令

      • allow-query {}:允许查询的主机;白名单
      • allow-transfer {}:允许区域传送的主机;白名单
      • allow-recursion {}:允许递归的主机,建议全局使用
      • allow-update {}:允许更新区域数据库中的内容
    • 实验:使用acl功能只允许192.168.136.0网段的主机查询DNS服务
      编辑/etc/named.conf文件,添加acl设置,并且在allow-query字段中添加acl

    vim /etc/named.conf
    
    acl lan {
            192.168.136.0/24;
    };
    
    options {
            listen-on port 53 { localhost; };
            allow-query     { lan;localhost; };     //添加名为lan的acl
    };
    
    named-checkconf
    rndc reload
    

    此时,只有192.168.136.0/24的网段可以查询DNS其他网段的请求会被服务器拒绝

    新葡亰496net 28

    /usr/sbin/rndc-confgen    #生成rndc密钥

    /var/log/named``.log

    /var/named

    /var/named/data

    /var/named/dynamic

    /var/named/named``.ca    ``#根解析库

    /var/named/named``.empty

    /var/named/named``.localhost    ``#本地主机解析库

    /var/named/named``.loopback

    /var/named/slaves    #从文件夹

    /var/run/named

    编辑bind主配置文件/etc/named.conf

    ~]``# vim /etc/named.conf

    // C``/C`` 风格的语法,注释用``//``或/* */

    // named.conf``//

    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

    // server as a caching only nameserver (as a localhost DNS resolver only).``//

    // See ``/usr/share/doc/bind``*``/sample/ for example named configuration files.``// 

    options {

    ``listen-on port 53 { 127.0.0.1; };

    ``listen-on-v6 port 53 { ::1; };

    ``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     { localhost; };    ``//``允许哪些主机查询

    ``recursion ``yes``;        ``//``是否允许递归查询

    ``dnssec-``enable yes``;

    ``dnssec-validation ``yes``;

    ``dnssec-lookaside auto;

    ``/* Path to ISC DLV key */

    ``bindkeys-``file "/etc/named.iscdlv.key"``;

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

    };

    logging {          ``//``定义日志

    ``channel default_debug {

    ``file "data/named.run"``;

    ``severity dynamic;

    ``};

    };

    zone ``"." IN {              ``//``定义根区域文件名称

    ``type hint;``file "named.ca"``;   ``//``使用的是相对路径,默认存放在``/var/named/named``.ca

    };``//``把另外两个文件也包含进来,作为主配置文件的一部分

    ``include ``"/etc/named.rfc1912.zones"``;     ``//``定义区域配置文件

    ``include ``"/etc/named.root.key"``;       ``//``根区域的key文件,与事务签名相关

    通过修改listen-on port 53 {}来修改需要监听的服务器IP地址;

    allow-query {}修改为any则所有主机均可以通过该DNS服务器来查询;

    将dnssec开头的参数全部注释掉后保存配置,一个缓存服务器就创建完成。

    下边再来创建新的DNS服务器,创建自定义的区域则要在/etc/named.rfc-1912.zone中添加新的区域,然后在/var/named/ZONE_NAME.zone添加区域解析库。

    #示例:创建bing.com.域

    ``~]``# vim /etc/named.rfc-1912.zone   #编辑配置文件

    ``zone ``"bing.com" IN{

    ``type master;

    ``file "bing.com.zone"``;

    ``};

    ``保存退出

    ``~]``# vim /var/named/bing.com.zone  #创建区域解析库

    ``$TTL 86400   ``#定义缓存过期时长

    ``$ORIGIN bing.com.  ``#域名后的“.”不能省略

    ``@    IN SOA ns1.bing.com.  admin.bing.com.(

    ``2017012301;serial  ``#使用“;”号可以用于注释

    ``2H;refresh

    ``5M;retry

    ``7D;expire

    ``1D;MINTTL     ``#返回否定答案时最小缓存时长

    ``)

    ``@  IN  NS  ns1.bing.com.    ``#定义指定域名服务器

    ``@  IN  NS  ns2.bing.com.    ``#域名可以指定多个域名服务器,如果存在多个的情况下,此处ns2表示从域名服务器

    ``ns1  IN  MX 10 mail1   ``#定义邮件服务器,此记录也可指定多个

    ``ns1  IN  A  172.16.100.10   ``#指定ns1域名服务器的IP地址

    ``ns2  IN  A  172.16.100.11   ``#指定从域名服务器IP地址

    ``mail1 IN  A  172.16.100.10   ``#指定邮件服务器IP地址

    ``www  IN  A  10.20.57.10    ``#指定该域名下的web服务器主机的IP地址

    ``ftp  IN  CNAME www        ``#将ftp主机设置为www别名

    ``*   IN   CNAME www        ``#设置泛域名解析

    ``保存退出

    ``~]``# named-checkconf   #检查配置文件有没有语法错误

    ``~]``# named-checkzone "bing.com." "/var/named/bing.com.zone"  #检查解析库语法所有检查完毕之后没有问题

    ``#重读配置文件

    ``~]``# rndc reload

    ``#使用dig 命令测试是否成功

    ``~]``# dig -t A www.bing.com  @172.16.100.10  #@指定DNS服务器IP地址,如果不指定则使用/etc/resolv.conf中配置的DNS来解析

    下边再来配置从DNS服务器,从DNS配置非常简单,所有的解析库记录都是从主服务器中区域传送过来的。但是要注意,从服务器必须要在主DNS区域中定义才可以做区域传送否则传送失败。

    #从域名服务器IP地址为172.16.100.11

    ``vim ``/etc/named``.rfc-1912.zone

    ``zone ``"bing.com." IN {

    ``typeCentOS7下安装配置DNS服务器,DNS原理简介及配置。 slaves;          ``#类型需要设置为slaves

    ``masters { 172.16.100.10; };   ``#指定主域名服务器的IP地址

    ``files  ``"/slaves/bing.com.zone"``; ``#指定从服务器区域解析库存放位置,解析库名称必须与主DNS中的名称相同,注意,此处定义完之后不要去创建此文件,该文件是通过区域传送产生

    ``};

    ``~]``# named-checkconf    #验证语法

    ``~]``# rndc reload       #重读配置

    ``从服务器中就生成了与主DNS中相同的解析库文件。

    DNS服务器到此配置完成,其中还涉及到子域授权以及编译安装配置的内容,时间有限,后期看看再来补充一下,现在简单再来设置一下安全策略。

    权限访问列表acl,在主配置文件/etc/named.conf起始位置设置

    ~]``# vim /etc/named.conf

    ``acl mynet{

    ``172.16.100.10;

    ``172.16.100.11;

    ``10.20.30.0``/24``;     ``#定义IP段

    ``};

    ``需要定义全局控制的则在``/etc/named``.conf中设置

    ``allow-query { mynet; };    ``#只允许指定列表中的主机来查询

    ``allow-recursion { mynet; };  ``#只允许指定列表中的主机来递归查询

    ``allow-transfer { mynet; };   ``#只允许指定列表中的主机进行区域传送

    ``allow-update { mynet; };    ``#只允许指定列表中的主机进行区域更新,此功能非常危险,应该设置为none,即不允许任何主机更新区域解析库,而由管理员来手动生成解析库文件。

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141245.htm

    新葡亰496net 29

    本文由新葡亰496net发布于电脑系统,转载请注明出处:CentOS7下安装配置DNS服务器,DNS原理简介及配置

    关键词: