1.DNS域名解析服务的实现机制:
在 CentOS 系统中,系统光盘自带了 BIND 服务的安装文件,主要包括以下几个软件包。
bind-9.9.4-37.el7.x86_64.rpm 提供了域名服务的主要程序及相关文件
bind-utils-9.9.4-37.el7.x86_64.rpm 提供了对 DNS 服务器的测试工具程序,如 nslookup 等
bind-libs-9.9.4-37.el7.x86_64.rpm 提供了 bind、bind-utils 需要使用的库函数
bind-chroot-9.9.4-37.el7.x86_64.rpm 为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为 BIND 服务的根目录),以提高安全性
2 . BIND服务控制
BIND 软件包安装完毕以后,会自动增加一个名为 named 的系统服务,通过 systemctl工具可以控制 DNS 域名服务的运行。
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: inactive (dead)
备注:查询named服务状态
3 . BIDN服务的文件配置
在使用BIND软件构建DNS(域名解析服务)时,操作的核心主要包含了两大类配置文件:主配置文件和区域数据文件。两者的功能独特,职责明确。他们一同工作,确保了DNS服务的顺利运行和执行。
首先,我们会遇到的是主配置文件。这是BIND服务的全局配置文件,主要任务是为名字服务器daemon —— 'named' 服务设定全局运行参数。它是所有BIND配置的基础,它规定了DNS服务器如何、在何时执行特定的任务。主配置文件扮演者枢纽的角色,负责在各种不同组件和功能之间进行来往。更具体来说,它能定义全局选项,包括但不限于网络接口绑定、端口,日志设定等。主配置文件也可以用来注册区域,这指的是你如何将区域及其相应的区域文件写入你的DNS服务器,这是确定服务器负责哪些DNS区域的关键步骤。此外,主配置文件中的访问控制列表(Access Control List, ACL)则用于限定哪些客户端可以查询你的DNS服务器,保证服务器的安全性,防止恶意袭击。总的来说,主配置文件是BIND运行的核心,它起着组织、分配和引导的作用,使得DNS服务能够按照预定的方式运行。
其次,区域数据文件得到了主配置文件的引领,具体执行解析服务。它是DNS区域—实质上是一系列独一无二的域名空间—的具体解析记录的载体,储存着所有提供给请求者(例如浏览器、终端客户端等)查询的解析记录。有时亦称之为“zone file”
(1)主配置文件
主配置文件通常命名为named.conf
,该文件是BIND服务的主要配置文件。让我们骨架化地了解一下这个文件通常的内容和结构:
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
这段配置是BIND DNS服务器设置中的options
区块,用于定义服务器的一些全局行为。具体参数解释如下:
- listen-on port 53 { 127.0.0.1; };
这指定BIND服务监听在本地的127.0.0.1地址的53号端口上对于IPv4的请求。通常,127.0.0.1是本机的回环地址,这样设置意味着BIND服务只会接受发向本地机器的DNS请求。 - listen-on-v6 port 53 { ::1; };
类似地,对于IPv6,BIND服务被配置为监听在回环地址::1上的53端口,仅接收针对服务器本身的IPv6域名解析请求。 - directory "/var/named";
这一行设置了BIND在查找区域文件和其他相关DNS配置文件时的基础目录路径。 - dump-file "/var/named/data/cache_dump.db";
指定了服务器在执行缓存转储时,缓存内容应当被保存到的文件路径。 - statistics-file "/var/named/data/named_stats.txt";
此参数指定服务器的统计信息输出文件,用来存储DNS查询统计数据。 - memstatistics-file "/var/named/data/named_mem_stats.txt";
设置用于记录服务器内存统计信息的文件路径。 - recursing-file "/var/named/data/named.recursing";
此文件记录了所有当前递归查询的信息。 - secroots-file "/var/named/data/named.secroots";
该文件用于存储与DNSSEC验证的根密钥相关的信息。 - allow-query { localhost; };
该设置限制了仅允许本地机器(localhost)提交DNS查询请求,在这里使用的是一个ACL名,通常这意味着只有从服务器自身发起的请求会被处理。
acl "trusted" { 192.0.2.0/24;
};` —— 这一部分通过为信任的网络或主机定义一个名字(在这个例子中为 "trusted"),使得DNS管理员可以在配置文件的其他地方引用这个名称,以便于控制哪些客户端可以查询哪些区域或执行特定类型的查询。- 区域定义: 区域定义是配置文件中最为关键的部分之一,这部分指定了DNS服务器管理的区域(区域数据文件路径、区域类型等)。
zone "." IN {
type hint;
file "named.ca";
};
在BIND软件的DNS配置中,这段配置定义了一个特殊的区域——“根区域”。根区域用一个点 "." 表示,是DNS层级结构的最顶层。这段配置通常出现在BIND服务器的主配置文件named.conf
中,具体的含义如下:
- **zone "."**:表示这是针对根区域的配置。根区域是DNS层次结构的最高级别,所有的域名解析最终都是从这里开始递归查询的。
- IN:是一个类标识符,在这里指的是互联网(Internet)。
- type hint:指示这个区域的类型是“hint”。在DNS中,hint类型用来告诉名字服务器根域名服务器的初始信息。它不是权威数据,而是作为服务器启动时解析根域的参考信息。
- **file "named.ca"**:指明存储根域名服务器的参照信息的文件路径为 "named.ca"。这个文件也经常被称为“根提示文件”(root hints file),它包含了所有根域名服务器的地址。BIND服务器在启动或者没有缓存信息时,会参照这个文件中的信息查询根服务器。