首页 > 编程笔记

DNS服务器安装及配置教程

DNS(Domain Name System)域名服务器,它是一种能够把域名(domain name)和与之相对应的 IP 地址(IP address)进行转换的服务器,同时还可以为计算机服务以及接入互联网或局域网的任何资源进行分层的名称解析。

DNS 具有多种功能,其中最重要的功能是进行域名与 IP 地址之间的解析。IP 地址标记着互联网中的唯一一台计算机,计算机有了合法的 IP 地址才可以与任何一台主机进行通信。然而仅依靠人类的记忆力很难将所有的 IP 地址全部记录下来,因此使用域名服务器就可以将难以记忆的数字 IP 地址与容易记忆的域名建立映射关系。

也就是说,用户输入域名,计算机就开始搜索指定的 DNS 服务器,找到 DNS 服务器之后会向域名服务器发送请求,以帮助解析该域名对应的 IP 地址,待成功解析之后,将获得该域名对应的真实的IP地址,然后使用该 IP 地址与对方进行通信。

注意,域名是由一串用点分隔的名字组成的(点代表根域,是所有域名的起点),通常包含组织名,而且必须包括两到三个字母的后缀,以指明组织的类型或该域名所在的国家或地区。

域名是分级的,一般分为主机名.、三级域名.、二级域名.、顶级域名.。计算机域名中最后的点表示根域,其次是根域下面的顶级域名,接着是二级域名等,如图 1 所示为域名树状结构图。

DNS的安装

安装 DNS 需要使用 BIND 软件,BIND 软件提供了最广泛的 DNS 服务。在 Linux 平台下,BIND 软件还提供了 chroot 与 utils 的软件包:
BIND 软件的安装过程如下:
1) 打开终端页面,输入 su 命令切换到 root 用户,命令如下:

[abcd@bogon ~]$ su root


2) 输入 yum 命令进行 bind 的安装,命令如下:

[root@bogon abcd]# yum –y install bind

其中 -y 表示全自动安装。输入安装命令之后,等待系统自动安装,安装过程需要等待几分钟。

3) 输入 yum 命令进行 bind-chroot 的安装,命令如下:

[abcd@bogon abcd]# yum –y install bind-chroot


4) 输入 yum 命令进行 bind-utils 的安装,命令如下:

[abcd@bogon abcd]# yum –y install bind-utils


5) 安装完成后,需要检测是否安装成功,命令如下:

[abcd@bogon abcd]# rpm –q bind
[abcd@bogon abcd]# rpm –q bind-chroot

执行结果如图 1 所示,即表示安装成功。


图 1 检测是否安装成功

配置文件

安装成功后,会自动增加一个named的系统服务。named服务的配置文件主要有三个,分别为 /etc/named.conf、/etc/named.rfc1913.zones、/var/named/ 目录下的模板文件。

主配置文件一般为 /etc/named.conf 文件。当安装了 bind-chroot 软件包之后,默认路径指的是虚拟路径,都是相对于虚拟根路径而言的,虚拟根路径默认为 /var/named/chroot/ 目录。因此最终主配置文件在本机的绝对路径应该为 /var/named/chroot/etc/named.conf。

1、/etc/named.conf文件

使用 Vim 工具进入插入模式,修改主配置文件 /etc/named.conf 的两个地方为 {any;},修改之后如图 2 所示。命令如下:

[abcd@bogon abcd]# vim /etc/named.conf


图 2 修改/etc/named.conf文件

/etc/named.conf 文件中的 option 语句用来定义全局配置选项,在全局配置中至少需要定义一个工作路径,默认的工作路径为 /var/named,具体的常见参数及作用如表 3 所示。

表 3 常见参数及作用
参 数 作 用
directory 设置域名服务的工作目录,默认为 /var/named
dump-file 运行 mdcdumpdb 备份缓存资料后,保存的文件路径与名称
statistics-file 运行 mdc stats 后,统计信息的保存路径与名称
lisen-on port 指定监听的 IPv4 网络接口
allow-query 指定哪些主机可以查询服务器的权威解析记录
allow-query-cache 指定哪些主机可以通过服务器查询非权威解析数据,如递归查询数据
blackhole 设置拒绝哪些主机的查询请求
recursion 是否允许递归查询
forwards 指定一个 IP 地址,所有对本服务器的查询都将转发到该IP进行解析
mx-cache-size 设置缓存文件的最大容量

2、/etc/named.rfc1913.zones文件

使用 Vim 工具进入插入模式,修改正向解析和反向解析文件名称,修改之后如图 4 所示。命令如下:

[abcd@bogon abcd]# vim /etc/named.rfc1913.zones


图 4 修改/etc/named.rfc1913.zones文件

/etc/named.rfc1913.zones 文件中的 zone 语句用来定义域及相关选项,zone 语句内常用的选项及作用如表 5 所示。

表 5 zone语句内常用的选项及作用
选 项 作 用
type 设置域类型,类型可以是:
hint:当本地找不到相关解析后,可以查询根域名服务器。
master:定义权威域名服务器。
slave:定义辅助域名服务器。
forward:定义转发域名服务器
file 定义域数据文件,文件保存在 directory 所定义的目录下
notify 当域数据资料更新后,是否主动通知其他域名服务器
masters 定义主域名服务器 IP 地址,当 type 设置为 slave 后此选项才有效
allow-update 允许哪些主机动态更新域数据信息
allow-transfer 哪些从服务器可以从主服务器下载数据文件

3、正反向解析文件

在 BIND 软件的主配置文件中,一旦定义了 zone 语句,还必须创建域数据文件。域数据文件默认被存储在 /var/named 目录下,文件名称是由 zone 语句中的file选项决定。

数据文件分为正向解析文件和反向解析文件。正向解析文件保存了域名到IP地址的映射记录,反向解析文件保存了 IP 地址到域名的映射记录。常用的记录类型及描述如表 6 所示。

表 6 常用的记录类型及描述
记录类型 描 述
SOA 记录 域权威记录,表明本机服务器为该域的管理服务器
NS 记录 域名服务器记录
A 记录 正向解析记录,域名到 IP 地址的映射
PTR 记录 反向解析记录,IP 地址到域名的映射
CNAME 记录 别名记录,为主机添加别名
MX 记录 邮件记录,指定域名内的邮件服务,但需要指定优先级

首先输入 cd 命令查看 /var/named/ 目录下的文件信息,然后输入 cp –a 命令生成 /etc/named.rfc1913.zones 文件中指定的正反向解析文件,执行命令如图 7 所示。


图 7 生成正反向解析文件

使用 vim 命令修改正反向解析文件,正向解析文件如图 8 所示,反向解析文件如图 9 所示。

图 8 正向解析文件
 

图 9 反向解析文件
其中:

注意,SOA记录可以跨行输入,跨越多行时使用括号引用。

部署主域名服务器

1、修改主配置文件

虚拟根目录 /var/named/chroot/etc 没有配置文件,因此需要找到 usr/share/doc/bind-9.11.4sample/etc 目录下的配置文件模板,复制该文件到 /var/named/chroot/etc 目录下,然后根据自己的需要进行修改该配置文件。命令如下:

[root@bogon abcd]# cd /usr/share/doc/bind-9.11.4/sample/etc/
[root@bogon etc]# cp named.conf /var/named/chroot/etc/
cp:是否覆盖"/var/named/chroot/etc/named.conf"? y
[root@bogon etc]# chown root.named /var/named/chroot/etc/named.conf
[root@bogon etc]# vim /var/named/chroot/etc/named.conf

该文件可修改的内容如图 10 所示。


图 10 文件可修改内容

2、创建正向和反向解析文件

主配置文件配置完成后,可以根据模板创建具体的正反向解析文件,先创建一个名为 a.com.zone 的正向解析文件,然后使用同样的方法创建一个反向解析文件。读者可以根据自己的需要对文件中的数据进行修改。

输入命令如下:

[root@bogon abcd]# cd /usr/share/doc/bind-9.11.4/sample/var/named/
[root@bogon named]# cp named.ca /var/named/chroot/var/named/
[root@bogon named]# chown root.named /var/named/chroot/var/named/named.ca
[root@bogon named]# cp named.localhost /var/named/chroot/var/named/a.com.zone
[root@bogon named]# chown root.named /var/named/chroot/var/named/a.com.zone
[root@bogon named]# vim /var/named/chroot/var/named/a.com.zone

正向解析文件如图 11 所示。

图 11 正向解析文件

3、进行服务管理

主服务器部署完成后,需要通过防火墙开启特定的端口。可以通过 Linux 自带的防火墙 firewalld 来开启 DNS 服务器所要使用的 53 端口,其中,TCP 的 53 端口主要用于主从复制,而 UDP 的 53 端口用于数据查询。

执行结果如图 12 所示。


图 12 服务管理

部署从域名服务器

部署从域名服务器的作用是防止出现单点故障或实现负载均衡。

从域名服务器需要复制模板配置文件,并修改 named.conf 配置文件与主服务器配置文件。命令如下:

[root@bogon abcd]# cd /usr/share/doc/bind-9.11.4/sample/etc/
[root@bogon etc]# cp named.conf /var/named/chroot/etc/
cp:是否覆盖"/var/named/chroot/etc/named.conf"? y
[root@bogon etc]# chown root.named /var/named/chroot/etc/named.conf
[root@bogon etc]# vim /var/named/chroot/etc/named.conf

与主服务器不同的是,从服务器在同步数据文件时需要修改 SELinux 设置,否则不能进行同步操作。命令如下:

[root@bogon abcd]# setsebool -P named_write_master_zones=1
[root@bogon abcd]# mkdir -p /var/named/chroot/var/named/slaves
[root@bogon abcd]# chown root.named /var/named/chroot/var/named/slaves/
[root@bogon abcd]# chmod 775 /var/named/chroot/var/named/slaves/
[root@bogon abcd]# systemctl start named
[root@bogon abcd]# systemctl enable named

优秀文章