zoukankan      html  css  js  c++  java
  • DNS服务详解

    1.DNS简介

      DNS(域名系统)即domain name server, 将主机名与IP简历关联,使用户可以通过主机名(域名)访问网络中的主机.对于服务器主机,即使服务器的IP地址改变了,只要将新的IP地址与域名关联,而不是通知用户新的域名.

      DNS 通常采用一个或多个为某些域认证的集中服务器部署。客户端主机请求来自名称服务器的信息时,通常会连接到端口 53。然后名称服务器会解析请求的名称。如果将名称服务器配置为递归名称服务器,并没有授权回答,或者没有为之前的查询缓存的回答,它会查询其他名称服务器(即 root 名称服务器),决定哪个是这个 要查询名称的授权名称服务器,然后查询以获取请求的名称。仅作为授权配置的名称服务器若禁用递归功能,则不会代表客户端进行查询。

     2.DNS服务器的区域和类型

      DNS服务器中,所有信息都保存在基本数据元素中(资源记录,RR).RFC1034定义了资源记录.DNS服务采用树状结构管理域名,每层都使用(.)分隔.例如:在root域中, . 表示DNS的root,即层0.域名com指的是顶级域(TLD),即root域的下一层,层级结构的第一层.域名example.com是层级结构的第二层.

      资源记录示例:

    example.com.        86400        IN        A            192.0.3.1

      域名example.com是RR的所有者.值86400是生存时间(TTL).字母IN的含义是“互联网系统”,代表RR的分类.字母A代表RR的类型(主机地址).主机地址192.0.3.1,即RR记录域名example.com的IP指向.区域是通过文件在授权DNS服务器中定义,该文件包含每个区域中资源记录的定义.Zone文件保存了主名称服务器及辅名称服务器.

      DNS服务器提供的服务有两种:1.授权服务 授权DNS服务器响应属于本区域的资源记录.包括主(master)和从属(slave)DNS.2.递归 递归DNS提供解析服务,但不为任何区域授权.在固定的时间段内响应客户端内存中缓存的解析,该时间段查询的资源记录指定.虽然DNS服务器可以既授权又递归,但是一般不合并两种配置.递归服务器查询RR,比授权响应要耗费更长的时间,因此递归服务器仅适用于有限的客户端.

    3.BIND

      BIND(berkeley Internet Name Domain)是RHEL中自带的DNS服务器.它包含一组与DNS相关的程序,named的名称服务器、管理程序rndc、debug工具dig.BIND中配置了大量的“空白区域”,防止递归查询服务器向未被授权的区域发送不必要的请求,引起服务阻塞.这些空白区域保证返回即时且授权的NXDOMAIN响应.named.conf中的配置选项empty-zones-enable 控制是否生成空白区域,还可以同时使用disable-empty-zone 选项在其使用的默认前缀列表中禁用一个或多个空白区域.BIND中已增加为RFC1918前缀生成的空白 区域数.在BIND9.9中,即使未指定empty-zones-enable(默认为yes),用户也可以看到RFC1918的空白区域.

    4.BIND与bind-chroot

      在安装bind-chroot软件包后,BIND会在chroot环境中运行.此时,初始化脚本将使用mount  --bind命令挂载named的配置文件named.conf,以便在chroot环境外管理该配置.不需要向/var/named/chroot/目录复制任何内容,chroot会自动挂载该目录.

    如果/var/named/chroot/中的对应挂载点为空,则以下目录会自动挂载到/var/named/chroot/目录:

      /etc/named

      /etc/pki/dnssec-kyes

      /run/named

      /var/named

      /usr/lib64/bind或/usr/lib/bind

    如果在/var/named/chroot/中不存在以下文件,也会将其挂载到目标文件中:

      /  

      /etc/rndc.conf

      /etc/rndc.key

      /etc/named.rfc1912.zones

      /etc/named.dnssec.keys

      /etc/named.iscdlv.key

      /etc/named.root.key

    最好为每个挂载到chroot中的文件做备份.

    5.BIND的配置named.conf

    (1)ACL 

      ACL (访问控制列表)语句可以使管理员定义主机组,这样可以允许或者拒绝对该名称服务器的访问.格式如下:

    acl acl-name {
        match-element;
        ...
    };

    acl-name是访问控制列表名称, match-element选项通常是独立的IP地址.

    关键字 描述
    any 与所有IP地址匹配
    localhost 与本地系统使用的IP地址匹配
    localnets 与所有本地系统连接的网络中的IP地址匹配
    none 不匹配任何IP地址

    acl 与option联合使用:

    acl blacklist {
        192.168.0.0/24;
        172.16.12.0/24;
        124.204.46.73;
    };
    acl whitelist {
        172.25.0.0/24;
    };
    options {
        blackhole {blacklist;};
        allow-query {whitelist;};
        allow-query-cache {whitelist;};
    };

    (2)include include选项可以使/etc/named.conf 加载额外的配置文件,可以使重要数据保存在有严格权限的独立文件中.

    例如:

    include "/etc/named.rfc1912.zone";

    (3)options options定义DNS服务器的全局配置.

    options 常用配置选项如下:

    选项 描述
    diretory 指定named服务的工作目录.默认为/var/named/
    disable-empty-zone 在使用默认前缀列表中禁用一个或多个空白区域.在options或view中指定,可多次使用.
    dnssec-enable

    指定是否返回与dnssec关联的资源记录.默认为yes.

    dnssec-validation 指定是否提供使用dnssec认证的资源记录.默认为yes.
    empty-zones-enable 控制是否生成空白区域.只能在options中使用.
    forwarders 为DNS服务器指定有效的IP地址列表,所有申请都会转发到此地址进行解析.
    forward

    指定forwarders的工作方式.

    first  BIND将向forwarders列表中指定的DNS查询,如果查询失败,则尝试使用本地zone配置查询;

    only BIND只向forwarders中的DNS服务器做转发查询,不会自己解析.

    listen-on 指定侦听IPv4网络接口中的DNS请求.
    listen-on-v6 侦听来自IPv6接口的DNS请求.
    max-cache-size 指定DNS服务器可使用的最大内存,默认为32M.
    notify

    定义主DNS更新zone后,是否通知从属DNS.

    yes  主DNS会通知所有的从属DNS;

    no   主DNS不会通知从属DNS;

    master-only  该DNS只通知本区域的其它主DNS;

    explicit  该DNS服务器只通知在zone语句的also-notify列表中指定的从属DNS.

    pid-file 指定named服务生成的进程ID文件位置.
    recursion 是否作为递归DNS,默认为yes.
    statistics-file 指定统计文件备选位置,默认使用/var/named/named.stats.

    options配置示例:

    options {
                allow-query                { localhost; };
                listen-on port            53 {127.0.0.1;};
                listen-on-v6 port        53 {::1;};
                max-cache-size         256M;
                directory                    "/var/named";
                statistics-file               "/var/named/data/named_stats.txt";
    
                recursion                yes;
                dnssec-enable         yes;
                dnssec-validation     yes;
                
                pid-file                    "/run/named/named.pid";
                session-keyfile         "/run/named/session.key";
    };

     (4)zone zone定义DNS解析区域.zone中的配置可以覆盖options中的配置.

    zone配置示例:

    zone "example.com" IN {
        type master;
        file "example.com.zone";
     };

    zone常用选项:

    选项 描述
    allow-query 指定哪些客户端可以请求查询这个区域的信息.该选项会覆盖options中的全局allow-query配置.默认允许所有查询请求.
    allow-transfer 指定哪些从属DNS可以请求传递区域信息,默认允许所有.
    allow-update 指定哪些主机可在其区域中动态更新信息.默认拒绝所有.
    file 指定named的工作目录.包含区域配置文件(zone的配置文件).
    masters 指定可以请求授权zone信息的IP地址.只有在区域被定义为"type slave“时,该选项才会被named正确识别,否则报错,named无法启动.
    notify

    定义主DNS更新zone后,是否通知从属DNS.zone中的notify会覆盖options中的notify配置.

    yes  主DNS会通知所有的从属DNS;

    no   主DNS不会通知从属DNS;

    master-only  该DNS只通知本区域的其它主DNS;

    explicit  该DNS服务器只通知在zone语句的also-notify列表中指定的从属DNS.

    type

    定义区域类型.

    delegation-only 加强基础区域授权状态,比如COM、NET、ORG.任何没有附加信息的授权响应都被认为是NXDOMAIN.该选项只可用于递归或缓存DNS中的部署的TLD(顶级域,top-level domain)或者root区域文件.

    forward  将所有本区域的DNS请求转发到其它DNS服务器.

    hint  指向rootDNS的特殊区域类型.hint指向的rootDNS是用来解析其它次级DNS无法解析的zone.

    master  zone授权的本地专用DNS,通常是主DNS.

    slave  zone授权的本地从属DNS,需要在masters选项中指定主DNS.


    主从DNS的Zone配置示例:

    master的Zone配置:
    zone "example.com" IN {
        type master;
        file "example.com.zone";
        allow-transfer {192.168.0.4;};
    };
    slave的Zone配置:
    zone "example"  {
        type slave;
        file "slave/example.com.zone";
        masters {192.168.0.1;};
    };

    (5)named.conf中的其它语句配置:

    语句 描述
    controls 定义rndc管理named服务的安全选项
    key

    dnssec或rndc中使用的密钥.key有两个选项:

    algorithm  指定密钥使用的算法,例如 hmac0md5.

    secret “key-value"  加密密钥.

    logging 自定义named的日志,包括文件名、大小、版本号等.默认情况下,named向rsyslog守护进程发送标准信息,并保存在/var/log/messages文件中.
    server 指定named响应远程DNS的方式.使用transfer-format控制每条信息附带的资源记录数.根据具体环境,可以是one-answer,也可以是many-answers.
    trusted-keys 指定安全dnssec的分类公钥.
    view 使DNS服务器根据所在网络生成特殊视图.控制不同区域中的DNS请求.view中的配置会覆盖options中配置.

    6.rndc管理named

      rndc是BIND提供的管理named的组件工具,其配置文件为/etc/rndc.conf. rndc的密钥文件是/etc/rndc.key.

      通常为安全考虑,应该修改named的默认侦听端口(默认为953),以及限制rndc.key的访问权限.

    ~]#chmod o-rwx /etc/rndc.key

    rndc常用命令:

    命令 描述
    rndc status 检查named当前状态.
    rndc reload 重新加载配置文件及zone.
    rndc sign localhost 更新dnssec密钥并注册该区域.
    rndc validation on/off 启用/禁用dnssec验证.
    rndc querylog 启用或禁用查询日志.

    7.dig 

    dig常用命令:

    命令 描述
    dig example.com NS 查询名称服务器.(查询DNS服务器)
    dig example.com A 查询IP地址.
    dig -x 192.100.101.102 查询主机名(域名).

      BIND还有一些其它高级功能,例如:多视图匹配、增量区域传送(IXFR)、事务处理签名(TSIG)、DNS安全扩展(DNSSEC),有时间可以仔细研究.

  • 相关阅读:
    Wayland中的跨进程过程调用浅析
    设计模式总结
    C语言---整型字符串转换
    抽象工厂模式
    SVNclient安装与使用
    [置顶] MyEclipse下安装插件方法(properties文件编辑器Propedit为例)
    脑筋急转弯的歧义性
    脑筋急转弯的歧义性
    从和式积分到定积分
    从和式积分到定积分
  • 原文地址:https://www.cnblogs.com/qiyunshe-NSD1805/p/9610441.html
Copyright © 2011-2022 走看看