本文共 3954 字,大约阅读时间需要 13 分钟。
DNS(Domain Name service或者Domain Name Server)中文名叫做域名服务或者域名服务器, 属于应用层协议, 为C/S架构, 使用TCP/UDP的53号端口.
[root@docker-package ~]# cat /etc/services | grep "^domain\b"domain 53/tcp # name-domain serverdomain 53/udp
DNS服务架构见下图:
从图中可以看出, DNS服务的架构是一个分布式的架构, 最顶层是根域服务器, 中间是顶级域名服务器, 接着是二级域名和三级域名服务器. 每一个域名服务器都只负责解析本域内的名称的主机. 根域服务器全球共有13组.常用的顶级域名(TLD, Top Level Domain)有com, edu, mil, gov, net, org, int等, TLD分三类, 组织域、国家或地区域(.cn, .us, ...)和反向域.
DNS服务查询有两种类型:
DNS查询过程图如下:
NOTE: 客户端在查询DNS服务器之前会先查询本地的hosts(名称解析配置文件)文件, hosts文件中没有查询到需要的信息才会去查询DNS服务器.
hosts路径:# hosts格式:IP DomainName1.1.1.1 www.xxx.com2.2.2.2 www.yyy.com
一次完整的DNS查询请求经过的流程:
# 1. 当你请求www.xxx.com这个域名时, 会先去查找本地hosts文件, 如果本地hosts文件中有结果, 则直接返回# 2. 如果hosts文件中没有结果, 则会请求DNS serveice, DNS service会先查找Local DNS Cache, 有结果则直接返回# 3. 如果没有结果, 就去会从根域服务器开始迭代查询# 4. 最后迭代查询有结果就直接返回给客户端
解析答案有四种类型:
DNS解析类型有两种:
FQDN的中文意思是完全限定域名, 例如: www.buyaoliandebaidu.com就是一个FQDN.
正向解析和反向解析各需要一个解析库来进行解析, 称之为正向区域和反向区域.NOTE: 正反向解析是两个不同的名称空间, 是两颗不同的解析树.
DNS服务器类型分为四类:
区域传送有两种, 全量传送(传送整个解析库)和增量传送(传送解析库变化的那部分内容).
DNS的区域解析库中定义了资源记录(Resource Record, RR), 资源记录类型如下:
定义资源记录的语法:
# 语法: name [TTL] IN tt_type value# NOTE: # TTL可从全局继承 # “@”可用于引用当前区域的名字 # 同一个名字可以通过多条记录定义多个不同的值, 此时DNS服务器会以轮询方式响应 # 同一个值也可能有多个不同的定义名字, 通过多个不同的名字指向同一个值进行定义; 仅此表示通过多个不同的名字可以找到同一个主机而已
SOA记录:
# name: 当前区域的名字, 例如: leistudy.com# value: 有多部分组成 # 当前主区域的DNS服务器的FQDN, 也可以使用当前区域的名字 # 当前区域管理员的邮箱地址, 但地址中不能使用@符号, 一般用“.”代替, 例如linuxedu.magedu.com # 主从服务协调属性的定义以及否定的答案的统一的TTL# 示例:leistudy.com. 86400 IN SOA ns.leistudy.com. nsadmin.leistudy.com. ( 2018022801 ;序列号 2H ;刷新时间 10M ;重试时间 1W ;过期时间 1D ;否定答案的TTL值)
NS记录:
# name: 当前区域的名字# value: 当前区域的某DNS服务器的名字, 例如: ns.leistudy.com. # NOTE: 一个区域可以有多个NS记录# 示例:leistudy.com. IN NS ns1.leistudy.com.leistudy.com. IN NS ns2.leistudy.com.
NOTE1: 相邻两个资源记录的name相同时, 后续可省略
NOTE2: 对NS记录而言, 任何一个ns记录后面的服务器名字, 都应该在后续有一个A记录MX记录:
# name: 当前区域的名字# value: 当前区域的某邮件服务器(smtp服务器)的主机名, 一个区域内, MX记录可有多个; 但每个记录的value之前应该有一个数字(0-99), 表示此服务器的优先级, 数字越小, 优先级越高# 示例:leistudy.com. IN MX 10 mx1.leistudy.com. IN MX 20 mx2.leistudy.com.# NOTE: 对MX记录而言, 任何一个MX记录后面的服务器名字, 都应该在后续有一个A记录
A记录:
# name: 某主机的FQDN, 例如www.leistudy.com.# value: 主机名对应主机的IP地址# 示例:www.leistudy.com. IN A 1.1.1.1www.leistudy.com. IN A 1.1.1.2mx1.leistudy.com. IN A 1.1.1.3mx2.leistudy.com. IN A 1.1.1.3# NOTE: 避免用于写错名称时给错误答案, 可通过泛域名解析进行解析至某特定地址# 示例:*.leistudy.com. IN A 1.1.1.4magedu.com. IN A 1.1.1.4
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.leistudy.com# 简写: 网络地址及后缀可省略, 主机地址依然要反写4 IN PTR www.leistudy.com.
CNAME记录:
# name: 别名的FQDN# value: 真正名字的FQDN# 示例:web.leistudy.com. IN CNAME www.leistudy.com.
转载于:https://blog.51cto.com/13501622/2092840