Linux运维-DNS服务器

DNS服务器的配置与管理

项目场景

学院为了提高信息化建设,准备搭建FTP服务器、web服务器和mail服务器,用IP地址可以方便的连接到对应的主机。但是IP地址是一些抽象的数字,不容易记忆,最好使用一些有意义的字符组合来表示一台主机。所以学院决定先搭建一台DNS服务器负责解析域名和IP地址的映射关系,使学院的教工人员可以使用网址方便的访问内外网的主机。

DNS基础知识

1)域名(Domain Name):由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
(2)什么是DNS?
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
例如:网站“百度”,它的IP地址是202.108.22.5。我们经常使用是域名地址www.baidu.com来访问该网站,就是因为DNS服务器在我们输入www.baidu.com域名地址后,根据数据库中的映射关系自动将网址转换为IP地址,所以我们通过网址也可以进行访问。
(3)DNS从概念上可以分为三部分:
域名空间:就是我们经常说到 的 “域名+网站空间”,是二者的一个统称。是标识一组主机并提供相关信息的树结构的详细说明。树上的每一个节点都有其控制下的主机相关信息的数据库。查询命令试图从这个数据库中提取适当的信息。这些信息是域名、IP地址、邮件别名等在DNS系统中能找到的内容。
域名服务器:保持和维护域名空间中数据的程序。由于域名服务是分布式的,每一个域名服务器含有一个域名空间自己的完整信息,并保存其他有关部分的信息。一个域名服务器拥有其控制范围内的完整信息。控制范围称为区(Zone),对于本区的请求,由负责本区的域名服务器实现域名解析;对于其他区的请求,将由本区的域名服务器联系其他区的域名服务器实现域名解析。
解析器:简单的程序或子程序库,它从服务器中提取信息以相应对域名空间中主机的查询,用于DNS客户。
(4)FQDN:Full Qualified Domain Name,完全合格的域名,即每个域在全球网络都是唯一的;域(Domain),并不是指诸如www.baidu.com这样的域名,而baidu.com才是域。
(5)域名空间:在域名系统中,每台计算机的域名由一系列用点分开的字母数字组成。例如:某台计算机的FQDN为www.ubuntu.org.cn,其具有的域名为:ubuntu.org.cn。
域名空间是层次结构的,域名中最重要的部分位于右边(cn)。FQDN最左边的段(www)是单台计算机的主机名或主机别名。
(6)根域(root domain):只有一个,没有上级域,以圆点“.”来表示。在Internet中,根域是默认的,一般不需要表示出来。
全球13台根域名服务器以英文字母A到M依序命名,域名格式为“字母.root-servers.net”。
在根域服务器中,并没有保存全世界的所有Internet网址,只保存着顶级域的“DNS服务器到IP”的对应数据。
每一层的DNS服务器,只负责管理其下一层的“DNS到IP”的对应数据。
(7)顶级域名(Top-Level Domain,TLD)
以根域为上级域,顶级域名又分为两类:一类是国家顶级域名(national top-level domainnames,简称nTLDs),200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;另一类是国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .com .Top,表示网络提供商的.net,表示非盈利组织的.org,表示教育.edu,以及没有限制的中性域名如.xyz等。
(8)各级子域(Subdomain)
除了根域和顶级域之外,其他域都称为子域。一个域可以有许多层子域。在已经申请成功的域名下,一般都可以按自己的需求来设置一层或多层子域。比如www.ubuntu.org.cn,ubuntu.org是cn的子域,ubuntu是org.cn的子域。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
(9)反向域(in-addr.arpa):
为了完成反向解析过程,需要使用到另外一个概念,即反向域,通过它来讲一个ip地址解析为相应的全域名。
所以一个服务器实际上至少要负责管理两个域,即本地域和相应的反向域。
例如:对于xyz公司,如果加入Internet,它所获得的管理域将包括两个:xyz.com域和in-addr.arpa反向域。若xyz公司所获得的ip地址为C类地址199.34.51.0,则其域名服务器将负责管理反向域51.34.199.in-addr.arpa。

反向 DNS 的使用
rDNS主要用于确保邮件交换记录的有效性,用于拦截邮件服务系统中的垃圾邮件。
一般情况下,垃圾邮件发送者使用动态分配的 IP 地址或者没有注册域名的 IP 地址来发送垃圾邮件,通过反向解析可以判断邮件的合法性。当邮件服务器收到邮件时,邮件服务器会查看邮件由哪个 IP 地址发出,然后根据这个 IP 地址进行反向解析,如果反向解析得到的域名与发送方邮件的域名不一致则认为邮件发送者不是从真正的邮件服务器发出,则可以拒绝接收此邮件。比如当 me@qq.com 收到一份来自 fake@163.com 的邮件时,qq邮件服务器会查看邮件来源的 IP,根据 IP 进行反向解析,如果解析到的域名和 163.com 一致,则接收邮件,否则认为邮件来源 IP 伪造成了163服务器 IP ,则拒绝这封邮件。
尽管 rDNS 记录可以阻止垃圾邮件,但主要用作额外保护,它不是一种可靠的方法。需要注意的是,仅启用 rDNS 仍可能由于各种原因导致消息被拒绝。此外,rDNS 还用于分析和日志记录,帮助提供人们可读的数据,而不是完全由 IP 地址组成的日志。

反向 DNS 查找过程
由于正向 DNS 将主机名映射到 IP 地址,因此 rDNS(或反向 DNS)表明将服务器 IP 地址映射回主机名。使用 rDNS,将 IP 地址反转,然后将in-addr.arpa添加到末尾。
例如,如果我们使用 IPv4 地址 142.123.192.196,使用 rDNS,它将变为 196.192.123.142.in-addr.arpa这种 IP 地址进行反向 DNS 解析的方法用到的是 PTR 记录。如果域有 PTR 记录,我们可以使用下面提到的方法进行 rDNS 查找。
参考:https://blog.csdn.net/ll837448792/article/details/122612375

(10)DNS的解析过程:
第1步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第2步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第3步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
第4步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第5步:重复第四步,直到找到正确的纪录。
第6步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

域名系统的工作过程
在这里插入图片描述

(11)DNS的查询模式:
①按查询方式分类
a.递归查询
只要发出递归查询,服务器必须回答目标IP地址与域名的映射关系。一般客户机和服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。
b.循环查询(迭代查询)
服务器收到一次循环查询回复一次结果,这个结果若不是目标IP与域名的映射关系,将会继续向其他服务器进行查询,直到找到含有所查询的映射关系的服务器为止。一般DNS服务器之间属于循环查询,若DNS服务器2不能响应DNS服务器1的请求,则它会将DNS服务器3的IP发给DNS服务器1,以便DNS服务器1向DNS服务器3发出请求。
②按照查询的内容分类
a.正向解析:通过域名查找ip b.反向解析:通过ip查找域名
(12)DNS服务器的类型
因特网上的域名服务器用来存储域名的分布式数据库,并为DNS客户提供域名解析。它们也是按照域名层次来安排的,每一个域名服务器都只对域名体系中的一部分进行管辖。
根据它们的用途,域名服务器有以下几种不同类型:
①主域名服务器
②辅助域名服务器
③缓存域名服务器
④转发域名服务器
(13)DNS资源记录
什么是DNS记录?
域名和IP之间的对应关系,称为“记录”(record)。根据记录使用的目的不同,又分为不同的类型。
DNS 记录(又名区域文件)是位于权威 DNS 服务器中的指令,提供一个域的相关信息,包括哪些 IP 地址与该域关联,以及如何处理对该域的请求。这些记录由一系列以所谓的 DNS 语法编写的文本文件组成。DNS 语法是用作命令的字符串,这些命令告诉 DNS 服务器执行什么操作。此外,所有 DNS 记录都有一个 “TTL”,其代表生存时间,指示 DNS 服务器多久刷新一次该记录。

您可以将一组 DNS 记录想象成 Yelp 上的企业清单,该清单将为您提供有关企业的大量有用信息,例如该企业的位置、营业时间、提供的服务等。所有域都必须至少有一些基本 DNS 记录,以便使用户能够使用域名来访问他们的网站,此外还有一些用于其他目的的可选记录。
DNS服务器在提供域名解析服务时,会查询自己的数据库。在数据库中包含描述DNS区域资源信息的资源记录(Resource Record,简称RR)。
①区域记录

  • SOA:起始授权机构记录,定义了区域的全局参数,进行整个域的管理设置一个区域内是唯一的。一个区域文件值允许存在唯一的SOA记录。用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件都必须包含一个SOA记录,并且必须是其中的第一个资源记录,用以标识DNS服务器管理的起始位置,SOA说明能解析这个区域的dns服务器中哪个是主服务器。
    例如,NS记录说明了有两个DNS服务器负责baidu.com的域名解析,但哪个是主服务器呢?这个任务由SOA记录来完成
格式为:区域名  SOA  主域名服务器(FQDN) 管理员邮箱地址 (序号 刷新时间 重试时间 过期时间 生存时间)
  • NS:名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA 资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。用来指定该域名由哪个DNS服务器来进行解析。假设baidu.com区域有两个DNS服务器负责解析,ns1.baidu.com是主服务器,ns2.baidu.com是辅助服务器,ns1.baidu.com的ip是202.99.16.1,ns2.baidu.com的ip是202.99.16.2。那么我们应该创建两条NS记录,当然,NS记录依赖A记录的解析,我们首先应该为ns1.baidu.com和ns2.baidu.com创建两条A记录
    注:ns记录说明,在这个区域里,有多少个服务器承担解析的任务
格式为: 区域名     NS 完整主机名(FQDN)
例如:
	baidu.com. IN NS ns1.baidu.com. 
	baidu.com. IN NS ns2.baidu.com.

②可选记录

  • CNAME:别名记录,为主机记录别名。其实就是让一个服务器有多个域名,大致相当于给一个人起个外号。
  1. 为什么需要Cname记录呢?一方面是照顾用户的使用习惯,例如我们习惯把邮件服务器命名为mail,把ftp服务器命名为ftp;
  2. 那如果只有一台服务器,同时提供邮件服务和FTP服务,那我们究竟该么命名呢?我们可以把服务器命名为mail.baidu.com,然后再创建一个Cname记录叫ftp.baidu.com就可以两者兼顾了。
  3. 另外使用Cname记录也有安全方面的考虑因素?例如我们不希望别人知道某个网站的真实域名,那我们可以让用户访问网站的别名,例如我们访问的百度网站的真实域名就是www.a.shifen.com,我们使用的www.baidu.com只是www.a.shifen.com的别名而已
格式为:别名 IN CNAME 主机名(FQDN)
例如:
web.sangfor.com. IN CNAME www.sangfor.com
  • TXT:文本记录,表示注释。
    DNS“文本”(TXT) 记录允许域管理员将文本输入到域名系统 (DNS) 中。TXT 记录最初的目的是用作存放人类可读笔记的地方。但是,现在也可以将一些机器可读的数据放入 TXT 记录中。一个域可以有许多 TXT 记录。

TXT 记录示例:

http://example.comrecord type:value:TTL
@TXTThis is an awesome domain! Definitely not spammy.32600

如今,DNS TXT 记录的两个最重要用途是防止垃圾邮件和域名所有权验证,尽管 TXT 记录最初并非为这些用途而设计。

什么样的数据可以放在 TXT 记录中?
原始 RFC 仅指出“文本字符串”要放在 TXT 记录的“value”字段中。这可以是管理员想要与他们的域名相关联的任何文本。

大多数 DNS 服务器会对 TXT 记录的大小和存储记录的数量进行限制,所以管理员无法使用 TXT 记录来存储大量数据。
在 TXT 记录中存储数据的正式格式是什么?

1993 年,互联网工程任务组 (IETF) 定义了一种格式,用于在 TXT 记录的“value”字段中存储属性和它们的相应值。该格式十分简单,就是将属性和值包含在引号 (") 中,并以等号 (=) 隔开,例如:

"attribute=value"

定义此格式的 1993 年文档 RFC 1464 中包含以下示例:

http://host.widgets.comrecord type:value:
@TXT“printer=lpr5”

然而,这个定义被认为是实验性的,在实践中,它并不经常被采用。一些 DNS 管理员在 TXT 记录中采用自己的格式,如果他们利用 TXT 记录的话。TXT 记录也可以依据具体的方式进行格式设置,以用于下面描述的某些用途——例如,DMARC 政策必须以标准化的方式进行格式设置。
TXT 记录如何帮助防止垃圾邮件?
垃圾邮件发送者经常试图伪造或假冒他们发送电子邮件的域。TXT 记录是几种不同的电子邮件验证方法的关键组成部分,它可帮助电子邮件服务器确定邮件是否来自可信的来源。

常见的电子邮件身份验证方法包括域密钥识别邮件 (DKIM)、发送方策略框架 (SPF) 以及基于域的邮件身份验证、报告和一致性 (DMARC)。通过配置这些记录,域运营商可以使垃圾邮件发送者更难伪造他们的域,并且可以跟踪此类尝试。

SPF 记录:SPF TXT 记录列出了所有被授权从一个域发送电子邮件的服务器。

DKIM 记录:DKIM 的工作原理是使用一个公钥-私钥对,对每封电子邮件进行数字签名。这有助于验证电子邮件确实来自它所声称的域。公钥被存放在与域关联的 TXT 记录中。(了解有关公钥加密的更多信息)。

DMARC 记录:DMARC TXT 记录引用域的 SPF 和 DKIM 政策。它应该存储在标题 _marc.example.com 下,“example.com”用实际域名代替。记录的“值”是域的 DMARC 政策(可在此处找到创建该政策的指南)。
TXT 记录如何帮助验证域所有权?
虽然域所有权验证最初不是 TXT 记录的一个功能,但这种方法已经被一些网站管理员工具和云提供商采用。

管理员可以通过上传包含特定信息的新 TXT 记录,或编辑当前的 TXT 记录,来证明他们控制着该域。工具或云提供商可以检查 TXT 记录,并看到它已按要求进行了更改。这有点像用户通过打开并点击发送到该电子邮件的链接来确认其电子邮件地址,证明他们拥有该地址。

参考:https://zhuanlan.zhihu.com/p/572506159

③基本记录

  • A :地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询到FQDN对应的IP地址。
    A记录也称为主机记录,A记录的基本作用就是一个主机域名对应的ip地址是多少,即是域名和ip地址的对应关系。
格式为:主机名  IN A IP地址
例如:
www.baidu.com. IN A 1.1.1.2
mx1.baidu.com. IN A 1.1.1.3
mx2.baidu.com. IN A 1.1.1.3
  • AAAA:ipv6地址记录,域名解析为ipv6地址的映射。
  • PTR:反向地址记录,相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。用于从ip地址中查询域名。PRT记录是A记录的逆向记录,作用是把IP地址解析为域名
格式为:IP地址 IN PTR 主机名(FQDN)
例如:
4.3.2.1.in-addr.arpa. IN PRT www.sangfor.com
  • MX:邮件交换记录,用于控制邮件的路由。
  • 又称为邮件交换记录,MX记录用于说明哪台服务器是当前区域的邮件服务器,例如在baidu.com区域中,mail.baidu.com是邮件服务器,而且IP地址是202.99.16.125。那么我们就可以在DNS服务器中进行下列处理:
    1、为邮件服务器创建A记录,我们首先为邮件服务器创建一条A记录,这是因为MX记录中描述邮件服务器时不能使用IP地址,只能使用完全合格域名
格式为:区域名  IN MX 优先级(数字) 邮件服务器名称(FQDN)   #区域名一般为空代表本区域
例如:
magedu.com. IN MX 10 mx1.magedu.com. 
IN MX 20 mx2.magedu.com

2、创建MX记录
MX记录对邮件服务器来说是不可或缺的,两个互联网邮局系统在相互通讯时必须依赖DNS的MX记录才能定位出对方的邮件服务器位置。例如163.net邮局给263.net邮局发一封电子邮件,那163邮局的SMTP服务器就需要向DNS服务器发出一个查询请求,请DNS服务器查询263.net的MX记录,这样163邮局的SMTP服务器就可以定位263.net的SMTP服务器,然后就可以把邮件发送到263邮局。

注:具体创建MX记录,需要参考不同的域名注册服务商和环境的操作指南了,实在搞不懂,可以打电话找他们客服。

参考:https://blog.csdn.net/weixin_51446936/article/details/120881292

一些不太常用的 DNS 记录有哪些?

  • AFSDB 记录 - 此记录用于由 Carnegie Melon 开发的Andrew File System(AFS)的客户端。AFSDB 记录的功能是查找其他 AFS 单元。
  • APL 记录 -“地址前缀列表”是用于指定地址范围列表的实验记录。
  • CAA 记录 - 这是“证书颁发机构授权”记录,其可使域所有者声明哪些证书颁发机构可为该域颁发证书。如果不存在 CAA 记录,则任何人都可为该域颁发证书。子域还会继承这些记录。
  • DNSKEY 记录 -“DNS 密钥记录”包含一个公钥,用于验证域名系统安全扩展 (DNSSEC)签名。
  • CDNSKEY 记录 - 这是 DNSKEY 记录的子副本,应将其转移给父级。
  • CERT 记录 -“证书记录”存储公钥证书。
  • DCHID 记录 -“DHCP 标识符”存储有关动态主机配置协议(DHCP)的信息,该协议是 IP 网络上使用的标准化网络协议。
  • DNAME 记录 -“委托名称”记录创建域别名,就像 CNAME一样,但是此别名也会重定向所有子域。例如,如果“example.com”的所有者购买了域名“website.net”并为其提供了指向“example.com”的 DNAME 记录,则该指针还将扩展到“blog.website.net”以及任何其他子域。
  • HIP 记录 - 此记录使用“主机身份协议”,这是一种分隔 IP 地址角色的方式;此记录最常用于移动计算。
  • IPSECKEY 记录 -“IPSEC 密钥”记录与互联网协议安全 (IPSEC) 搭配使用,这是一个端到端安全协议框架,属于互联网协议套件 (TCP/IP)。
  • LOC 记录 -“位置”记录包含域的地理信息,采用经度和纬度坐标形式。
  • NAPTR 记录 - 可将“名称权威指针”记录与 SRV 记录相结合,以便基于正则表达式动态创建指向的 URI。
  • NSEC 记录 -“下一安全记录”是 DNSSEC 的一部分,用于证明所请求的 DNS 资源记录不存在。
  • RRSIG 记录 -“资源记录签名”记录可存储用于根据 DNSSEC 对记录进行身份验证的数字签名。
  • RP 记录 - 这是“负责人”记录,其存储域负责人的电子邮件地址。
  • SSHFP 记录 - 该记录存储“SSH 公钥指纹”;SSH 代表安全外壳,这是一种可在不安全网络上实现安全通信的加密网络协议。

(14)DNS服务器的配置文件
在CentOS系统里,跟DNS服务有关的配置文件有:
/etc/named.conf #主配置文件,用于定义全局选项部分,以及当前域名服务
器负责维护的域名地址解析信息。
/etc/named.rfc1912.zones #主配置文件的扩展文件,用于指示引用了哪些区域文件。
/var/named/named.ca #包含全球主要的根域名服务器的主机名和IP地址。
/var/named/named.localhost #定义回环网络接口主机名localhost的正向解析记录。
/var/named/named.loopback #定义回环网络接口IP地址127.0.0.1的反向解析记录。
(15)主配置文件/etc/named.conf
主配置文件的内容如下:

options {
  listen-on port 53 { any; };                                        #服务监听的端口和IP地址
  listen-on-v6 port 53 { ::1; };                                       #服务(ipv6)监听的端口和IP地址
  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";   #服务器输出的内存使用统计文件位置
  allow-query     { any; };                                             #允许查询的客户机
  recursion yes;                                                             #是否使用递归查询
  dnssec-enable yes;                                                     #是否使用DNS加密
dnssec-validation yes;                                                 #是否使用DNS加密高级算法
/* Path to ISC DLV key */
  bindkeys-file "/etc/named.iscdlv.key";                      #密钥文件的位置
  managed-keys-directory "/var/named/dynamic";}; #管理密钥文件的位置
logging {                                                                     #日志文件
   channel default_debug {         
  file "data/named.run";                                               #运行状态文件
  severity dynamic;                    };};                              #静态服务器地址
zone "." IN {                                                                #“.”根区域
	type hint;                                                            #区域类型为根域
	file "named.ca";                                                  #区域配置文件};
include "/etc/named.rfc1912.zones";                         #包含扩展配置文件
include "/etc/named.root.key";

其中type选项指定的区域类型有:
①master:表示定义的是主域名服务器。拥有区域数据文件,并对此区域提供管理数据。
②slave :表示定义的是辅助域名服务器。拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据。
③hint :表示是互联网中根域名服务器。当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。
④forward:一个forward zone是每个域的配置转发的主要部分。
⑤stub :和slave类似,但是只复制主DNS服务器上的NS记录而不像辅助DNS服务器会复制所有区域数据。
⑥delegation-only:用于强制区域的delegation.ly状态。

CentOS下的BIND

1、BIND:Berkeley Internet Name Domain,是一个域名服务软件包,Linux使用这个软件包来提供域名服务。BIND的服务端软件是被称作named的守护进程。BIND的组成如下:
BIND的服务端软件是被称为named的守护进程,其主要功能如下:
若查询的主机名与本地区域信息中相应的资源记录匹配,则使用该信息来解析主机名并为客户机做出应答(UDP:53)。
若本区域信息中没有要查询的主机名,默认会以递归方式查询其他DNS服务器并将其响应结果缓存于本地。
执行“区传输(zone transfer)”,在服务器之间复制zone数据(TCP:53)。
2、解析器库程序:联系DNS服务器实现域名解析。
3、DNS的常用命令行:nslookup、host、dig。

配置实施

配置前的准备工作

1、配置好本地光盘yum源或者配置网络yum源
2、设置好防火墙开放UDP的53端口,或者直接关闭防火墙
systemctl stop firewalld.service
开启指定端口
firewall-cmd --zone=public --add-port=53/udp --permanent
重启防火墙
firewall-cmd --reload
3、关闭selinux(强制访问控制安全系统):
getenforce 查看SELinux
selinux临时关闭:setenforce 0
selinux永久关闭:编辑文件/etc/selinux/config,使SELINUX=Permissive,下次启动时生效。

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
如果可以熟练掌握 SELinux 并正确运用,我觉得整个系统基本上可以到达"坚不可摧"的地步了(请永远记住没有绝对的安全)。

DNS服务器配置流程

基本的DNS服务器的搭建流程主要分为四个步骤:

  1. 安装bind软件包
  2. 编辑主配置文件named.conf,设置DNS服务器管理的区域(zone)及这些区域所对应的区域文件名和存放目录;
  3. 建立扩展配置文件包含的区域文件named.rfc1912.zones;
  4. 配置正向解析数据库文件和反向解析数据库文件;
  5. 重新加载配置文件或重新启动named服务,使用配置生效。

DNS服务相关的RPM包

(1)安装包说明
bind-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
说明:提供了域名服务的主要程序及相关文件。
bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
说明:提供了对DNS服务器的测试工具程序(如nslookup、dig等)。
bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
说明:DNS服务的支持软件包
bind-chroot-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
说明:为bind提供一个伪装的根目录以增强安全性。
caching-nameserver-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
说明:cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包

安装DNS服务

(1)在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装。

yum -y install bind    #bind主包
yum -y install bind-chroot     #bind的chroot环境软件包
yum -y install bind-utils       #域名服务的检测工具

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)还可以使用rpm安装,其依赖关系的包需要手动安装。

[root@localhost Packages]#rpm -ivh bind-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
[root@localhost Packages]#rpm -ivh bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
[root@localhost Packages]#rpm -ivh bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm
[root@localhost Packages]#rpm -ivh bind-chroot-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm

(3)查看安装状况,显示结果如图所示
[root@localhost Packages]#rpm -qa|grep bind

在这里插入图片描述

DNS服务器配置

域名为hmx.com
网络号为192.168.88.0
1、DNS服务的主配置文件named.conf:/etc/named.conf
vim /etc/named.conf

常用的全局配置子句:

options  {
  	listen on port 53 { any;};   #指定监听的端口和接口的IPV4
	listen-on-v6 port 53 { ::1; };   #指定监听的端口和接口的IPV6
   	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"; 
   	allow-query     { any; };      #允许查询的客户机列表,默认是所有主机。
	recursion yes|no;        #是否使用递归式DNS服务器,默认为yes。
	dnssec-enable yes|no;    #是否返回DNSSEC相关的资源记录。
	dnssec-validation yes|no;  #指定确保资源记录是经过DNSSEC验证为可信的,默认为yes。
};

2、主配置文件(/etc/named.conf)中配置区(Zone)声明:

语法格式:
zone "zone-name" IN (
  	type 子句;
	file 子句;
	其他子句;
);

区声明需要说明域名、服务器的类型和域信息源。

type master|hint|slave :master为主域名服务器;hint为根域名服务器;slave为辅助域名服务器。

file “filename”:该区域的数据库文件名。

其他子句:
masters:对于slave服务器,指定master服务器的地址。

主配置文件包含的区声明和区配置文件,如图所示。
在这里插入图片描述

4、主配置文件的转发配置如图所示。(/etc/named.conf)

options {
		//省略其他...  .... 
        recursion yes;
        forward first;
        /* 这里配置转发器有阿里联通,google域名服务
        forwarders { 
                223.5.5.5; 
                223.6.6.6;
                114.114.114.114;
                8.8.8.8;
                8.8.4.4;
        };

}

vim /etc/named.conf
文件内容为:

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
      listen-on port 53 { any; };
      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     { any; };

      /* 
       - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
       - If you are building a RECURSIVE (caching) DNS server, you need to enable 
         recursion. 
       - If your recursive DNS server has a public IP address, you MUST enable access 
         control to limit queries to your legitimate users. Failing to do so will
         cause your server to become part of large scale DNS amplification 
         attacks. Implementing BCP38 within your network would greatly
         reduce such attack surface 
      */
      recursion yes;
      forward first;
      forwarders{
      223.5.5.5;
      223.6.6.6;
      114.114.114.114;
      8.8.8.8;
      8.8.4.4;
      };

      dnssec-enable yes;
      dnssec-validation yes;

      /* Path to ISC DLV key */
      bindkeys-file "/etc/named.root.key";

      managed-keys-directory "/var/named/dynamic";

      pid-file "/run/named/named.pid";
      session-keyfile "/run/named/session.key";

};

logging {
      channel default_debug {
              file "data/named.run";
              severity dynamic;
      };
};

zone "." IN {
      type hint;
      file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

3、主配置包含的区(Zone)配置文件(/etc/named.rfc1912.zones):
vim /etc/named.rfc1912.zones

添加正向域声明
zone "xxx.com" IN {
      type master;                       #主区域
      file "/var/named/xxx.com.zone";    #正向区域数据配置文件名
      allow-update { none; };    #允许动态更新客户端IP地址(none表示全部禁止)
};

添加反向域声明
zone "80.168.192.in-addr.arpa" IN {     #某IP网段的反向解析
        type master;                    #主区域
file "/var/named/192.168.80.zone";     #反向区域数据配置文件名
allow-update { none; };
}

vim /etc/named.rfc1912.zones文件内容为:

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};

zone "hmx.com" IN {
        type master;
        file "/var/named/hmx.com.zone";
        allow-update { none; };
};

zone "88.168.192.in-addr.arpa" IN {
        type master;
        file "/var/named/192.168.88.zone";
        allow-update { none; };
};

4、配置正向解析数据库文件(/var/named/xxx.com.zone):
vim /var/named/hmx.com.zone(不要自己加多余的空格)

$TTL 1D 
@       IN SOA  hmx.com. 123213123.qq.com. (  
                         1       ; serial                
                         1D      ; refresh                
                         1H      ; retry                  
                         1W      ; expire                       
                         3H )    ; minimum         
             NS     dns.hmx.com. 
        IN   MX  5  mail.hmx.com.
dns     IN   A      192.168.88.100 
www     IN   A      192.168.88.101
ftp     IN   CNAME  www.hmx.com.
mail    IN   A      192.168.88.102

5、配置反向解析数据库文件/var/named/192.168.88.zone

$TTL 1D 
@       IN SOA  hmx.com. 12123123.qq.com. (                                      
                        0       ; serial                       
                        1D      ; refresh                  
                        1H      ; retry                 
                        1W      ; expire                 
                        3H )    ; minimum         
            NS      dns.hmx.com. 
130.88.168.192.in-addr.arpa.     IN  PTR     dns.hmx.com. 

启动和检查DNS服务

1、检查配置文件语法的正确性(无输出表示语法正确):#named-checkconf

检查区域文件语法是否正确:

named-checkzone xxx.com. /var/named/xxx.com.zone
named-checkzone 80.168.192.in-addr.arpa. /var/named/192.168.80.zone

在这里插入图片描述

2、检查named启动状态:systemctl status named

3、启动named服务:systemctl restart named

4、设置开机启动: systemctl enable named

在这里插入图片描述

5、检查named监听的端口:# ss -lu4n|grep ':53'
在这里插入图片描述

6、使用本DNS服务器进行测试: dig wwww.baidu.com @192.168.88.130 |grep 'Query time'

在这里插入图片描述

7.测试指定的DNS服务器

host -a hmx.com 192.168.88.130

在这里插入图片描述

8.设置DNS客户机测试DNS服务器

更改物理机(Windows)的网卡IP地址设置中的DNS为Linux服务器地址,网卡禁用后重新启用,然后在cmd界面使用nslookup命令,测试Linux上运行的DNS服务器,如图所示。
测试MX记录:

set type=mx
hmx.com

修改为自己的服务器IP地址
在这里插入图片描述

在这里插入图片描述

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值