1、是什么
DNS(域名系统)是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS协议基于UDP协议,使用端口号53。
2、域名服务器类型
域名服务器在DNS体系中扮演着不同的角色,根据其功能和位置可以分为几种类型。以下是主要的域名服务器类型:
- 根域名服务器:根域名服务器是DNS层次结构的最高层,它们并不直接提供具体的域名解析结果,而是指引查询到正确的顶级域名服务器。全球共有13组根域名服务器,标识为A到M。
- 顶级域名服务器:这些服务器负责管理特定的顶级域名,如.com、.org、.net等通用顶级域名,或者国家代码顶级域名(ccTLD)如.cn(中国)、.jp(日本)。当接收到查询时,TLD服务器会指向更具体的权威域名服务器。
- 权威域名服务器:权威域名服务器保存了特定域名的具体DNS记录(如A记录、MX记录等),并能提供最准确的解析信息。对于每个域名而言,至少有一个权威域名服务器来维护该域名的信息。例如:阿里云DNS、腾讯云DNS
- 本地DNS服务器:
通常网络管理员提供,自建类型。这类服务器执行递归查询,即代表客户端完成整个查询过程。它们首先检查自己的缓存,如果找不到所需信息,则依次向根域名服务器、顶级域名服务器以及权威域名服务器发起查询,直到找到对应的IP地址并将结果返回给客户端,同时将其存储在缓存中以供后续查询使用。 - 转发服务器:转发服务器不是必需的,但它可以作为优化查询效率的一种方式。它接收来自其他DNS服务器或客户端的请求,并将这些请求转发给另一个DNS服务器进行处理,然后将结果返回给原始请求者。这有助于减少重复查询的工作量,特别是在大型网络环境中。
3、基本记录类型
- A记录(Address Record):这是最常用的记录类型,它将一个域名指向一个IPv4地址。例如,将www.example.com指向93.184.216.34。
- AAAA记录: 类似于A记录,但它是用来将一个域名指向一个IPv6地址的。
- CNAME记录(Canonical Name Record):别名记录,允许一个域名指向另一个域名。这在你想要指向另一个DNS记录而不是直接指向IP地址时很有用。例如,你可以设置blog.example.com为example.github.io的CNAME。web场景中常用于域名指向CDN加速域名
- MX记录(Mail Exchange Record):邮件交换记录,定义了负责处理发送至域的邮件服务器,并按照优先级排序。这对于电子邮件服务非常重要。
- TXT记录(Text Record):这种记录允许管理员在记录中插入任意文本。通常被用来验证域名的所有权或用于配置某些安全措施如SPF、DKIM等。
- NS记录(Name Server Record):指明哪个DNS服务器是该域的权威DNS服务器。当查询一个域名时,这个记录告诉查询者应该去哪个DNS服务器获取详细信息。
- PTR记录(Pointer Record):这种记录用于反向DNS查找,即从IP地址解析出对应的域名。与A记录相反,PTR记录主要用于验证发送邮件的服务器身份等场景。
常用的类型有 A记录、CNAME记录
3、解析过程
在浏览器中输入一个域名并按下回车键后,如果该域名的DNS配置在云上,整个访问流程大致如下:
DNS解析流程:
- 浏览器首先检查本地缓存是否有该域名的DNS记录
- 如果没有,系统会查询本地hosts文件
- 然后查询本地DNS解析器缓存
- 如果仍未找到,DNS请求会发送到您网络配置中的DNS服务器(如ISP的DNS或公共DNS如8.8.8.8)
- 这些DNS服务器如果没有缓存记录,会向根域名服务器发起查询
- 根域名服务器会引导向顶级域名服务器(如.com, .org等)
- 顶级域名服务器再引导向您配置的云DNS服务器(如AWS Route53, Google Cloud DNS等)
- 云DNS服务器返回配置的IP地址
4、常见的排查命令
nslookup、dig
4.1 nslookup
nslookup: 可以简单查询域名对应的IP
#1、解释域名
nslookup baidu.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: baidu.com
Address: 39.156.66.10
Name: baidu.com
Address: 110.242.68.66
#2、指定DNS
nslookup baidu.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: baidu.com
Address: 39.156.66.10
Name: baidu.com
Address: 110.242.68.66
可以看到baidu.com对应了两个IP,39.156.66.10和110.242.68.66。这意味着这个域名被配置为指向这两个IPv4地址,可能是为了负载均衡或冗余目的
4.2 dig
dig可以显示更详细的指标
dig baidu.com 8.8.8.8
; <<>> DiG 9.18.30-0ubuntu0.22.04.2-Ubuntu <<>> baidu.com 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39075
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 6 IN A 39.156.66.10
baidu.com. 6 IN A 110.242.68.66
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Mar 06 15:27:55 CST 2025
;; MSG SIZE rcvd: 70
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 41907
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;8.8.8.8. IN A
;; AUTHORITY SECTION:
. 5 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2025030600 1800 900 604800 86400
;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Mar 06 15:27:55 CST 2025
;; MSG SIZE rcvd: 111
5、常见的开源DNS管理工具
- BIND (Berkeley Internet Name Domain):BIND是最广泛使用的DNS软件之一,支持作为权威域名服务器和递归(缓存)服务器。它提供了全面的功能集,并且是许多顶级域名服务器的基础
- CoreDNS:CoreDNS是一个快速灵活的DNS服务器,可以用作转发器、代理或权威服务器。它基于插件机制构建,可以根据需要添加或移除功能。由于其灵活性,CoreDNS被广泛应用于云原生环境,例如作为Kubernetes集群内的DNS服务
CoreDNS部署使用教程可参考我之前写的博客:
https://blog.youkuaiyun.com/litaimin/article/details/138623301