CoreDNS 通过插件来支持不同的功能。

DNS 记录类型

DNS 有 zone 的概念。

A

A 记录最简单也最常见,A 记录的响应是一个 ipv4 地址。

  1. dig +short math.stackexchange.com

AAAA

AAAA 记录的响应是一个 ipv6 地址。

CNAME

CNAME类似于重定向,比如说查询 www.qq.com

  1. dig @localhost -p 8053 a www.qq.com
  1. ; <<>> DiG 9.16.8-Ubuntu <<>> @localhost -p 8053 a www.qq.com
  2. ; (2 servers found)
  3. ;; global options: +cmd
  4. ;; Got answer:
  5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56720
  6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
  7. ;; OPT PSEUDOSECTION:
  8. ; EDNS: version: 0, flags:; udp: 4096
  9. ; COOKIE: 2db082c02f099b6b (echoed)
  10. ;; QUESTION SECTION:
  11. ;www.qq.com. IN A
  12. ;; ANSWER SECTION:
  13. www.qq.com. 85 IN CNAME ins-r23tsuuf.ias.tencent-cloud.net.
  14. ins-r23tsuuf.ias.tencent-cloud.net. 85 IN A 183.194.238.19
  15. ins-r23tsuuf.ias.tencent-cloud.net. 85 IN A 183.194.238.117
  16. ;; Query time: 15 msec
  17. ;; SERVER: ::1#8053(::1)
  18. ;; WHEN: Fri Jul 30 21:18:46 CST 2021
  19. ;; MSG SIZE rcvd: 209

DNS先是解析出 CNAME记录 CNAME ins-r23tsuuf.ias.tencent-cloud.net.
因为是 CNAME 记录,DNS 再解析 ins-r23tsuuf.ias.tencent-cloud.net. 得到两条 A 记录 IN A 183.194.238.19IN A 183.194.238.117
CNAME 的限制是 MX(邮件)不能指向 CNAME 记录。

MX

MX 是邮件服务器解析记录,让SMTP服务器知道邮件该往哪里发。

NS

NS记录的响应告诉你谁是这个域名的托管商
比如 github.com 的托管商有 8 个,

; <<>> DiG 9.16.8-Ubuntu <<>> @localhost -p 8053 ns github.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13414
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: a8a4a461f6bd4067 (echoed)
;; QUESTION SECTION:
;github.com.            IN    NS

;; ANSWER SECTION:
github.com.        3600    IN    NS    dns4.p08.nsone.net.
github.com.        3600    IN    NS    dns1.p08.nsone.net.
github.com.        3600    IN    NS    dns2.p08.nsone.net.
github.com.        3600    IN    NS    ns-1707.awsdns-21.co.uk.
github.com.        3600    IN    NS    ns-421.awsdns-52.com.
github.com.        3600    IN    NS    ns-520.awsdns-01.net.
github.com.        3600    IN    NS    dns3.p08.nsone.net.
github.com.        3600    IN    NS    ns-1283.awsdns-32.org.

;; Query time: 51 msec
;; SERVER: ::1#8053(::1)
;; WHEN: Fri Jul 30 21:51:59 CST 2021
;; MSG SIZE  rcvd: 399

参考文献

[1]: Clarifications to the DNS Specification https://tools.ietf.org/html/rfc2181
[2]: Cloudflare: What is a DNS MX record? https://www.cloudflare.com/zh-cn/learning/dns/dns-records/dns-mx-record/
[3]: https://www.ruanyifeng.com/blog/2016/06/dns.html