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),有时间可以仔细研究.

猜你喜欢

转载自www.cnblogs.com/qiyunshe-NSD1805/p/9610441.html
今日推荐