DNS服务器安装及配置教程
DNS 具有多种功能,其中最重要的功能是进行域名与 IP 地址之间的解析。IP 地址标记着互联网中的唯一一台计算机,计算机有了合法的 IP 地址才可以与任何一台主机进行通信。然而仅依靠人类的记忆力很难将所有的 IP 地址全部记录下来,因此使用域名服务器就可以将难以记忆的数字 IP 地址与容易记忆的域名建立映射关系。
也就是说,用户输入域名,计算机就开始搜索指定的 DNS 服务器,找到 DNS 服务器之后会向域名服务器发送请求,以帮助解析该域名对应的 IP 地址,待成功解析之后,将获得该域名对应的真实的IP地址,然后使用该 IP 地址与对方进行通信。
域名是分级的,一般分为主机名.、三级域名.、二级域名.、顶级域名.。计算机域名中最后的点表示根域,其次是根域下面的顶级域名,接着是二级域名等,如图 1 所示为域名树状结构图。注意,域名是由一串用点分隔的名字组成的(点代表根域,是所有域名的起点),通常包含组织名,而且必须包括两到三个字母的后缀,以指明组织的类型或该域名所在的国家或地区。
DNS的安装
安装 DNS 需要使用 BIND 软件,BIND 软件提供了最广泛的 DNS 服务。在 Linux 平台下,BIND 软件还提供了 chroot 与 utils 的软件包:- bind-chroot 的主要功能是使 BIND 软件可以运行在 chroot 模式下,从而使 BIND 软件运行在相对路径的根路径,而并不是 Linux 系统真正的路径;
- bind-utils 提供了对DNS服务器的测试工具程序,如 nslookup、dig 等。通过 yum 安装 bind-chroot 之后,/var/named/chroot/ 目录就是根路径。
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 检测是否安装成功
配置文件
安装成功后,会自动增加一个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 所示。
参 数 | 作 用 |
---|---|
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 所示。
选 项 | 作 用 |
---|---|
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 所示。
记录类型 | 描 述 |
---|---|
SOA 记录 | 域权威记录,表明本机服务器为该域的管理服务器 |
NS 记录 | 域名服务器记录 |
A 记录 | 正向解析记录,域名到 IP 地址的映射 |
PTR 记录 | 反向解析记录,IP 地址到域名的映射 |
CNAME 记录 | 别名记录,为主机添加别名 |
MX 记录 | 邮件记录,指定域名内的邮件服务,但需要指定优先级 |
首先输入 cd 命令查看 /var/named/ 目录下的文件信息,然后输入 cp –a 命令生成 /etc/named.rfc1913.zones 文件中指定的正反向解析文件,执行命令如图 7 所示。

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

图 8 正向解析文件

图 9 反向解析文件
- TTL 的值为 DNS 记录的缓存时间,这个值是其他域名服务器将数据存放在缓存中的时间;
- 1D 代表一天;
- SOA 记录后面的 ranme.invalid.代表域的权威服务器;
- @ 在数据文件中代表特殊含义,通常用“.”来表示 @ 符号;
- NS 记录代表域名服务器记录,如果有多个域名服务器,可以添加多条 NS 记录,但每个 NS 记录在下面都需要有对应的 A 记录;
- A 记录为正向解析记录,格式为在域名后面输入相应的 IP 地址。
注意,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 文件可修改内容
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 正向解析文件
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
[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
声明:《Linux系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。