一、DNS系统的作用及类型
用户访问网址一般使用的不是IP地址,而是使用域名代替复杂的IP地址,因为这种形式更容易被用户记忆和使用。
DNS系统记录了网络中IP地址和域名的映射关系,这种映射关系又分为正向映射和反向映射。
- 正向映射:根据域名解析IP地址。
- 反向映射:根据IP地址解析域名。
每一台DNS服务器都负责一定的区域内的主机域名和IP地址的映射关系,这些特定的DNS域或IP地址段又被称为"zone"(区域),而根据解析方向的不同,DNS区域响应的分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)。
根据所管理的区域地址数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。常见的身份如下:
- 缓存域名服务器:只是缓存最近解析过的域名的结果,目的在于提高查询效率,但是没有自己控制的区域地址数据。构建域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
- 主域名服务器:维护某一个特定DNS区域的地址数据库,对数据库中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器:通常用于主DNS服务器的热备份。对客户机来说,主、从服务器没有区别。而从服务器角度看,它们之间的区别在于:从服务器的所有解析记录来自主服务器。构建从服务器时,需要指定主域名服务器的位置,以便从服务器能够自动同步主服务器中的地址数据库。
二、BIND的安装
构建DNS服务器需要安装以下四个软件包:
- bind-9.9.4-37.el7.86_64.rpm。
- bind-utils-9.9.4-37.el7.x86_64.rpm。
- bind-libs-9.9.4-37.el7.x86_64.rpm。
- bind-chroot-9.9.4-37.el7.x86_64.rpm。
各软件包的主要作用如下:
- bind:提供了域名服务的主要程序及相关文件。
- bind-utils:提供了对DNS服务器的测试工具程序,如nnslookup等。
- bind-libs:提供了bind、bind-utils需要使用的库函数。
- bind-chroot:为BIND服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为BIND服务的根目录),以提高安全性。
也可以使用yum直接安装以bind开头的软件包:
yum install -y bind*
在安装完bind后,系统会添加一个named的服务,可以通过systemctl来启动该服务:
systemctl start named
四、BIND服务的配置文件
使用BIND软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域配置文件:
1. 主配置文件(named.conf):用于设置named服务的全局选项、注册区域及访问控制等各种运行参数,通常位于/etc/目录下。文件中分为全局配置部分和区域配置部分。
全局配置部分:包括在形如"option{};"的大括号中,可以设置监听的地址和端口、区域数据文件存放的目录、允许哪些客户机查询等。
区域配置部分:区域配置参数使用"zone......{};"的配置格式,一台服务器可以为多个区域提供解析。区域的类型按照解析方向分为正向和反向。
在上述配置内容中,有几个地方需要注意:
每个zone区域的是可选的(包括根域、回环域、反向域),具体根据实际要求而定。
反向区域的名称由倒序的网络地址和".in-addr.arpa"组合而成。
file配置项用于指定实际的区域数据文件。
区域配置中的部分参数也可以放在全局配置中。
2. 区域数据配置文件:位于/var/named/目录下,一个区域文件对应一个DNS解析域。在区域设置文件中,主要包括TTL(生存时间)配置项、SOA(授权信息开始)记录、地址解析记录。
第一行的TTL配置用于设置缓存解析结果的有效时间。SOA部分用于设置区域名称、管理邮箱,以及从域名服务指定更新参数。
文件中的@符号表示当前的DNS区域名,相当于"zkk.com"。SOA记录中的更新序列号用来同步主、从服务器的区域数据,若主、从服务器的序列号相同,则从服务器不会从主服务器下载区域数据。
下面是地址解析记录部分,用来设置DNS区域内的域名、IP地址映射关系,包括正向解析记录和反向解析记录。
上述配置内容中,用到以下四种常见的地址解析记录。
- NS:Name Server(域名服务器),记录当前区域的DNS服务器的主机地址。
- MX:Mail Exchange(邮件交换),记录当前区域的邮件服务器的主机地址,数字10表示选择邮件服务器的优先级,数字越大,优先级越低。
- A:记录正向解析条目,在反向区域数据文件中,使用PTR记录,反向解析记录的形式为:
IP地址中的主机部分 IN PTR 域名
在区域数据配置文件中,凡是不以点号"."结尾的主机地址,系统在查找地址记录时都会
自动将当前的域名作为后缀。
修改完主配置文件以后,可以执行“named-checkconf"命令对 named.conf 文件进行语法检查。如果文件中没有语法错误,该命令将不给出任何提示。使用"named-checkzone"命令可以对区域配置文件进行检查,依次指定区域名称、数据文件名作为参数,如果没有错误,系统会给出"OK"的提示信息。
五、使用BIND构建域名服务器
3.1 构建缓存域名服务器
zone项配置参考第四部分中的区域配置部分。
这个配置是项根域名服务器发送域名解析请求,所以解析过程可能较慢。若用其他主机验证配置是否正确,需要先改变DNS解析服务器的地址为此DNS服务器的地址,再使用"nslookup"命令,指定一个域名,例如www.baidu.com进行测试。
3.2 构建主域名服务器
zone项的配置图示如下:
在/var/named/目录中创建一个名为"zkk.com.zone"文件(文件名可以随意设置)。具体的配置如下:
$TTL 1D
@ IN SOA zkk.com. admin.zkk.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns1.zkk.com.
IN NS ns2.zkk.com.
IN MX 10 mail.zkk.com.
ns1 IN A 192.168.10.102
ns2 IN A 192.168.10.103
www IN A 192.168.10.105
ftp IN A 192.168.2.149
mail IN A 192.168.10.106
* IN A 192.168.10.106
3.3 构建从域名服务器
从服务器的配置与主服务器一致,需要修改的位置为:
- 主配置文件中的listen-on port 53花括号中的内容改为从服务器的IP地址。
- zone项的type项的master改为slave,且将allow-transfer替换为masters并加一个花括号,里面指定主服务器的IP地址(IP地址前后要空一格且在末尾加分号)。
- 在file一项添加从服务器的区域文件路径保存来自主服务器的区域文件。
之后关闭防火墙并重启named服务。从服务器会从主服务器复制区域配置文件到/var/named/slaves/目录中。
3.4 反向解析域名服务
反向解析也需要配置主配置文件中的zone项并创建一个区域文件。
反向解析的zone项与正向解析的域名的格式不同:
反向网络地址.in-addr.arpa
且与正向解析条目的"A"不同,反向解析的条目为"PTR"。具体的区域文件配置如下图:
在配置完成后,按照前面的步骤进行验证即可,需要注意DNS服务器与客户机间的网络连通,以及DNS服务器和客户机都能访问网络。
若有错误可以查看/var/log/messages文件中的记录。