最新讯息与新闻

为什麽 MX 纪录拥有优先权(而 A 纪录与 NS 纪录则没有)

与 CNAME 不同,其全名为真实名称纪录(Canonical Name),可将一个特定子域名设定为另一个域名之别名,而 NS 纪录,A 纪录和 MX 记录则都是 DNS 记录类型,您可以拥有一个以上的定值。
MX 纪录是这三种纪录类型中独一无二的纪录类型,因为其拥有优先权。
所以,为什麽会有优先权呢?优先权重要吗?

为什麽 MX 纪录拥有优先权

一个 MX 纪录(又称 “Mail eXchanger” record),对于初学者来说,一般用于指向您的域名邮件伺服器。除了像是名称、生存时间 ( TTL,time to live )、种类与设定值等标准 DNS 记录栏位外, MX 纪录还额外设有一个「优先权」栏位。在优先权栏位中的数值越小,其优先顺序越高。
一个典型的 MX 纪录设置会有 2 个以上的 MX 纪录,并具有不同的优先顺序。举例来说,以下为 Gandi 的邮件服务所需的 MX 纪录:
@ 1800 IN MX 50 fb.mail.gandi.net.

@ 1800 IN MX 10 spool.mail.gandi.net.
邮件伺服器 fb.mail.gandi.net 的优先数值为 ’50’,而伺服器 spool.mail.gandi.net 的优先数值则为 ’10’。
优先权指的是这些邮件伺服器在尝试透过邮件伺服器传送邮件时的顺序。当一个邮件伺服器尝试發送邮件至 Gandi 的邮件服务时会由 spool.mail.gandi.net 开始,因其优先权数值为 ’10 ‘。如果寄送失败,则会接着尝试寄送至 fb.mail.gandi.net (因其优先权数值为 ’50 ‘)。
因此,若 spool.mail.gandi.net 因为某种因素而无法使用,可能是伺服器过于忙碌或是离线,邮件就会被转而寄送至 fb.mail.gandi.net 。

为什麽 A 纪录与 NS 纪录没有优先权?

其它的 DNS 纪录像是 A 纪录与 NS 纪录也有相似的作用。Gandi 的 LiveDNS 服务使用了以下 NS 纪录:
@ 172800 IN NS ns-89-c.gandi.net.

@ 172800 IN NS ns-32-b.gandi.net.

@ 172800 IN NS ns-202-a.gandi.net.
如果 ns-89-c.gandi.net 无法使用,DNS 解析器就会转向 ns-32-b.gandi.net 或 ns-202-a.gandi.net 查询其所需要的资讯。
同样地,您可以将两个 A 纪录指向代管相同内容的不同网站伺服器,如果第一个主机故障或无法正常运作,网站访问者就能尝试连接至第二个伺服器,而反之亦然。
而 A 纪录与 NS 纪录并没有优先权,因为这两种纪录不需要这种优先权的机制便能运作。

为什麽 MX 纪录需要优先权呢?

老实说,在现代的基础设施下,有可能是不需要的。然而,拥有多个 MX 记录其实比单纯提供备份伺服器更複杂。

一般来说, MX 纪录所指向的最高优先顺序的邮件伺服器为负责传入电子邮件的伺服器。备份机制并不会传送邮件,而是等待具有最高优先权的邮件伺服器再次正常运作。换句话说,更重要的是哪一个邮件伺服器为首要顺序。哪一个网站伺服器或名称伺服器接收到特定请求反而并不重要。

网路上延迟的电子邮件可能需要数天时间才会传送出去,而有时候,邮件伺服器可能会一次断线数小时,但并不会停止寄出数千封重要的企业邮件。

设置多个同种类的纪录更有趣

实际上,A 记录缺乏优先权反而使其能够用于称为循环 DNS 的技术上。循环 DNS 是一种负载均衡技术,您可以使用多个冗馀网站伺服器并将 A 记录添加并指向每个伺服器。理论上,这个列表在每次查询时都会以随机的顺序出现,从而生成代管网站的网站伺服器 IP 位址的随机列表。
然而缓存却会影响到这项技术,因为当有人使用同一个缓存纪录时,缓存都会先尝试查询同一个网站伺服器。
即便 A 纪录拥有优先权,使用像这样的 DNS 纪录也还是无法正常运作。