DNS服务
名字解析介绍和DNS
DNS服务工作原理
DNS查询类型
- 递归查询:
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器
本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用
户。
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服
务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交
给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询
递归算法:客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道->他
代为帮客户端去查找-->最后再返回最终结果 - 迭代查询:
是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的
地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回
权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,
直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次
查询 - 迭代算法︰
客户端向LocalDNS发起域名查询-->localDNS不知道域名对应的IP-->但它知道谁知道并
推荐客户端应该找谁-->客户端自己去找它 - DNS缓存:
DNS缓存是将解析数据存储在靠近发起请求的客户端的位置,也可以说DNS数据是可以缓存在任意
位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果。
解析类型
- FQDN --> IP 正向解析
- IP --> FQDN 反向解析
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
完整查询流程
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递
归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
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验证等,如下示例
_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
SOA记录
name: 当前区域的名字,例如"magedu.org."
value: 有多部分组成
注意:
- 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字,只是注释功能,可以不需要配置
对应的NS记录和A记录 - 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如:admin.magedu.org
- 主从服务区域传输相关定义以及否定的答案的统一的TTL
范例
magedu.org. 86400 IN SOA ns.magedu.org. nsadmin.magedu.org. (
2015042201 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.magedu.org.
注意:
-
相邻的两个资源记录的name相同时,后续的可省略
-
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
-
一个区域可以有多个NS记录
范例:
magedu.org. IN NS ns1.magedu.org.
magedu.org. IN NS ns2.magedu.org.
MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
-
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
-
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
范例:
magedu.org. IN MX 10 mx1.magedu.org.
IN MX 20 mx2.magedu.org.
mx1 A 10.0.0.100
mx2 A 10.0.0.200
A记录
name: 某主机的FQDN,例如:www.magedu.org.
value: 主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
范例:
www.magedu.org. IN A 1.1.1.1
www.magedu.org. IN A 2.2.2.2
mx1.magedu.org. IN A 3.3.3.3
mx2.magedu.org. IN A 4.4.4.4
$GENERATE 1-254 HOST$ IN A 1.2.3.$
*.magedu.org. IN A 5.5.5.5
magedu.org. IN A 6.6.6.6
#注意:如果有和DNS的IP相同的多个同名的A记录,优先返回DNS的本机IP
AAAA记录
name: FQDN
value: IPv6
PTR记录
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-
addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
注意:网络地址及后缀可省略;主机地址依然需要反着写
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.org.
#如1.2.3为网络地址,可简写成:
4 IN PTR www.magedu.org.
CNAME别名记录
name: 别名的FQDN
value: 真正名字的FQDN
例如
www.magedu.org. IN CNAME websrv.magedu.org.
DNS软件bind
DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns
bind相关程序包
yum list all bind*
bind:服务器
bind-utils: 客户端
bind-libs:相关库,依赖关系自动安装
bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/
范例:安装bind软件
[root@centos8 ~]#dnf -y install bind bind-utils
[root@ubuntu2004 ~]#apt -y install bind9 bind9-utils
bind包相关文件
BIND主程序:/usr/sbin/named
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且
只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
主配置文件
- 全局配置:options {};
- 日志子系统配置:logging {};
- 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
注意: - 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的
IP地址上 - 缓存名称服务器的配置:监听外部地址即可
- dnssec: 建议关闭dnssec,设为no
评论区