[资料]DNS相关

| 70 | Document | 资料

DNS概念
DNS一般分为权威服务节点和递归服务节点。
我们一般使用的都是递归服务节点。

递归DNS(local dns)

递归DNS可以理解为是一种功能复杂些的resolver,其核心功能一个是缓存、一个是递归查询。
收到域名查询请求后其首先看本地缓存是否有记录,如果没有则一级一级向上级递归服务器查询,直到最上级递归服务器开始向根服务器,顶级域名服务器(例如“.com”),一级域名服务器(例如“example.com”)迭代查询……直到获取到结果然后返回给用户。

递归 DNS 由网络运营商建设,提供域名查询解析服务。

递归以及迭代

这里是重点强调下,因为我感觉网上查的不少在这都很混乱
我的理解是local dns,也就是递归DNS的层级可以设置不止一层(最终到根域名服务器)。

客户端和递归DNS之间的查询是递归的。

递归DNS(local DNS)向root name server、顶级域名服务器(TLD DNS),权威DNS(Authoritative name server)的查询是迭代的。

根域名服务器(root name server)

最高级别的域名服务器,全球只有13根服务器(一组很多台,共用一个IP,而且可以架设不同IP的镜像)。
域名格式为“字母(a-m).root-servers.net”
中国架设了F、I、K、L根镜像服务器。
根域名“.” 服务器,例如www.baidu.com的域名是www.baidu.com.,最后那个“.”通常被隐藏。
通常只有根域名服务器有Root Zone file,而其他递归DNS服务器则只需要配置Root Hits文件,只包含根域名服务器的地址。

顶级 DNS(TLD DNS)

负责处理 .com, .org及所有顶级国家域名,提供到权威域服务器的映射。

权威 DNS(Authoritative name server)

特定域名记录(例如“example.com”)在域名注册商处所设置的 DNS 服务器,用于特定域名本身的管理(增加、删除、修改等)。

权威 DNS 服务器只对自己所拥有的域名进行域名解析,对于不是自己的域名则拒绝访问。比如,向“example.com”的权威 DNS 服务器查询“test.com”的域名肯定会查询失败。

权威DNS即通俗上“这个域名我说了算”的服务器。
权威 DNS 由域名解析服务商建设,提供域名管理服务,维护域名解析记录。

我觉得可以把根服务器和顶级DNS理解为权威 DNS的最高两级

转发DNS

转发DNS是一种特殊的递归。如果本地的缓存记录中没有相应域名结果时,其将查询请求转发给另外一台DNS服务器,由另外一台DNS服务器来完成查询请求。

ECS

用个人看法总结一下,local DNS的查询通常只会提供local DNS的IP,而现代网络为了效能需要由距离用户最近的节点来响应。而ECS是用来附加请求解析的客户端的信息。
下面有论文说明
https://www.ixueshu.com/document/36449a6cef21d28dec8b4f308072b7f5.html

判断DNS是否支持ECS的办法

使用命令(个人猜测域名也要支持才会有我所说的返回值,像百度就不支持)
dig a100.phobos.apple.com @119.29.29.29 +subnet=218.92.128.0/32 +nocookie

返回值如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
; <<>> DiG 9.14.3 <<>> a100.phobos.apple.com @119.29.29.29 +subnet=218.92.128.0/32 +nocookie
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34296
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; CLIENT-SUBNET: 218.92.128.0/32/24
;; QUESTION SECTION:
;a100.phobos.apple.com.         IN      A

;; ANSWER SECTION:
a100.phobos.apple.com.  83      IN      CNAME   a2.phobos.g.aaplimg.com.
a2.phobos.g.aaplimg.com. 83     IN      CNAME   a1-a200.itunes-apple.com.akadns.net.
a1-a200.itunes-apple.com.akadns.net. 83 IN CNAME a1-a200.phobos.apple.chinacache.net.
a1-a200.phobos.apple.chinacache.net. 83 IN CNAME a1-a200.phobos.apple.telssr.chinacache.net.
a1-a200.phobos.apple.telssr.chinacache.net. 83 IN CNAME hpcc-download.telssr.chinacache.net.
hpcc-download.telssr.chinacache.net. 83 IN A    58.216.29.69
hpcc-download.telssr.chinacache.net. 83 IN A    103.53.126.61

;; Query time: 277 msec
;; SERVER: 119.29.29.29#53(119.29.29.29)
;; WHEN: Tue Jul 02 11:34:53 中国标准时间 2019
;; MSG SIZE  rcvd: 293

注意到EDNS version那里有一个CLIENT-SUBNET: 218.92.128.0/32/24
而使用114.114.114.114或者223.5.5.5的返回值就没有上面那一段(114有时候第一次会有,待观察)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
; <<>> DiG 9.14.3 <<>> a100.phobos.apple.com @114.114.114.114 +subnet=218.92.128.0/32 +nocookie
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3730
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;a100.phobos.apple.com.         IN      A

;; ANSWER SECTION:
a100.phobos.apple.com.  112     IN      CNAME   a2.phobos.g.aaplimg.com.
a2.phobos.g.aaplimg.com. 112    IN      CNAME   a1-a200.itunes-apple.com.akadns.net.
a1-a200.itunes-apple.com.akadns.net. 112 IN CNAME a1-a200.phobos.apple.chinacache.net.
a1-a200.phobos.apple.chinacache.net. 112 IN CNAME a1-a200.phobos.apple.telssr.chinacache.net.
a1-a200.phobos.apple.telssr.chinacache.net. 112 IN CNAME hpcc-download.telssr.chinacache.net.
hpcc-download.telssr.chinacache.net. 112 IN A   103.53.126.61
hpcc-download.telssr.chinacache.net. 112 IN A   222.186.186.246

;; Query time: 0 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Tue Jul 02 12:08:45 中国标准时间 2019
;; MSG SIZE  rcvd: 322

软件相关

dig是Liunx包括Mac下最好用的DNS查询工具,Windows 下可以下载Bind 9来获取dig工具
根域名服务器不少用的都是Bind 9