RH358学习笔记--2(DNS学习)

一、DNS的基本概念

DNS(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务,而不用去记住能够被机器直接读取的IP数串。

DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息,如图所示:

 DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。
域名空间的每个域的名字,通过域名进行表示。

Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织,“.”全球有13个根(root)服务器。

DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理。共有3 种类型的顶级域。

(1)组织域:采用3个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织。

(2)地址域:采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。

(3)反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询)。

 根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
 一级域名:Top Level Domain: tld
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
com, edu, mil, gov, net, org, int,arpa
 二级域名:abc.com
 三级域名:study.abc.com
 最多可达到127级域名

区(Zone)

区是DNS 名称空间的一部分,其包含了一组存储在 DNS 服务器上的资源记录。

DNS 相关概念:

(1)DNS 服务器
   运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。

 (2)DNS 缓存
DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。

(3)DNS查询方式:递归查询和迭代查询
一个DNS查询过程,通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的

 两种查询方式:

 (1) 递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结
果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

 正向解析与反向解析:

正向解析:----》正向解析是指域名到IP 地址的解析过程,如图所示。域名---》IP地址

反向解析:---》是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证,如图所示。
http://dns.aizhan.com/

 

DNS资源记录:

区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
 SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
 A:internet Address,作用,FQDN --> IP
 AAAA:FQDN --> IPv6
 PTR:PoinTeR,IP --> FQDN
 NS:Name Server,专用于标明当前区域的DNS服务器
 CNAME : Canonical Name,别名记录
 MX:Mail eXchanger,邮件交换器
 TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等,如下示例:

 资源记录定义的格式:

注意:
1. TTL可从全局继承
2. 使用 “@” 符号可用于引用当前区域的名字
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通
过多个不同的名字可以找到同一个主机

1.SOA 资源记录(Start of Authority Record)
每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。
SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
name: 当前区域的名字,例如“fish.org.”
value: 有多部分组成
注意:
1. 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.fish.org
3. 主从服务区域传输相关定义以及否定的答案的统一的TTL

例如:

 2.NS 资源记录
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.fish.org.
注意:
1. 相邻的两个资源记录的name相同时,后续的可省略
2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
3. 一个区域可以有多个NS记录

 3.A 资源记录
地址(A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。
name: 某主机的FQDN,例如:www.fish.org.
value: 主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

 4.PTR 资源记录
相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:inaddr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
注意:网络地址及后缀可省略;主机地址依然需要反着写

5.CNAME 资源记录
别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的
实现细节,使连接的客户机无法知道真正的域名。

 name: 别名的FQDN
value: 真正名字的FQDN

 6.MX 资源记录
邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器,邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

 7.AAAA记录
将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录。
DNS的模式: C/S 模式
NDS监听的端口号:
# vim /etc/services #查看services文件。

二、DNS的安装配置

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

 (1)使用Unbound配置缓存名称服务器

1. 安装unbound。

[root@servera ~]# yum install unbound -y

2. 按要求编辑server子句。

[root@servera ~]# vim /etc/unbound/unbound.conf

          interface: 172.25.250.10
          access-control: 172.25.250.0/24 allow
          domain-insecure: "example.com"
          forward-zone:
                       name: .
                       forward-addr: 172.25.250.254

 3. 生成私钥和服务器证书。

[root@servera ~]# unbound-control-setup

 4. 检查unbound配置文件的语法

[root@servera ~]# unbound-checkconf

 5. 配置防火墙允许DNS流量。

[root@servera ~]# firewall-cmd --permanent --add-service=dns

[root@servera ~]# firewall-cmd --reload

 6. 启用并启动unbound服务。

 [root@servera ~]# systemctl enable --now unbound

 7. 通过执行查询和检查缓存的内容来验证缓存名称服务。

 [root@servera ~]# unbound-control dump_cache

 

# dig @servera.lab.example.com A servera.lab.exmaple.com

三、DNS的故障排除

工作名称解析取决于相关设置是否正确:
 客户端名称解析和/etc/resolv.conf。
 客户端使用的缓存名称服务器的操作。
 向缓存名称服务器提供数据的权威名称服务器的操作。
 权威名称服务器上的数据。
 用于在这些系统之间通信的网络的配置。

系统的/etc/nsswitch.conf文件中的hosts行控制了查找主机名的方式。一个典型的条目如下所示:

 调查DNS问题的最佳工具之一是dig,dig命令执行DNS查找,并提供详细的响应,其中包括关于请求和结果的诊断信息。

[root@servera ~]# dig servera.lab.example.com

 命令指定要查找同一主机的AAAA记录:

[root@servera ~]# dig AAAA servera.lab.example.com

下面的示例在classroom.example.com上查找example.com的MX记录。他的结果还报告了一些关于名称服务器的相关信息,缓存名称服务器也将缓存这些信息。

[root@servera ~]# dig @classroom.example.com mx example.com

 [root@servera ~]# dig A example.com

解析DNS响应码:

[root@servera ~]# dig A example.com

 NOERROR状态表示查询已成功解析。

DNS状态码:

 使用NetworkManager服务用正确的name-server条目刷新/etc/resolv.conf文件的内容。

[root@servera ~]# systemctl restart NetworkManager

 验证example.com的名称解析结果。
[student@servera ~]$ getent hosts example.com

 [root@servera ~]# dig example.com

四、BIND 9配置授权名称服务器

Berkeley Internet Name Domain (BIND)软件,可以实现权威的名称服务器。
BIND允许您将授权服务器配置为区域的主服务器或辅助服务器。
您可以在主服务器的区域文件中编辑和管理区域的资源记录。一个区域只有一个主服务器。

 重要:名称服务器可以是某些区域的主服务器,也可以是其他区域的辅助服务器。

下图:显示了外部主机如何使用其缓存名称服务器和权威名称服务器来执行example.com中的记录的DNS查找,假设没有缓存的记录:

 (1)安装BIND
通过安装bind包来安装BIND。名称服务器本身作为named服务运行。bind包还在/usr/share/doc/bind/目录中安装了全面的bind文档,包括HTML和PDF格式。
[root@host ~]# yum install bind

(2)配置BIND
named使用的主配置文件为/etc/named.conf。这个文件控制BIND的基本操作。它应该属于root用户,named组,具有权限0640,并具有命名named_conf_t类型
配置文件还指定授权服务器管理的每个区域的区域文件的位置。在RHEL 8上,这些文件通常保存在/var/named.
配置DNS服务器的步骤如下:
 定义地址匹配列表,便于维护。
 配置named侦听的IP地址。
 为客户端配置访问控制。
 指定区域指示。
 在/etc/named.conf配置文件外写入区域文件。

定义地址匹配列表
在/etc/named .conf文件的开头,可以使用acl指令来定义地址匹配列表。

ACL定义:

 

 限制访问:
/etc/named.conf中的另外三个选项指令对于控制访问非常重要:
 allow-query控制所有查询。
 allow-recursive控制递归查询。
 allow-transfer控制区域转移。

(3)编辑区域文件
区域文件的位置由options选项块中的directory指令和/etc/named.conf中区域配置中的file指令控制。

[root@host ~]# chmod 640 /var/named/*.zone
[root@host ~]# chcon -t named_zone_t /var/named/*.zone
[root@host ~]# chown root:named /var/named/*.zone

 一个字母可以跟在数字后面指定较长的时间段:
 M分钟(1M为60)
 H小时(1H为3600)
 D天(1D为86400)
 W周(1W是604800)

每个区域文件只包含一个SOA (Start of Authority)资源记录。考虑以下example.com域的SOA资源记录:

 ①正在定义的区域的名称(此例子是example.com)。之后是IN SOA,,它标识了记录类和类型(internet SOA记录)。
②这个区域的主名称服务器的名称(primary.example.com)。
③专区负责人的联系邮箱。地址中的第一个点(.)被视为@,所以是root.example.com.代表root@ example.com。
④表示文件修订的序列号。每次文件更改时,该值必须增加。
⑤辅助服务器查询主服务器以查看是否需要区域刷新的频率。
⑥如果由于主服务器宕机而导致刷新失败,辅助服务器应尝试重新连接的频率。
⑦次要服务器在放弃之前应该尝试重新连接无响应的主服务器多长时间。当发生这种情况时,辅助服务器假定该区域不再存在,并停止回答对它的查询
⑧其他名称服务器应该缓存来自该区域的负响应(“没有此类记录”)多长时间。

example.com的区域文件:

 

 (4)验证您的配置
在重新加载或重新启动.conf文件之前,应该验证/etc/named.conf和zone文件的语法
 named-checkconf验证/etc/named.conf
 named-checkzone zone zone-file验证zone-file中zone的zone文件

[root@host ~]# named-checkconf /media/backups/named.conf

[root@host ~]# journalctl -f _SYSTEMD_UNIT=named.servic

(5)运行BIND
配置防火墙允许DNS请求
Red Hat Enterprise Linux 8默认配置允许出站查询DNS,但禁止所有入站查询DNS。防火墙有支持DNS的服务规则。以下命令持续启用DNS入方向流量:
[root@host ~]# firewall-cmd --add-service=dns --permanent
[root@host ~]# firewall-cmd --reload

启动绑定
启动并启用BIND。
[root@host ~]# systemctl start named
[root@host ~]# systemctl enable named

 五、自动化DNS 服务器部署

(1)使用Ansible部署Unbound

        部署Unbound的基本过程如下所示:
       1. 安装unbound包。
       2. 为主机创建一个Unbound配置,如果配置变更,重新启动Unbound服务。
       3. 启用并启动Unbound服务。
       4. 配置防火墙允许DNS入方向的流量。

(2)使用Ansible部署授权BIND服务器

       部署BIND主服务器或备用服务器的基本过程如下所示:
1. 安装bind包。
2. 为主名称服务器或辅助名称服务器创建适当的BIND配置,并在配置发生更改时重新启动命名服务。

如果这是主名称服务器,请确保区域文件是正确的;当它们被更改时重新加载named。
3.  启用并启动named服务。
4.  配置防火墙允许DNS入方向的流量。

 

原文地址:https://www.cnblogs.com/yyuuee/p/15107128.html