小菜学网络之DNS记录类型

admin3年前主机评测37

 

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

我们知道,域名可以和指定的 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 记录类型。

    root@netbox [ ~ ]  ➜ dig test.fasionchan  ; <<>> DiG 9.16.1-Ubuntu <<>> test.fasionchan ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49579 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0  ;; QUESTION SECTION;test.fasionchan.  IN A  ;; ANSWER SECTIONtest.fasionchan. 752 IN A 10.0.0.1  ;; Query time: 71 msec ;; SERVER: 192.168.65.1#53(192.168.65.1) ;; WHEN: Mon Apr 26 17:22:16 CST 2021 ;; MSG SIZE  rcvd: 53 

AAAA记录

 

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

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

    root@netbox [ ~ ]  ➜ dig t-aaaa.fasionchan AAAA  ; <<>> DiG 9.16.1-Ubuntu <<>> t-aaaa.fasionchan AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5088 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0  ;; QUESTION SECTION;t-aaaa.fasionchan.  IN AAAA  ;; ANSWER SECTIONt-aaaa.fasionchan. 752 IN AAAA ::1  ;; Query time: 50 msec ;; SERVER: 192.168.65.1#53(192.168.65.1) ;; WHEN: Mon Apr 26 17:37:10 CST 2021 ;; MSG SIZE  rcvd: 67 

CNAME记录

 

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

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

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

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

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

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

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

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

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

MX记录

 

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

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

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

    root@netbox [ ~ ]  ➜ dig qq MX  ; <<>> DiG 9.16.1-Ubuntu <<>> qq MX ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49462 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION;qq.    IN MX  ;; ANSWER SECTIONqq.   1435 IN MX 20 mx2.qq. qq.   1435 IN MX 10 mx3.qq. qq.   1435 IN MX 30 mx1.qq.  ;; ADDITIONAL SECTIONmx3.qq.  463 IN A 113.96.208.206 mx3.qq.  3 IN AAAA 240e:ff:f101:10::127 mx1.qq.  2409 IN A 14.215.140.20  ;; Query time: 18 msec ;; SERVER: 10.2.66.66#53(10.2.66.66) ;; WHEN: Wed Apr 28 18:40:03 CST 2021 ;; MSG SIZE  rcvd: 155 

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

mx1.qq.mx2.qq.mx3.qq.

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

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

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

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

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

    root@netbox [ ~ ]  ➜ dig qq A  ; <<>> DiG 9.16.1-Ubuntu <<>> qq A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46166 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION;qq.    IN A  ;; ANSWER SECTIONqq.   193 IN A 203.205.254.157 qq.   193 IN A 61.129.7.47 qq.   193 IN A 183.3.226.35 qq.   193 IN A 123.151.137.18  ;; Query time: 11 msec ;; SERVER: 10.2.66.66#53(10.2.66.66) ;; WHEN: Wed Apr 28 18:41:16 CST 2021 ;; MSG SIZE  rcvd: 99 

NS记录

 

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

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

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

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

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

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

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

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

    root@netbox [ ~ ]  ➜ dig . NS  ; <<>> DiG 9.16.1-Ubuntu <<>> . NS ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10652 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 4  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION;.    IN NS  ;; ANSWER SECTION.   1767 IN NS h.root-servers. .   1767 IN NS l.root-servers. .   1767 IN NS k.root-servers. .   1767 IN NS f.root-servers. .   1767 IN NS b.root-servers. .   1767 IN NS d.root-servers. .   1767 IN NS m.root-servers. .   1767 IN NS i.root-servers. .   1767 IN NS c.root-servers. .   1767 IN NS g.root-servers. .   1767 IN NS e.root-servers. .   1767 IN NS j.root-servers. .   1767 IN NS a.root-servers.  ;; ADDITIONAL SECTIONh.root-servers. 2926 IN A 198.97.190.53 c.root-servers. 37 IN A 192.33.4.12 a.root-servers. 2217 IN A 198.41.0.4  ;; Query time: 17 msec ;; SERVER: 10.2.66.66#53(10.2.66.66) ;; WHEN: Thu Apr 29 19:45:54 CST 2021 ;; MSG SIZE  rcvd: 300 

TXT记录

 

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

    root@netbox [ ~ ]  ➜ dig t-txt.fasionchan TXT  ; <<>> DiG 9.16.1-Ubuntu <<>> t-txt.fasionchan TXT ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23557 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION;t-txt.fasionchan.  IN TXT  ;; ANSWER SECTIONt-txt.fasionchan. 600 IN TXT "hello world"  ;; Query time: 55 msec ;; SERVER: 10.2.66.66#53(10.2.66.66) ;; WHEN: Wed Apr 28 18:04:24 CST 2021 ;; MSG SIZE  rcvd: 73 

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

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

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

香港云服务器10元一年你信吗?这么便宜香港vps你会买吗?

香港云服务器10元一年你信吗?各大云服务器厂家纷纷搞活动啊,什么:香港云服务器10元一年啊,9元香港服务器等年中优惠之类的,平均下来,选择1核1G的云服务器,有每个月不到30块钱的,有一天不到一块钱的...

OneProvider:洛杉矶/华盛顿/以色列/德国/英国/葡萄牙vps;512MB内存/512GB/不限流量/200Mbps端口/KVM,$5/月

oneprovider怎么样?oneprovider,老牌主机商,业务多,数据中心多,主要搞的是各大主机商的分销。现在大盘鸡新增了美国洛杉矶,取消了新加坡,特色是不限流量。目前,洛杉矶/华盛顿/以色列...

Shopify网站如何设置多语言?Shopify支持哪些语言?

shopify网站如何设置多语言?shopify是一站式SaaS模式的电商服务平台,为电商卖家提供搭建网店的技术和模版,管理全渠道的营销、售卖、支付、物流等服务,商家可以运用其提供的模板和建站应用,轻...

香港vps推荐(香港vps推荐2023)

香港vps推荐及香港vps推荐2023近年来,随着互联网的高速发展,越来越多的企业和个人开始注重网络服务的质量。而虚拟专用服务器正是一种非常受欢迎的网络服务类型之一。在众多的VPS供应商中,香港的VP...

UCloud活动:快杰云服务器低至59元/年;承诺保价双11,买贵补差价

ucloud怎么样?目前ucloud全球云服务夏季钜惠活动已上线,UCloud全球31个云计算中心大放“价”,年付47元就能买到一台AMD快杰云服务器,年付59元就能买到一台Intel快杰云服务器,可...

2021新网双12优惠活动:英文.com域名新人首购16元(企业1元),英文.cn域名8.8元,英文.xyz/shop等域名1元

2021新网双12优惠活动,新网12.12年终盛典正在进行中,爆款域名1元抢购,多款产品免费用,英文域名新人首购16元(企业1元),英文.cn域名8.8元,英文.xyz/shop等域名7选1首年仅1元...