一、DNS域名结构和域名服务器
域名系统 DNS(Name)是互联网用来将人们容易使用的机器名称转换为IP地址的命名系统。域名系统实际上是名称系统。为什么叫“域名”而不是“名字”?这是因为在这个 命名系统中使用了很多“()”,因此出现了“域名”一词。“域名系统”清楚地表明在互联网上使用了这样的系统。
一、域名结构
在了解DNS服务器之前,需要先了解一下互联网上域名空间的结构,如下图所示:
顶级域名是域名的最后一部分,即域名最后一个点之后的字母。例如,在这个域名中,顶级域为.com(或.COM),大小写相同。
二级域名是域名的倒数第二部分,比如在这个域名中,二级域名就是。等等。
2.域名服务器
互联网上的DNS服务器是按级别排列的,根据不同级别的域名服务器所扮演的角色,域名服务器可以分为4种不同的类型。
【根域名服务器】
最高级别的域名服务器(如总理)也是最重要的域名服务器。世界上有 13 个根域名服务器名称,它们是(它们按字母顺序命名):
当然,也可以不使用与物理服务器地址对应的名称,而是以根服务器的名称作为入口,对应一组服务器集群,提供域名解析服务。
【顶级域名服务器】
就像国家总理手下的各个省长,管辖省级单位。在 DNS 中,他们负责管理在该顶级域名服务器上注册的下一级域名(二级域名)。所有 TLD 服务器的名称和 IP 地址都向根服务器注册,即根服务器知道所有 TLD 服务器的名称和 IP 地址。
【权威域名服务器】
负责一个区的域名服务器,就像省长以下的市长、镇长、乡长和其他管理员一样。顶级域名服务器也可以看作是权威的域名服务器,但由于其特殊性,我们特意将其划分为一类。因此,权威域名服务器通常是指管理顶级域名以下的二级、三级、四级域名的服务器。
上述三台服务器之间的关系可以用这张图来表示:
【本地域名服务器】
这种类型的服务器不属于上述层次结构。当主机(个人计算机)发出DNS请求时,查询请求被发送到本地名称服务器,该名称服务器负责回答查询,或者将主机替换到域名空间中的不同级别。查询权威域名服务器,将查询结果返回给主机。
下图展示了一个域名的解析过程以及各类域名服务器的位置。
3. 为什么要使用 DNS 服务器
域名服务器提供从域名到IP地址的解析服务。互联网上有大量的域名。不可能将所有的域名信息都存储在一个域名服务器中,也不可能上述每个节点都使用一个域名服务器。在实际的公网DNS系统中,域名服务器是通过划分区域来管理的。
服务器负责的范围称为区域。如果把域名空间结构的根比作一个国家,顶级域名比作省级行政单位,二级域名比作市级单位,三级,和一个四级域名。把它想象成一个镇和一个乡,那么我们自然会认为总理主管国家,省长主管,还有市长,镇长等等。
假设域层次结构如图所示分布。
如果采用(a)的方法,那么节点 abc 下的整个子树就变成了一个区,它们由一个(通常是 1 组)域名服务器管理,就像一个北京城市一样,所有的后续交易都有北京市市长说了算;
如果采用(b)的方法,则将abc节点下的词数分为两个区域:x节点下的子树和y节点下的子树。这两个子树分别由 x 和 y 对应的域名服务器管理。,就像一个福建省,x是福州市,y是厦门市,福建省省长只管理福州市和厦门市的市长,而不会直接管理福州市和厦门市以下的单位。福州、厦门以下单位分别由福州、厦门市长管辖。
这样,将一个域中的子树的一部分分配给另一个域名服务器,称为“授权委托”。委派的下一级名称服务器管理。
互联网上的域名结构呈树状分布,因此DNS服务器也是相应的树状结构,每个DNS服务器都可以提供从一些域名(其管辖的域名)到IP地址的解析。
4.DNS查询
查询方式
递归查询:客户端向自己的 DNS 服务器请求解析的方式
迭代查询:服务端查询服务端的方式
主机对本地域名服务器的查询一般是递归查询。所谓递归查询就是:如果主机查询的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器会继续向其他根域名服务器发送查询请求消息,如DNS 客户端(即继续进行主机查询),而不是让主机自己执行下一个查询。所以递归查询返回的查询结果要么是要查询的IP地址,要么是报错,说明无法查询到所需的IP地址。
本地名称服务器对根名称服务器的查询的迭代查询。迭代查询的特点:根域名服务器收到本地域名服务器的迭代查询请求报文后,要么给出要查询的IP地址,要么告诉本地服务器:“接下来应该查询哪个域名服务器? ” . 然后让本地服务器做后续查询。根域名服务器通常会告诉本地域名服务器它知道的顶级域名服务器的IP地址,以便本地域名服务器查询顶级域名服务器。顶级域名服务器收到本地域名服务器的查询请求后,要么给出要查询的IP地址,要么告诉本地服务器接下来要查询哪个权威域名服务器。最后,
下图显示了两个查询的区别
DNS解析顺序:(由/etc/.conf决定)
1. 原生缓存
2.本地/etc/hosts文件
a) 格式:IP FQDN Alais
3.指定DNS服务器缓存
a) 清除缓存:rhdc flush
4.指定的DNS服务器(/etc/.conf)
一)格式:
#
# 202.103.24.68
# 202.103.149.50
DNS查询命令
1.
a) 是包装的一部分
b) 通过主机文件和 DNS 将主机名解析为 IP
c) 将 IP 计算为 8 位十六进制在 PXE 中有特殊用途
2.主机
a) 仅通过 DNS 查询
b) 查询对IP的解析
3.
a) 解析工具是linux常用的,目前很少使用
b) 提供简单的正向和反向解析查询
4.挖
a) linux中一个强大的查询工具,可以查询更详细的信息,是使用最广泛的
b) 可溯源到非权威DNS
5. DNS 服务器的类型
DNS 服务器分为三种类型。
主 DNS 服务器
域特定的配置文件存储在这些服务器上,并在此基础上权威地指定特定域名的地址。主 DNS 服务器知道其管辖范围内的所有主机和子域的地址。
辅助 DNS 服务器
这些服务器充当主 DNS 服务器的备份,并承担一些负载。主服务器知道辅助 DNS 服务器的存在,并将向它们推送更新。
缓存 DNS 服务器
特定于域的配置文件不托管在这些服务器上。当客户端请求缓存服务器解析域名时,服务器首先会检查其本地缓存。如果未找到匹配项,则查询主服务器。然后将缓存响应。您还可以轻松地将自己的系统用作缓存服务器。
二、Linux DNS服务器安装、配置与维护
1.搭建Linux DNS服务器
Linux 下实现 DNS 功能的包有很多,但我们只关注 BIND DNS 服务器。它用于世界上大多数 DNS 服务器。
例如,如果您使用的是基于 Red Hat 的 Linux 发行版,您可以像这样安装它: $ dnf -y bind
如果您使用的是基于操作系统的,例如:$ apt-get bind9
安装完成后就可以启动了,让它在电脑启动的时候启动。
$开始命名
$命名
2.配置BIND
该服务使用 /etc/named.conf 作为配置文件。
BIND 在该文件中使用如下语句:
在语句中您可以看到 BIND 的工作目录是 /var/named。
zone 语句可用于定义 DNS 区域,例如域名,其中包含子域和 .
上述所有三个域(主域和子域)都有一个由 zone 语句定义的区域。
3.定义主域服务器
我们知道 DNS 服务器类型有主域名服务器、二级域名服务器和缓存域名服务器。与缓存名称服务器不同,主名称服务器和辅助名称服务器在应答过程中处于平等地位。
在 /etc/named.conf 配置文件中,您可以使用以下语法定义主域服务器:
区域“”{
类型 ;
文件.db
};
包含主要区域信息的文件存储在 /var/named 目录中,该目录被称为工作目录。
注意:软件服务器或托管面板会根据您的域名自动为您的主域服务器信息创建一个文件名,因此如果您的域名是,那么您的主域服务器信息文件将为/var/named/.db。
类型是,这意味着这是一个主域服务器。
4.定义二级域服务器
与定义主域服务器一样,辅助域服务器的定义略有变化:
区域“”{
从属类型;
知识产权清单;;
文件.db
};
对于从域服务器,其域名与主域服务器相同。上述语法中的slave类型表示这是一个从域服务器,而“IP列表”表示从主域服务器的区域文件中的信息复制了从域服务器的区域文件中的信息。
5.定义缓存服务器
即使您已经配置了主域服务器或辅助域服务器,仍然需要(但不是必须)定义缓存服务器,因为这样可以减少 DNS 服务器查询的次数。
在定义缓存服务器之前,需要定义三个区域选择器,第一个:
区“。” IN {类型提示;文件“root.hint”;};
区“。” IN {类型提示;文件“root.hint”;};
区“。” IN {类型提示;文件“root.hint”;};
zone “” IN {type ;file “.db”;};
第三个区域是为反向查找本地主机定义的。此反向查找将本地 IP 地址指向本地主机。
区域“0.0.127.in-addr.arpa”IN {
类型 ;
文件“127.0.0.rev”;
};
将这三个区域信息放入 /etc/named.conf 文件中,您的系统就可以作为缓存服务器工作了。但是如何引用 .db、.db 和 127.0.0.rev 等文件的内容呢?
这些文件包含具有特定选项的每个区域的 DNS 记录类型。那么服务器教程,这些 DNS 记录类型是什么以及它们是如何编写的?
6.DNS记录类型
数据库文件包含 SOA、NS、A、PTR、MX、CNAME 和 TXT 等记录类型。
让我们看看每种类型是如何记录的。
SOA:发起权限记录
SOA 记录开始描述站点的 DNS 条目,如下所示:
. 86400 在 SOA 中。. (
;
86400;,
7200 ;重试,
;,
86400;,
)
第一行以域名开头,以句点结尾——此语句与 /etc/named.conf 文件中的区域定义一致。我们必须始终记住,DNS 配置文件非常挑剔。
IN 告诉域名服务器:这是一条网络记录。
SOA 告诉名称服务器:这是一个起始权限记录。
. 是文件所在域的名称服务器的完全限定域名(FQDN:Full Name)。
. 是域管理员的电子邮件地址。您会注意到电子邮件地址没有“@”符号,而是用句点代替,并且末尾有句点。
第 2 行是一个序列代码,用于在文件更新时告诉名称服务器。因此,如果您更改区号,则必须增加序列号。这个序列号的格式是 xx 从 00 开始。
第 3 行是每秒的刷新率。此值用于告诉第二个名称服务器多久查询一次主服务器以查看记录是否已更新。
第 4 行是每秒重试的频率。如果第二台服务器多次尝试连接到主名称服务器进行更新检测,但连接失败,第二台服务器将每秒重试指定的次数。
第 5 行是超时指示。目的是让第二台服务器缓存区域数据。如果这些服务器无法连接到主服务器进行更新,则此值告诉这些服务器在指定的秒数后丢弃此值。
第 6 行告诉缓存服务器,如果它们无法连接到主名称服务器,它们应该在超时之前等待多长时间。
NS:名称(名称服务器记录)
NS 记录用于指定哪个名称服务器维护该域的记录。
您可以像这样编写 NS 记录:
在 NS 中。
在 NS 中。
不必有 2 条 NS 记录,但通常最好有备用名称服务器。
A 和 AAAA:(地址记录)
记录用于提供从主机名到 IP 地址 IN A 192.168.1.5 的映射。
如果你有一个地址为 192.168.1.5 的主机,你可以像上面的例子一样输入它。
请注意,我们编写的主机没有句号。
PTR:(指针记录)
PTR 记录用于执行反向名称解析,允许某人指定一个 IP 地址,然后找出相应的主机名。
这与 A 记录的作用相反: 192.168.1.5 IN PTR 。
在这里,我们键入带点的完整主机名。
MX:Mail(邮件交换记录)
MX 记录告诉其他网站您域的邮件服务器地址: . 在 MX 10 邮件中。
当然,该字段以句点结束。数字 10 是邮件服务器重要性的标志,如果您有多个邮件服务器,则较小的数字不太重要。
CNAME:名称(权威名称记录)
CNAME 记录允许您为主机名创建别名。当您想提供一个易于记忆的名称时,这很有用。
假设一个站点有一个带有主机名的 Web 服务器,并且由于该系统是一个 Web 服务器,因此可以为该主机创建一个名为 www 的 CNAME 记录或别名。
您可以为名为的域名创建 CNAME 记录:
– 在 192.168.1.5 中
www 在 CNAME –
第一行通知 DNS 服务器别名的位置。第二行创建 www 的别名。
TXT 记录