一.BIND域名服务基础
1.DNS系统的作用及类型
整个
Internet
大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件
等服务器都使用了域名形式的地址,如
www.google.com
、
mail.163.com
等。很显然这种地
址形式要比使用
64.233.189.147
、
202.108.33.74
的
IP
地址形式更加直观,且更容易被用
户记住。
DNS
系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与
IP
地
址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
正向解析:根据域名查 IP 地址,即将指定的域名解析为相对应的 IP 地址。域名的
正向解析是
DNS
服务器最基本的功能,也是最常用的功能。
反向解析:根据 IP
地址查域名,即将指定的
IP
地址解析为相对应的域名。域名的
反向解析不是很常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证。
实际上,每一台
DNS
服务器都只负责管理一个有限范围(一个或几个域)内的主机域
名和
IP
地址的对应关系,这些特定的
DNS
域或
IP
地址段称为
zone
(区域)。根据地址解
析的方向不同,
DNS
区域相应地分为正向区域(包含域名到
IP
地址的解析记录)和反向区
域(包含
IP
地址到域名的解析记录)。
根据所管理的区域地址数据的来源不同,
DNS
系统可以分为不同的类型。在同一台
DNS
服务器中,相对于不同的区域来说,也拥有不同的身份。常见的几种类型如下。
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他 DNS 服务器作为解析来源。
![](https://img-blog.csdnimg.cn/direct/ac06adcdd6d243c183814579d6408b8e.png)
主域名服务器:维护某一个特定 DNS
区域的地址数据库,对其中的解析记录具有
自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务
器时,需要自行建立所负责区域的地址数据文件。
![](https://img-blog.csdnimg.cn/direct/22fb00b49f9e449ab91954b749de448a.png)
从域名服务器:与主域名服务器提供完全相同的 DNS
解析服务,通常用于
DNS
服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询
的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定
的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位
置,以便服务器能自动同步区域的地址数据库。
![](https://img-blog.csdnimg.cn/direct/6584d8f6d1624e6986392650eccc2699.png)
以上所述主、从服务器的角色只是针对某一个特定的
DNS
区域来说的。例如,同一台
DNS
服务器,可以是
“.chinaunix.net”
区域的主域名服务器,同时也可以是
“.cublog.cn”
区域
的从域名服务器。
2.BIND的安装和控制
BIND
不是唯一能够提供域名服务的
DNS
服务程序,但它却是应用最为广泛的,
BIND
可以运行在大多数
Linux/UNIX
主机中。其官方站点位于
https://www.isc.org/
。
(1)安装BIND软件
在
CentOS
系统中,系统光盘自带了
BIND
服务的安装文件,主要包括以下几个
软件包。
bind-9.9.4-37.el7.x86_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
服务器的测试工具程序,如
nslookup
等。
bind-libs
:提供了
bind
、
bind-utils
需要使用的库函数。
bind-chroot
:为
BIND
服务提供一个伪装的根目录(将
/var/named/chroot/
文件夹
作为
BIND
服务的根目录),以提高安全性。
默认已安装
bind-utils
和
bind-libs
,因此只需要安装
bind
和 bind-chroot 即可。
![](https://img-blog.csdnimg.cn/direct/70010c11118c4f1f9ec402dd2288d914.png)
(2).BIND服务控制
BIND
软件包安装完毕以后,会自动增加一个名为
named
的系统服务,通过
systemctl
工具可以控制
DNS
域名服务的运行。例如,执行以下操作可以查询
named
服务的运行状
态。
![](https://img-blog.csdnimg.cn/direct/20628d5482e1483a87a7b11f543e16d0.png)
3.BIND服务的配置文件
使用
BIND
软件构建域名服务时,主要涉及两种类型的配置文件:主配置文件和区域数
据文件。其中,主配置文件用于设置
named
服务的全局选项、注册区域及访问控制等各种
运行参数;区域数据文件用于存放某个
DNS
区域的地址解析记录(正向记录或反向记
录)。
(1)主配置文件
主配置文件
named.conf
通常位于
/etc/
目录下,在
named.conf
文件中,主要包括全局
配置、区域配置两个部分,每一条配置记录的行尾以分号
“;”
表示结束,以
“#”
号或
“//”
开始的
部分表示注释文字(大段注释可以使用
“/* …… */”
的格式)。
①全局配置部分
全局配置参数包括在形如
“options { };”
的大括号中,如可以设置监听的地址和端口、区
域数据文件存放的目录、允许哪些客户机查询等。
![](https://img-blog.csdnimg.cn/direct/5bc788c32262475983bb658c4afaae0b.png)
上述配置内容中,除了
directory 配置项通常会保留以外,其他的配置项都可以省略。
每个 zone 区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而
若不指定
listen-on
配置项,则
named
默认在所有接口的
UDP 53
端口监听服务;若不指定
allow-query
配置项,则默认会响应所有客户机的查询请求。
注:DNS工作在两种协议下:
(1)UDP:53;递归查询,当域名过程会用TCP递归查询
客户端发送解析请求给服务器
(2)TCP:53;迭代查询
主从DNS服务器
DNS服务器转发解析给另一个DNS服务器
(1)UDP:53;递归查询,当域名过程会用TCP递归查询
客户端发送解析请求给服务器
(2)TCP:53;迭代查询
主从DNS服务器
DNS服务器转发解析给另一个DNS服务器
全局配置的各项参数
![](https://img-blog.csdnimg.cn/direct/1ebc02513be24c9e830de7ea9b82269e.png)
options:选项
listen-on :监听
directory:目录相关
dump-file:转储文件
directory:目录相关
dump-file:转储文件
statistics-file:状态统计文件
memstatistics-file :内存相关文件
recursing-file :存储相关
recursing-file :存储相关
secroots-file: 递归查询放置的文件
allow-query:允许查询
②区域配置部分
区域配置参数使用
“zone …… { };”
的配置格式,一台
DNS
服务器可以为多个区域提供
解析,因此在
named.conf
文件中也可以有多个
zone
配置段。区域类型按照解析方向可分
为正向区域、反向区域。
![](https://img-blog.csdnimg.cn/direct/7624aebaace94f71a6d04261cce15918.png)
在上述配置内容中,有几个地方需要注意:
每个 zone 区域都是可选的(包括根域、回环域、反向域),具体根据实际需要而
定,
zone
配置部分的
“IN”
关键字也可以省略。
反向区域的名称由倒序的网络地址和“.in-addr.arpa”
组合而成。例如,对于
192.168.1.0/24
网段,其反向区域名称表示为
“1.168.192.in-addr.arpa”
。
file
配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。
区域配置中的部分参数(如 allow-transfer
)也可以放在全局配置中。
修改完主配置文件以后,可以执行
“named-checkconf”
命令对
named.conf
文件进行语
法检查。如果文件中没有语法错误,该命令将不给出任何提示;反之,则会给出相应的提
示信息,然后根据出错提示修正文件中的错误即可。带
“-z”
选项的
“named-checkconf”
命令
还可以尝试加载主配置文件中对应的区域数据库文件,并检查该文件是否存在问题。例
如,当出现“…file not found”的错误时,表示找不到对应的文件。
![](https://img-blog.csdnimg.cn/direct/3c79b004a05f46b5b01848dd6ed926e9.png)
![](https://img-blog.csdnimg.cn/direct/381c7b955b5d4125962176267f2440e5.png)
关于
named.conf
文件中各种配置项的详细说明,可以执行
“man named.conf”
命令查看
手册页,也可参考配置样本文件
/usr/share/doc/bind-9.9.4/sample/etc/named.conf
。
③/var/named/named.ca
![](https://img-blog.csdnimg.cn/direct/963e553a4a114c6fb34db70d879a1e07.png)
![](https://img-blog.csdnimg.cn/direct/b286ec4009734b1b83aa4c10a55bc459.png)
此文件下放置的是13个根服务器并列出了它们的地址。
A:表示该服务器是ipv4类型的。
AAAA:表示该服务器是ipv6类型的。
(2).区域数据配置文件
区域数据配置文件通常位于
/var/named/
目录下,每个区域数据文件对应一个
DNS
解析
区域,文件名及内容由该域的管理员自行设置。
根域
“.”
的区域数据文件比较特殊。
Internet
中所有的
DNS
服务器都使用同一份根区域
数据文件,其中列出了所有根服务器的域名和
IP
地址。根区域数据文件可以从国际互联网
络信息中心(
InterNIC
)的官方网站地址
http://www.internic.net/
下载。
在区域数据文件中,主要包括
TTL
(
Time To Live
,生存时间)配置项、
SOA
(
Start Of
Authority
,授权信息开始)记录、地址解析记录。文件中的注释信息以
“;”
(分号)开始。
①TTL 配置及 SOA 记录部分
第一行的
TTL
配置用于设置默认生存周期,即缓存解析结果的有效时间。
SOA
记录部
分用于设置区域名称、管理邮箱,以及为从域名服务指定更新参数。
![](https://img-blog.csdnimg.cn/direct/dc94dadccaad486099e0df4d595ec450.png)
上述配置内容中,时间单位默认为秒(
s
),也可以使用
M
(分)、
H
(时)、
W
(周)、
D
(天)等单位。文件中的
“@”
符号表示当前的
DNS
区域名,相当于
“bdqn.com.”
或
“admin.bdqn.com.”
,表示域管理员的电子邮箱地址(由于
“@”
符号已有其他含义,因此将电
子邮件地址中的
“@”
用
“.”
代替)。
SOA
记录中的更新序列号用来同步主、从服务器的区域数
据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相
同,则不会进行下载。
②地址解析记录部分
地址解析记录用来设置
DNS
区域内的域名、
IP
地址映射关系,包括正向解析记录和反
向解析记录。反向解析记录只能用在反向区域数据文件中。
![](https://img-blog.csdnimg.cn/direct/ca14a47d6c5c4dfdaab0b3de57a88090.png)
上述配置内容中,用到以下四种常见的地址解析记录。
NS
(
Name Server
,域名服务器):记录当前区域的
DNS
服务器的主机地址。
MX
(
Mail Exchange
,邮件交换):记录当前区域的邮件服务器的主机地址,数字
10
表示(当有多个
MX
记录时)选择邮件服务器的优先级,数字越大,优先级越
低。
A
(
Address
,地址):记录正向解析条目。例如,
“www IN A 173.16.16.1”
表示域
名
www.bdqn.com
对应的
IP
地址是
173.16.16.1
。
CNAME
(
Canonical Name
,别名):记录某一个正向解析条目的其他名称。例如,
“ftp IN CNAME www”
表示域名
ftp.bdqn.com
是
www.bdqn.com
的别名。
其中,
NS
、
MX
记录行首的
“@”
符号可以省略(默认继承
SOA
记录行首的
@
信息),但
是必须保留一个空格或
Tab
制表符。
在反向区域数据文件中,不会用到
A
记录,而是使用
PTR
指针(
Point
)记录。例如,
对于反向区域
16.16.173.in-addr.arpa
,添加的反向解析记录可以是以下形式。
![](https://img-blog.csdnimg.cn/direct/5a2dc0b0e80548f1bcb638dff1e72c23.png)
使用
PTR
记录时,第一列只需要指明对应
IP
地址的
“
主机地址
”
部分即可,如
“1”
或
“4”
等,系统在查找地址记录时会自动将当前反向域的网络地址作为前缀。例如,上述文件中的
“4 IN PTR mail.bdqn.com.”
表示
IP
地址为
173.16.16.4
的主机的域名是
mail.bdqn.com.
。
在区域数据配置文件中,凡是不以点号
“.”结尾的主机地址,系统在查找地址记录时都会
参考上述网络结构,本小节案例使用的基本环境和要求如下所述。
主、从域名服务器均位于 Internet 中,所负责的 DNS 区域为 “bdqn.com” 。
下面首先讲解使用 BIND 构建主域名服务器的基本步骤。
自动将当前的域名作为后缀。例如,若当前的
DNS
域为
“bdqn.com”
,则在文件中的主机地
址
“www”
相当于
“www.bdqn.com.”
。因此,当使用完整的
FQDN
(
Fully Qualified Domain
Name
,完全合格域名
/
全称域名)地址时,务必记得地址末尾的点号
“.”
不能省略。
修改完区域数据文件以后,可以执行
“named-checkzone”
命令对该文件进行语法检查。
依次指定区域名称、数据文件名作为参数。如果文件中没有语法错误,系统将给出
“OK”
的
提示信息。例如,若要检查
DNS
区域
bdqn.com
的区域数据文件
bdqn.com.zone
,可以执
行以下操作。
![](https://img-blog.csdnimg.cn/direct/481baf801327467ca2b3244af2629fa9.png)
当一台服务器需要同时承载某个
DNS
区域内的许多个不同的域名(如
IDC
的虚拟主机
服务器、提供个人主页空间的网站服务器等)时,可以在区域数据文件的最后一行添加泛域
名解析记录,即使用
“*”
以匹配任意主机名。
![](https://img-blog.csdnimg.cn/direct/988e4a50e546445e88c608e3a5c78a68.png)
二.使用BIND构建域名服务器
在前面的章节中学习了
DNS
服务器的相关基础知识、
BIND
软件包的安装,以及
DNS
服务器的配置文件组成、配置格式等。下面分别讲解构建缓存域名服务器、主域名服务器、
从域名服务器的基本过程。
1.构建缓存域名服务器
缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对
互联网访问的出口流量。例如,在一个小型企业的内部网络(图
3.1
)中,可单独建立一台
(或集成在网关主机中)缓存域名服务器,为各部门的员工计算机提供
DNS
解析服务。
![](https://img-blog.csdnimg.cn/direct/abd4728c835245d88a36e2bdce963671.png)
缓存域名服务器的 IP
地址为
192.168.1.5
,并能够正常访问互联网。
缓存域名服务器代为处理客户端的 DNS
解析请求,并缓存查询结果。
局域网内的各 PC
将首选
DNS
服务器地址设为
192.168.1.5
。
下面讲解使用
BIND
构建此缓存域名服务器的基本步骤。
(1)建立主配置文件 named.conf
若使用范本文件创建
named.conf
,应注意修改或删除默认的监听设置、查询控制,以
便能够为局域网段的客户机提供服务。另外,
logging
、
view
配置部分一般用不到,可以先
注释以避免其干扰。
![](https://img-blog.csdnimg.cn/direct/a7b87a8fddf048b5b03874a7f897c622.png)
![](https://img-blog.csdnimg.cn/direct/ea8fdcff20474fc5ad31b905895a8969.png)
上述配置内容中,
dump-file
、
statistics-file
等配置项用于指定缓存数据库文件、状态统
计文件的位置。添加了
“zone '.' IN { };”
部分的根区域设置,尽管缓存服务器并没有自主控制
的区域数据,但可以向根服务器进行迭代查询,并将最终获得的解析结果反馈给客户。
有时候为了提高解析效率,也可以不向根区域查询,而是将来自客户端的查询请求转发
给国内电信运营商的
DNS
服务器(如北京的
202.106.0.20
、
202.106.148.1
),缓存服务器
收到返回的查询结果后再传递给客户端。只要去掉
“zone '.' IN {……};”
的设置,并在全局配
置中正确设置
forwarders
参数即可实现该功能,具体操作如下:
![](https://img-blog.csdnimg.cn/direct/83762f295cf34f33a82ac4dc93009e47.png)
(2)确认根域的区域数据文件 named.ca
根区域的区域数据文件默认位于文件
/var/named/named.ca
中,该文件记录了
Internet
中
13
台根域服务器的域名和
IP
地址等相关信息。
(3)启动 named 服务
执行
“systemctl start named”
命令,启动
named
服务,并通过
netstat
命令确认
named
服务的端口监听状态。若服务启动失败或发现没有正常监听
UDP 53
端口,可以根据错误提
示信息(或者
/var/log/messages
文件中的日志记录)排除错误,然后重启服务即可。
![](https://img-blog.csdnimg.cn/direct/b37ad2c1386245ec950e6a79654f29b5.png)
(4)验证缓存域名服务器
在局域网内的客户机中,将首选
DNS
服务器的地址设为
192.168.1.5
,生效后,执行
“nslookup www.google.com”
命令对其进行解析,验证其是否能够获得该域名对应的
IP
地址
信息。
2.构建主域名服务器
主域名服务器通常架设在
Internet
环境中,提供某一个域或某几个域内的主机名与
IP
地址的查询服务。为了分担域名查询的压力、提供区域数据的备份,有时还会另外架设一台
从域名服务器,与主域名服务器同时提供服务,如图
所示。
![](https://img-blog.csdnimg.cn/direct/91918b89a39b4e9aa1f98a1c72998366.png)
参考上述网络结构,本小节和下一小节将分别介绍主域名服务器、从域名服务器的构建
过程。案例使用的基本网络环境和要求如下所述。
主、从域名服务器均位于 Internet 中,所负责的 DNS 区域为 “bdqn.com” 。
主服务器的 IP
地址为
173.16.16.5
,主机名为
ns1.bdqn.com
。
从服务器的 IP
地址为
173.16.16.6
,主机名为
ns2.bdqn.com
。
在 bdqn.com
区域中,除了
NS
记录以外,提供的解析记录还包括以下内容。
网站服务器 www.bdqn.com
,
IP
地址为
173.16.16.1
。
邮件服务器 mail.bdqn.com
,
IP
地址为
173.16.16.2
。
在线培训服务器 study.bdqn.com
,
IP
地址为
173.16.16.3
。
参考上述各服务器的地址映射关系,为 173.16.16.0/24
网段提供反向解析。
设置 bdqn.com
域的泛域名解析,对应的
IP
地址为
173.16.16.1
。
客户机将首选 DNS
服务器、备用
DNS
服务器分别设为
173.16.16.5
和
173.16.16.6
,
使用其中的任何一个服务器,都能够正常查询
bdqn.com
区域中的主机地址。
下面首先讲解使用 BIND 构建主域名服务器的基本步骤。
(1)确认本机的网络地址丶主机映射丶默认DNS服务器地址
将主域名服务器的
IP
地址设为
173.16.16.5
,主机名设为
ns1.bdqn.com
。另外,为了
提高域名解析效率,建议将两个
DNS
服务器的地址映射直接写入
/etc/hosts
文件中,并在
/etc/resolv.conf
文件中指定两个
DNS
服务器的地址,操作如下:
![](https://img-blog.csdnimg.cn/direct/c6d0991765d349879470666838d09291.png)
(2)建立主配置文件 named.conf
新 创 建 的
named.conf
主 配 置 文 件 只 需 要 提 供
bdqn.com
域 的 正 向 解 析 和
173.16.16.0/24
网段的反向解析,因此相应地添加这两个区域即可。根区域、回环域等其他
配置内容可以省略。建立主配置文件的操作如下:
![](https://img-blog.csdnimg.cn/direct/1fb377b2f63740dcbd9dad8f177ba602.png)
当不需要建立从域名服务器时,上述配置内容中的
“allow-transfer ……”部分可以不添加;当不需要提供反向解析时,
“zone "16.16.173.in-addr.arpa" ……”
部分也可以去掉。
(3)建立正丶反向区域数据文件
根据
named.conf
中的
zone
区域设置,分别建立正向区域数据文件
bdqn.com.zone
、
反 向 区 域 数 据 文 件
173.16.16.arpa
, 操 作 如 下 。 配 置 内 容 可 以 参 考 区域 数 据 文 件
/var/named/named.localhost
。
![](https://img-blog.csdnimg.cn/direct/59e6b85b1c0d49f59b31f2ae1d624f66.png)
![](https://img-blog.csdnimg.cn/direct/5d4a5005e7dd462cb77fa9d29906b73e.png)
因为区域数据配置文件是手动创建的,默认的属主与属组均为
root
用户,而
named
服
务默认以名为
“named”
的用户身份运行。
named
用户要对区域数据文件有读取权限。否则,
BIND 服务将无法读取所创建的区域数据配置文件,具体操作如下:
![](https://img-blog.csdnimg.cn/direct/262d083f606b411f812511771b252f79.png)
(4).启动 named 服务或重载配置
执行如下的
“systemctl start named”
命令以启动
named
服务,如果之前
named
服务已
经在运行,也可以通过
“systemctl reload named”
重载配置。
![](https://img-blog.csdnimg.cn/direct/7645befe70274253bf435b5849fcaa08.png)
(5).验证主域名服务器
在客户端将
DNS
服务器指向
173.16.16.5
(主域名服务器的
IP
地址),使用
nslookup
命令验证
DNS
查询结果。例如,以下操作使用
Windows 10
客户机分别验证了正向解析、
泛域名解析和反向解析的查询结果。
3.构建从域服务器
本小节将延续前面一节中的应用案例,在已经构建好主域名服务器
173.16.16.5
的基础
上,继续构建从域名服务器
173.16.16.6
。
(1)确认本机的网络地址丶主机映射丶默认 DNS 服务器地址
将从域名服务器的
IP
地址设为
173.16.16.6
,主机名设为
ns2.bdqn.com
。另外,主机
映射文件
/etc/hosts
和
DNS
解析文件
/etc/resolv.conf
的内容与主服务器中的内容相同。
(2)建立主配置文件 named.conf
在从域名服务器中,
named.conf
文件的内容与主服务器的内容大部分相同,只是不需
要再设置
“allow-transfer ……”
;更关键的一点是,
zone
部分的区域类型应设置为
“slave”
,
并添加
“masters { };”
语句来指定主域名服务器的地址,具体操作如下:
![](https://img-blog.csdnimg.cn/direct/4e0274fcc8e04bda91aa9d10623927bc.png)
由于从服务器的区域数据文件是从主服务器中下载而来,因此该文件保存的名称可以自
行定义,不用与主服务器中的名称一致。但需要注意的是,
named
服务默认以名为
“named”
的用户身份运行,因此要确认
named
用户对存放目录有写入权限,具体操作如下:
![](https://img-blog.csdnimg.cn/direct/84ede39689d04df48f0b40d4ecf9433e.png)
(3)启动 named 服务,查看区域数据文件是否下载成功
在从域名服务器中启动
named
服务,若配置无误,则
named
将会从主域名服务器中
自动下载指定的区域数据文件,并保存到
slaves/
目录下。另外,通过系统日志文件
/var/log/messages
也可以观察到下载区域数据文件的过程,具体操作如下:
![](https://img-blog.csdnimg.cn/direct/df5c44ce55d64028904e169274d9a8e6.png)
(4).验证从域名服务器
对于客户端来说,从域名服务器与主域名服务器没有什么区别,通过主服务器能够查询
到的信息,通过从服务器也同样能够查询到。验证从域名服务器时,只需要将客户端的首选
DNS
服务器地址设为
173.16.16.6
(从域名服务器的
IP
地址),使用
nslookup
命令进行正
常测试即可。例如,以下操作是使用
Win10
客户机的测试结果。
![](https://img-blog.csdnimg.cn/direct/3137d19b0f28458998813044b666d0d0.png)
![](https://img-blog.csdnimg.cn/direct/4da241ad5e3a482ab7ccd3e7ffef3ced.png)