Linux DNS服务详解——DNS实战配置

今天继续给大家介绍Linux基础知识,本文主要内容是DNS的实战配置。

一、DNS安装与配置文件

如果采用YUM的安装方式,DNS设计到三个包,相关命令如下:

yum install -y bind bind-chroot bind-utils

bind是DNS的服务端软件,其中bind的英文全称是Berkeley Internet Name Domain,即伯克利因特网域名,bind-chroot是DNS的补充软件,主要实现了牢笼机制,所谓牢笼机制就是创建一个目录,作为DNS服务的根目录,以防止当DNS服务被攻击后波及系统安全,bind-utils是DNS的客户端软件,主要是包含了nslookup等命令。
对于DNS客户端而言,配置文件在/etc/目录下,并且以named开头,如下所示:
Linux DNS服务详解——DNS实战配置_第1张图片
在上述文件中,/etc/named.conf是全局配置文件,/etc/named.rfc1912.conf是区域配置文件,我们在配置DNS服务端时最主要使用的就是这两个配置文件。

二、DNS配置文件重要参数介绍

在DNS的全局配置文件/etc/named.conf中,options选项是全局配置参数,其中重要参数如下:
listen-on port:指定DNS要监听的IP地址和端口号,在配置时必须将原始配置文件中的127.0.0.1改为any或者指定网段的地址,否则DNS无法正常对外提供服务。
allow-query:指定允许访问的客户端网址,在配置时如同listen-on port参数一样,也是必须将127.0.0.1修改称为any或者别的网段的地址。
recursion:表示是否允许DNS服务器采用递归查询的方式,此选项默认是yes,表示支持递归查询的方式,但是如果配置时同时启用了加密功能,则递归配置不生效。
dnssec-enable、dnssec-validation:表示是否启用DNS加密。
bind-keyfile:表示DNS加密时使用的加密文件。
zone是区域配置参数,重要参数如下:
type:指定区域的类型,对于该区域有重要作用。type字段的值可以为以下5种:
①Master:表示为主DNS服务器,拥有区域数据文件,并向从DNS服务器进行文件备份。
②Slave:表示为从DNS服务器,从DNS服务器上本身没有区域数据文件,但是该服务器会从主DNS服务器上下载区域数据文件,也能够提供DNS服务。
③Stub:stub区域与Slave区域类似,两者之间的区别在于Stub只复制DNS服务器上的NS记录而不是复制所有区域数据。
④Forward:forward区域是转发区域,类似于一个DNS的缓存服务器,采用该配置的DNS区域会从外网其他DNS服务器复制数据并起到向导的作用。一个forward区域可以包含一个forward或者forwards语句,这些语句指定了查询的域。
⑤Hint:根域名服务器的初始化组指定使用的线索区域,当服务器启动时,还会使用跟线索查找根域名服务器,并找到最近的根服务器列表。
file:配置DNS服务器生成的各项记录数据文件名称
allow-update:当配置DNS主从架构时使用,在主服务器上配置允许进行同步的从服务器。

三、DNS配置文件示例

接下来,我们就来配置一个简单的DNS服务,实现本地的DNS服务器搭建。要实现DNS服务器的运行,首先要实现的就是主配置文件的编写,具体内容如下(注释内容略):

options {
     
        listen-on port 53 {
      any; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     {
      any; };
        recursion yes;
        dnssec-enable yes;
        dnssec-validation yes;
        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";
                severity dynamic;
        };
};
zone "." IN {
     
        type hint;
        file "named.ca";
};
zone "pzz.com." IN {
     
        type master;
        file "pzz.com.zone";
};
zone "136.168.192.inaddr.arpa" IN {
     
        type master;
        file "192.168.136.arpa";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

之后,我们需要写正向解析文件和反向解析文件,关于这两个文件,文件名应该与主配置文件中的pzz.com.zone和192.168.136.arpa保持一致,并且在/var/named目录下。正向解析文件可以直接复制/var/named/named.localhost,反向解析文件可以直接复制/var/named/named.loopback。我们在复制时,可以使用cp -a命令,连带着文件属性一起复制,关于这两个文件,不管采用何种方式创建、授权,都必须要保证named用户有读的权限,否则DNS服务就会启动失败。
在本实验中,pzz.com.zone文件内容如下:

$TTL 1D
@       IN SOA  ns.pzz.com. root.pzz.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.pzz.com.
ns.pzz.com.      IN A        192.168.136.101
www.zzp.pzz.com. IN A   192.168.136.101
news.pzz.com.    IN A      192.168.136.101
www.pzz.com.     IN A       192.168.136.101
www.zzp.com.     IN A       192.168.136.101
wwww.pzz.com.    IN A       192.168.136.101
bbs.pzz.com.     IN A      192.168.136.101
www1.pzz.com. CNAME www.pzz.com
abc IN A 192.168.136.101

在该配置文件第一行,TTL为外DNS服务器在本DNS服务器的查询结果的缓存时间,单位为秒。配置文件上半部分,为SOA记录,serial为修改次序,如果做DNS主从架构,则每次修改该号码加1,这样DNS从服务器就可以通过号码得知记录的新旧,从而决定自身是否要同步信息。refresh为DNS主从同步时的同步时间,retry表示DNS从服务器更新失败后的重试时间,expire为数据过期时间,即当超过该时间后,从DNS服务器会放弃与主DNS服务器的重试链接。minimum为最小的TTL值。前面的单位D表示天,H表示小时,W表示周。后面的大都是NS记录和A记录需要注意的是每个域名的后面必须以“.”结束。
192.168.136.arpa文件内容如下:

$TTL 1D
@       IN SOA  pzz.com. root.pzz.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns.pzz.com.
ns A 192.168.136.101
101 PTR www.pzz.com.
101 PTR bbs.pzz.com.
101 PTR qqq.pzz.com.
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.

该配置文件的前半部分和正向配置文件类似,后版部分为PTR记录,配置文件中的101为简写,实际上指的是配置文件中A记录的网段,即192.168.136.101,我们也可以直接写这个IP地址。

四、DNS服务运行与验证

上述配置文件写好后,我们启动DNS服务,相关命令如下所示:

systemctl start named

完成后发现系统监听53端口,如下所示:
Linux DNS服务详解——DNS实战配置_第2张图片
接下来,我们选择一台主机(也可以是本机器),将其DNS服务器修改为192.168.136.101。修改方式有两种,一种是通过修改网卡配置文件,然后重启网卡,另一种是直接修改/etc/resolv.conf配置文件,将设备的DNS服务器指向本设备。之后,我们可以直接PING测试www.pzz.com等我们前面配置的域名,观察其解析后的IP地址,结果如下所示:
Linux DNS服务详解——DNS实战配置_第3张图片
另外,我们也可以使用nslooup工具查询DNS的反向记录,查询结果如下:
Linux DNS服务详解——DNS实战配置_第4张图片
由上述验证结果可知,我们的DNS服务器配置成功并且能够正常运行了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(服务器运维,linux,系统安全,运维)