小菜学网络之DNS记录类型

2025-05-26 0 50

小菜学网络之DNS记录类型

经过前面学习,我们初步掌握了域名系统的基本原理。

我们知道,域名可以和指定的 IP 进行关联,进而充当 IP 的别名。我们通过域名来访问网络服务时,域名系统会帮我们将域名解析成对应的 IP 地址。

那么,域名是否只能关联 IP 地址呢?其实并不是。除了 IP 地址,域名还可以关联其他类型的信息。

实际上,域名和与之关联的信息,就构成了一条 DNS记录 ( DNS record )。DNS记录可以理解成一个键值对:

  • 键:域名;
  • 值:与域名关联的值;

除了 IP 地址,DNS记录值还可以是 IPv6 地址、别名、文本等等。据此,DNS记录可分为若干不同类型,包括:

  • A ,主机 IP 地址;
  • AAAA ,主机 IPv6 地址;
  • ALIAS ,自动解析的别名( alias );
  • CNAME ,别名的权威名称( canonical name );
  • MX ,邮件交换服务器( Mail eXchange );
  • NS ,域名服务器( name server );
  • TXT ,描述文本;

记录类型也就是 DNS 报文中,问题记录和资源记录的类型( Type )。

A记录

A 记录,表示主机的 IP 地址,这是最常见的 DNS 记录类型。

  1. root@netbox[~]➜digtest.fasionchan.com
  2. ;<<>>DiG9.16.1-Ubuntu<<>>test.fasionchan.com
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:49579
  6. ;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:0,ADDITIONAL:0
  7. ;;QUESTIONSECTION:
  8. ;test.fasionchan.com.INA
  9. ;;ANSWERSECTION:
  10. test.fasionchan.com.752INA10.0.0.1
  11. ;;Querytime:71msec
  12. ;;SERVER:192.168.65.1#53(192.168.65.1)
  13. ;;WHEN:MonApr2617:22:16CST2021
  14. ;;MSGSIZErcvd:53

AAAA记录

AAAA 记录,表示主机的 IPv6 地址,与 A 记录类似。IP 地址长度为 4 字节,IPv6 地址长度为 16 字节,这也是 AAAA 记录的由来。随着 IPv6 的部署,AAAA 记录也正变得常用了。

dig 命令默认查询 A 记录,如果想查询 AAAA 记录,必须通过命令行参数指定:

  1. root@netbox[~]➜digt-aaaa.fasionchan.comAAAA
  2. ;<<>>DiG9.16.1-Ubuntu<<>>t-aaaa.fasionchan.comAAAA
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:5088
  6. ;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:0,ADDITIONAL:0
  7. ;;QUESTIONSECTION:
  8. ;t-aaaa.fasionchan.com.INAAAA
  9. ;;ANSWERSECTION:
  10. t-aaaa.fasionchan.com.752INAAAA::1
  11. ;;Querytime:50msec
  12. ;;SERVER:192.168.65.1#53(192.168.65.1)
  13. ;;WHEN:MonApr2617:37:10CST2021
  14. ;;MSGSIZErcvd:67

CNAME记录

CNAME 记录,表示别名的 权威名称 ( canonical name )。

域名可以取别名,以 webserver.fasionchan.com 为例,它可以取一个别名,比如:network.fasionchan.com 。如此一来,我们称前者是后者的 权威名称 ,CNAME 记录则保存权威名称。

小菜学网络之DNS记录类型

当查询别名 network.fasionchan.com 时,如果 DNS 服务器返回的是 CNAME 记录,我们还需要进一步查询权威名称,才能得到最终结果。当然了,大部分 DNS 缓存服务器会自动帮我们做这件事情。

那么,域名为什么需要别名呢?CNAME 记录又有什么典型的应用场景呢?

假设我有一台 Web 服务器,它上面部署了多个站点:

  • 我的网络专栏:network.fasionchan.com ;
  • 我的 Linux 专栏:linux.fasionchan.com ;
  • 我的 Python 专栏:python.fasionchan.com ;

我可以申请一个域名 webserver.fasionchan.com ,通过 A 记录指向 Web 服务器;然后为几个专栏域名配置 CNAME 记录,指向 webserver.fasionchan.com :

小菜学网络之DNS记录类型

这样做有一个好处:如果我调整了 Web 服务器,将它迁移到另一台主机上,我只需修改 webserver.fasionchan.com 一个域名,其他专栏域名均无须调整。

小菜学网络之DNS记录类型

我的个人网站 fasionchan.com 部署在阿里云 CDN 上,域名也是通过 CNAME 记录指向一个阿里云域名。不然的话,只要阿里云 CDN 一调整,我就得修改域名!这肯定会是一场噩梦!

MX记录

MX 记录,表示 邮件交换 ( mail exchange )服务,即邮件服务器。其中,MX 是 Mail eXchange 的缩写。

电子邮件可以是说是互联网中发展最早,应用最为广泛的应用。我们发送邮件时,客户端需要根据自己的邮箱账号找到邮件服务器的地址,并通过 SMTP 协议和它进行通信。

每个邮件厂商都有一个自己的域名,查询该域名的 MX 记录,即可找到邮件服务器的地址。以 QQ邮箱 为例,它的域名是 qq.com 。我们执行 dig 命令查询 qq.com 的 MX 记录:

  1. root@netbox[~]➜digqq.comMX
  2. ;<<>>DiG9.16.1-Ubuntu<<>>qq.comMX
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:49462
  6. ;;flags:qrrdra;QUERY:1,ANSWER:3,AUTHORITY:0,ADDITIONAL:4
  7. ;;OPTPSEUDOSECTION:
  8. ;EDNS:version:0,flags:;udp:4000
  9. ;;QUESTIONSECTION:
  10. ;qq.com.INMX
  11. ;;ANSWERSECTION:
  12. qq.com.1435INMX20mx2.qq.com.
  13. qq.com.1435INMX10mx3.qq.com.
  14. qq.com.1435INMX30mx1.qq.com.
  15. ;;ADDITIONALSECTION:
  16. mx3.qq.com.463INA113.96.208.206
  17. mx3.qq.com.3INAAAA240e:ff:f101:10::127
  18. mx1.qq.com.2409INA14.215.140.20
  19. ;;Querytime:18msec
  20. ;;SERVER:10.2.66.66#53(10.2.66.66)
  21. ;;WHEN:WedApr2818:40:03CST2021
  22. ;;MSGSIZErcvd:155

由此可见,QQ邮箱总共有 3 个邮件交换服务,分别是:

  • mx1.qq.com.
  • mx2.qq.com.
  • mx3.qq.com.

我们可以从中挑选一台,比如 mx3.qq.com. ,它的 IP 地址是 14.215.140.20 。通过 SMTP 协议连接上去,认证完毕后,即可正常收发邮件了。

读到此处,您可能会有疑问了:根据域名找到邮件服务器,A 记录不也能够胜任吗?

确实如此,A 记录理论上也是可以胜任的。只不过在互联网发展早期,电子邮件是一个重量级应用。网络先驱们为它特地设计了 MX 记录,也就不奇怪了。

实际上,腾讯不止 QQ 邮箱一个产品,还有腾讯网。由于邮件服务有自己的 MX 记录,腾讯网可以使用 A 记录。这样一来,两者可以使用相同的域名qq.com:

小菜学网络之DNS记录类型

浏览器访问腾讯网时,可以查询 qq.com 的 A 记录,得到服务器地址。我们可以执行 dig 命令模拟一下:

  1. root@netbox[~]➜digqq.comA
  2. ;<<>>DiG9.16.1-Ubuntu<<>>qq.comA
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:46166
  6. ;;flags:qrrdra;QUERY:1,ANSWER:4,AUTHORITY:0,ADDITIONAL:1
  7. ;;OPTPSEUDOSECTION:
  8. ;EDNS:version:0,flags:;udp:4000
  9. ;;QUESTIONSECTION:
  10. ;qq.com.INA
  11. ;;ANSWERSECTION:
  12. qq.com.193INA203.205.254.157
  13. qq.com.193INA61.129.7.47
  14. qq.com.193INA183.3.226.35
  15. qq.com.193INA123.151.137.18
  16. ;;Querytime:11msec
  17. ;;SERVER:10.2.66.66#53(10.2.66.66)
  18. ;;WHEN:WedApr2818:41:16CST2021
  19. ;;MSGSIZErcvd:99

NS记录

NS 记录,保存着负责该域解析的权威DNS服务器,记录值为DNS服务器的域名。

以我的域名 fasionchan.com 为例,它在腾讯云 dnspod 上解析。我注册域名后,需要配置 NS 记录,指向 dnspod 服务器。这个 NS 记录,最终会被同步到 .com 顶级域名服务器。

小菜学网络之DNS记录类型

由此一来,当客户端发起迭代解析时,com 域名服务器就知道查询该域名应该去找 dnspod 。

如果我想将域名转到阿里云上去解析,我只需找我的域名注册商,修改 NS 记录指向阿里云的 DNS 服务器。一切就绪后,我就可以在阿里云上管理我的域名了。

小菜学网络之DNS记录类型

我还可以将子域 lumy.fasionchan.com 送给我的朋友 Lumy ,只要我在 dnspod 上为 lumy.fasionchan.com 添加 NS 记录,指向 Lumy 选择的 DNS 服务器即可。此后,Lumy 就可以在自己的 DNS 服务上管理该域。

当有客户端迭代查询 lumy.fasionchan.com 这个子域时,dnspod 将根据该 NS 记录,告诉客户端应该去找 Lumy 的 DNS 服务器查询(假设 Lumy 在阿里云上管理子域):

小菜学网络之DNS记录类型

由此可见,NS 记录在 DNS 迭代查询中扮演着非常重要的角色。上级 DNS 服务器通过 NS 记录,找到下级 DNS 服务器,直到域名查询完毕。

理论上,根域也需要 NS 记录,来指向全球的 13 台根域名服务器。那根域的 NS 记录维护在哪里呢?由于根服务器极少改动,所以可以通过配置的形式指定。客户端可以查询根域 NS 记录,DNS 缓存服务器会根据自己的配置进行回答:

  1. root@netbox[~]➜dig.NS
  2. ;<<>>DiG9.16.1-Ubuntu<<>>.NS
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:10652
  6. ;;flags:qrrdra;QUERY:1,ANSWER:13,AUTHORITY:0,ADDITIONAL:4
  7. ;;OPTPSEUDOSECTION:
  8. ;EDNS:version:0,flags:;udp:4000
  9. ;;QUESTIONSECTION:
  10. ;.INNS
  11. ;;ANSWERSECTION:
  12. .1767INNSh.root-servers.net.
  13. .1767INNSl.root-servers.net.
  14. .1767INNSk.root-servers.net.
  15. .1767INNSf.root-servers.net.
  16. .1767INNSb.root-servers.net.
  17. .1767INNSd.root-servers.net.
  18. .1767INNSm.root-servers.net.
  19. .1767INNSi.root-servers.net.
  20. .1767INNSc.root-servers.net.
  21. .1767INNSg.root-servers.net.
  22. .1767INNSe.root-servers.net.
  23. .1767INNSj.root-servers.net.
  24. .1767INNSa.root-servers.net.
  25. ;;ADDITIONALSECTION:
  26. h.root-servers.net.2926INA198.97.190.53
  27. c.root-servers.net.37INA192.33.4.12
  28. a.root-servers.net.2217INA198.41.0.4
  29. ;;Querytime:17msec
  30. ;;SERVER:10.2.66.66#53(10.2.66.66)
  31. ;;WHEN:ThuApr2919:45:54CST2021
  32. ;;MSGSIZErcvd:300

TXT记录

TXT 记录用来保存一些文本信息,这些信息可以用作配置,但不太常见。我们举个例子:

  1. root@netbox[~]➜digt-txt.fasionchan.comTXT
  2. ;<<>>DiG9.16.1-Ubuntu<<>>t-txt.fasionchan.comTXT
  3. ;;globaloptions:+cmd
  4. ;;Gotanswer:
  5. ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:23557
  6. ;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:0,ADDITIONAL:1
  7. ;;OPTPSEUDOSECTION:
  8. ;EDNS:version:0,flags:;udp:4000
  9. ;;QUESTIONSECTION:
  10. ;t-txt.fasionchan.com.INTXT
  11. ;;ANSWERSECTION:
  12. t-txt.fasionchan.com.600INTXT"helloworld"
  13. ;;Querytime:55msec
  14. ;;SERVER:10.2.66.66#53(10.2.66.66)
  15. ;;WHEN:WedApr2818:04:24CST2021
  16. ;;MSGSIZErcvd:73

很多云平台使用 TXT 记录来验证域名所有权:先让域名所有人配置一条特殊的 TXT 记录,然后查询该记录看结果是否匹配。

原文链接:https://mp.weixin.qq.com/s/bVGx3CPvWZfxrlDBnvO8Ww

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 小菜学网络之DNS记录类型 https://www.kuaiidc.com/52763.html

相关文章

发表评论
暂无评论