第11小节:部署DNS服务器

我怕爱的太早我们不能终老 提交于 2021-01-15 16:18:18

环境准备:

服务端(server):Linux CostOS 8.2 , IP:192.168.1.150

客户端1(client) : Linux CostOS 8.2 , IP:192.168.1.151

工 具:VMware Workstation 12.5,均设置为本地主机模式 Xshell 7

配置要求

​ 按照此表里的域名和对应的IP地址,置DNS服务器,使其能够为www.mzzz.net的域名和ftp.mzzz.net的域名提供正向和反向解析。

域名 IP地址
www.mzzz.net 192.168.1.152
ftp.mzzz.net 192.168.1.153

1.安装bind服务软件包

[root@mzzz ~]# dnf install bind
Last metadata expiration check: 0:55:35 ago on Wed 13 Jan 2021 12:50:26 PM CST.
Dependencies resolved.
=========================================================================================
 Package          Architecture           Version           Repository           Size
=========================================================================================
Installing:
 bind             x86_64           32:9.11.13-3.el8         AppStream           2.1 M

Transaction Summary
=========================================================================================
Install  1 Package

Total size: 2.1 M
Installed size: 4.5 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                  1/1 
  Running scriptlet: bind-32:9.11.13-3.el8.x86_64                                     1/1 
  Installing       : bind-32:9.11.13-3.el8.x86_64                                     1/1 
  Running scriptlet: bind-32:9.11.13-3.el8.x86_64                                     1/1 
  Verifying        : bind-32:9.11.13-3.el8.x86_64                                     1/1 
Installed products updated.

Installed:
  bind-32:9.11.13-3.el8.x86_64                                                                                                       

Complete!

2.修改DNS主配置文件named.conf

​ bind服务程序的配置并不简单,因为要想为用户提供健全的DNS查询服务,要在本地保存相关的域名数据库,而如果把所有域名和IP地址的对应关系都写入到某个配置文件中,估计要有上千万条的参数,这样既不利于程序的执行效率,也不方便日后的修改和维护。因此在bind服务程序中有下面这三个比较关键的文件。

主配置文件(/etc/named.conf):只有59行,而且在去除注释信息和空行之后,实际有效的参数仅有25行左右,这些参数用来定义bind服务程序的运行。

区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。

数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。

在Linux系统中,bind服务程序的名称为named。首先需要在/etc目录中找到该服务程序的主配置文件,然后把第11行和第19行的地址均修改为any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。这两个地方一定要修改准确。

 [root@mzzz ~]# vim /etc/named.conf 
  1 //
  2 // named.conf
  3 //
  4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
  5 // server as a caching only nameserver (as a localhost DNS resolver only).
  6 //
  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
  8 //
  9 
 10 options {
 11         listen-on port 53 { any; };
 12         listen-on-v6 port 53 { ::1; };
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         secroots-file   "/var/named/data/named.secroots";
 18         recursing-file  "/var/named/data/named.recursing";
 19         allow-query     { any; };
 20 
 21         /* 
 22          - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
 23          - If you are building a RECURSIVE (caching) DNS server, you need to enable 
 24            recursion. 
 25          - If your recursive DNS server has a public IP address, you MUST enable access 
 26            control to limit queries to your legitimate users. Failing to do so will
 27            cause your server to become part of large scale DNS amplification 
 28            attacks. Implementing BCP38 within your network would greatly
 29            reduce such attack surface 
 30         */
 31         recursion yes;
 32 
 33         dnssec-enable yes;
 34         dnssec-validation yes;
 35 
 36         managed-keys-directory "/var/named/dynamic";
 37 
 38         pid-file "/run/named/named.pid";
 39         session-keyfile "/run/named/session.key";
 40 
 41         /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
 42         include "/etc/crypto-policies/back-ends/bind.config";
 43 };
 44 
 45 logging {
 46         channel default_debug {
 47                 file "data/named.run";
 48                 severity dynamic;
 49         };
 50 };
 51 
 52 zone "." IN {
 53         type hint;
 54         file "named.ca";
 55 };
 56 
 57 include "/etc/named.rfc1912.zones";
 58 include "/etc/named.root.key";
 59 

​ 如前所述,bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。将域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如11-1和11-2所示。

zone "mzzz.net" IN {
type master;            #服务类型
file "mzzz.net.zone";   #域名与IP地址解析规则保存的文件位置
allow-update {none;};   #允许那些客户机动态更新解析信息
};

​ 11-1:正向解析参数

zone "1.168.192.in-addr.arpa" IN {      #表示为192.168.1.0/24网段的反向解析区域
type master;
file "192.168.1.arpa";
allow-update {none;};
};

​ 11-2:反向解析参数

3. 正向解析实验

​ 在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户。这也是最常用的DNS工作模式。

第1步:编辑区域配置文件。该文件中默认已经有了一些无关紧要的解析参数,旨在让用户有一个参考。我们可以将下面的参数添加到区域配置文件的最下面,当然,也可以将该文件中的原有信息全部清空,而只保留自己的域名解析信息:

[root@mzzz ~]# vim /etc/named.rfc1912.zones
zone "mzzz.net" IN {
        type master;
        file "mzzz.net.zone";
        allow-update(none; };
};

第2步:编辑数据配置文件。我们可以从/var/named目录中复制一份正向解析的模板文(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容:

[root@mzzz ~]# cd /var/named/
[root@mzzz named]# ls -al named.localhost 
-rw-r-----. 1 root named 152 Apr 24  2020 named.localhost
[root@mzzz named]# cp -a named.localhost mzzz.net.zone
[root@mzzz named]# 

​ 编辑数据配置文件。在保存并退出后文件后记得重启named服务程序,让新的解析数据生效。考虑到正向解析文件中的参数较多,而且相对都比较重要,所以在每个参数后面都作了简要的说明。

[root@mzzz named]# vim mzzz.net.zone 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.1.150
www     IN A    192.168.1.152
ftp     IN A    192.168.1.153                      
[root@mzzz named]# systemctl restart named

第3步:检验解析结果。为了检验解析结果,一定要先把Linux系统网卡中的DNS地址参数修改成本机IP地址,这样就可以使用由本机提供的DNS查询服务了。nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,进而更准确地检验DNS服务器是否已经能够为用户提供服务。

[root@mzzz named]# nmcli c reload

第4步:使用CentOS 8客户端进行验证测试,测试的时候要把DNS修改为DNS服务器的IP地址,重启网络后在进行测试

[root@Client ~]# nmcli c reload
[root@Client ~]# nslookup
> www.mzzz.net
Server:     192.168.1.150
Address:    192.168.1.150#53

Name:   www.mzzz.net
Address: 192.168.1.152
> ftp.mzzz.net
Server:     192.168.1.150
Address:    192.168.1.150#53

Name:   ftp.mzzz.net
Address: 192.168.1.153

4. 反向解析实验

​ 在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。

第1步:编辑区域配置文件。在编辑该文件时,除了不要写错格式之外,还需要记住此处定义的数据配置文件名称,因为一会儿还需要在/var/named目录中建立与其对应的同名文件。反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.1.0,反写后应该就是1.168.192,而且只需写出IP地址的网络位即可。把下列参数添加至正向解析参数的后面。

[root@mzzz ~]# vim /etc/named.rfc1912.zones
zone 1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.arpa";
        allow-update { none; };
};

第2步:编辑数据配置文件。首先从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中。其中,IP地址仅需要写主机位 ,最后重启named服务。

[root@mzzz named]# cp -a named.loopback 192.168.1.arpa
[root@mzzz named]# vim 192.168.1.arpa
[root@mzzz named]# systemctl restart named
[root@mzzz named]# 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.1.150
152     PTR     www.mzzz.net.
153     PTR     ftp.mzzz.net.
        AAAA    ::1                       

第3步:在客户机上检验解析结果。在前面的正向解析实验中,已经把系统网卡中的DNS地址参数修改成了本机IP地址,因此可以直接使用nslookup命令来检验解析结果,仅需输入IP地址即可查询到对应的域名信息。

[root@Client ~]# nslookup
> 192.168.1.152
152.1.168.192.in-addr.arpa  name = www.mzzz.net.
> 192.168.1.153
153.1.168.192.in-addr.arpa  name = ftp.mzzz.net.
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!