余读

DNS 域名解析记录设置

如果说 IP 地址是互联网的基础,那么域名解析系统(Domain Name System, DNS)则是这样的一本花名册:它用来记录网址(比如 example.com)所对应的 IP 地址(93.184.216.34)。我们将这本花名册里的每一条记录称之为 DNS 解析记录,而且这些记录可以有不同的类型,常见的 DNS 记录类型有:A 记录、CNAME 记录、MX 记录。

A 记录(Address record)

这类记录是最常见的,它用于将一个域名(网址)指向到一个 IP 地址。一个域名至少需要设置一条 A 记录才能在浏览器里被正常解析访问,通常也只需要设置一个。
添加 A 记录后的 DNS 解析表看起来像下面这个样子:

NAME TYPE VALUE
example.com A 93.184.216.34

CNAME 记录 (Canonical Name record)

CNAME 记录也称为别名记录,它将一个域名 A 指向到另一个域名 B,其中域名 B 是规范域名,而域名 A 则是域名 B 的别名。CNAME 最大的用处是当有多个服务(比如 FTP 服务器和 Web 服务器,分别运行在不同端口)跑在一个 IP 地址上时,能简化我们的 DNS 设置。
假设 FTP 和 Web 服务的访问地址分别是 ftp.example.com 和 www.example.com,那么我们就可以为它们建立两条 CNAME 记录,都指向域名 example.com, 现在 DNS 解析表是这样的:

NAME TYPE VALUE
ftp.example.com CNAME example.com
www.example.com CNAME example.com
example.com A 93.184.216.34

现在,当我们在访问 ftp.example.com 时,DNS 解析器发现它是一条 CNAME 记录,于是解析器使用规范域名(example.com)重新查询,找到 NAME=example.com 并且 TYPE=A 的记录,然后返回 VALUE(IP 地址)。当然我们可以不需要设置 CNAME,为 ftp.example.com 和 www.example.com 直接添加 A 记录指向 93.184.216.34,但使用 CNAME 的好处是当 IP地址 改变时,我们只需要修改 NAME=example.com 的那条记录即可。

MX 记录(Mail Exchanger record)

MX 记录是邮件交换记录,用于指定发送到该域名的邮件将如何被路由,简单说就是当有人发邮件到 @example.com 时,DNS 解析器通过读取 NAME=example.com,TYPE=MX 的记录来获取邮件的投递地址。MX 记录如下所示:

NAME TYPE VALUE
example.com MX 10 mail1.example.com
example.com MX 20 mail2.example.com
mail1.example.com A 93.184.216.34
mail2.example.com A 93.184.216.34

MX 记录允许设置多条来做负载均衡,VALUE 分为两部分:优先级 和 域名。优先级通过数字来表示,越小优先级越高。通常以 10、20、30… 的形式递增,而不是 1、2、3… 这样连续的方式。这么做的好处是当需要新增邮件服务器时,可以直接将新增的优先级设置为 7、11、23,而不需要改动已有的设置。
这里需要注意的是域名部分,该域名必须是一条 A 记录,不能是 CNAME 记录,否则将不能正常解析。

TXT 记录(Text record)

顾名思义,TXT 记录就是用来记录文本值的,可以当作是通用记录,对其他记录的一个扩展。通常,它被用来设置 SPF(Sender Policy Framework) 和 DKIM(DomainKeys Indentified Mail) 记录。SPF 和 DKIM 记录都是用来验证邮件合法性的(验证发件人为 user@example.com 的邮件是否真的发自域名 example.com)。

NAME TYPE VALUE
example.com TXT v=spf1 ip4:93.184.216.34 ~all
default._domainkey.example.com TXT v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEAAQUAA4GNADCBiPKBgQC4zr0wOOv+P+Fl6KW5pzQOFzamkvPmgVyw5yiNxGF000JlK6tt/2Jp4PyKrCNy6wRDmAtOnpEFKbB7cPnfSUcOfMlH8GLKIuegoxXm80dV87Ci+momQvym70xIFbATjGMV7YYxDj100JB+nPbWyv15BXY77WkTPaDiz++GYN2yMQIDAQAB