将域名添加到 Cloudflare 后,你发现若干意外的 DNS 记录。
你先前权威 DNS 提供商处的通配符(*)记录可能以会创建额外记录的方式被导入到 Cloudflare。
要解决此问题,你可以执行以下操作之一:
你可能注意到域名返回了诸如 _acme-challenge.<hostname> 的 TXT 记录,但在 Cloudflare 仪表板上找不到它们。
这些记录会自动创建,以允许预配 Cloudflare 边缘证书(universal、advanced 与 backup)。证书颁发机构(CA) 要求 _acme-challenge 记录,以便在颁发 SSL/TLS 证书之前验证你的域名所有权。详情请参阅域名控制验证(DCV)。
由于这些记录与证书绑定,无法通过 Cloudflare 仪表板删除。
若你需要更多 _acme-challenge.<hostname> TXT 记录以便在你这边预配证书,可以在 DNS 记录 ↗ 下手动添加它们。
若要移除这些记录:
- 禁用 Universal SSL 以移除与 universal 与 backup 证书相关的记录。
- 删除 advanced 证书 以移除与 advanced 证书相关的记录。
你注意到一个并非由你创建的 _dc-mx 或 dc-##### 子域(例如 _dc-mx.a1b2c3d4e5f6.example.com)。此响应不会出现在你的 Cloudflare DNS 记录表中,但会出现在 dig 响应中。
当你的 MX 或 SRV 记录解析到配置为通过 Cloudflare 代理 的域名时,Cloudflare 会在 DNS 响应中动态插入一条解析到源站 IP 地址的记录。该记录在查询时添加,以确保邮件或服务流量绕过 Cloudflare 代理并直接到达你的服务器。
自动生成记录的前缀取决于触发它的记录类型:
- MX 记录: Cloudflare 插入带有
_dc-mx前缀的记录(例如_dc-mx.a1b2c3d4e5f6.example.com)。 - SRV 记录: Cloudflare 插入带有
dc-前缀的记录(例如dc-a1b2c3d4e5f6.example.com)。
在使用 Cloudflare 之前,假设你的邮件 DNS 记录如下:
example.com MX example.com
example.com A 192.0.2.1
使用 Cloudflare 并代理 A 记录后,Cloudflare 会提供带有 Cloudflare IP 地址(下方示例中为 203.0.113.1)的 DNS 响应:
example.com MX example.com
example.com A 203.0.113.1
由于通过 Cloudflare 代理邮件流量会破坏你的邮件服务,Cloudflare 会检测此情况,并在 DNS 响应中动态插入 _dc-mx 记录:
example.com MX _dc-mx.a1b2c3d4e5f6.example.com
_dc-mx.a1b2c3d4e5f6.example.com A 192.0.2.1
example.com A 203.0.113.1
你可以通过查询域名的 MX 记录来验证此行为(将 example.com 替换为你的域名):
dig example.com mx +short100 _dc-mx.a1b2c3d4e5f6.example.com._dc-mx 记录直接解析到你的源站 IP:
dig _dc-mx.a1b2c3d4e5f6.example.com a +short192.0.2.1这些记录是安全的——它们确保你的邮件流量正确到达服务器。
若要避免 _dc-mx 或 dc-##### 响应,你必须解决底层的代理冲突:
-
若该域名不接收邮件,请删除
MX记录。 -
若该域名接收邮件,请更新
MX记录,使其解析到未被 Cloudflare 代理的邮件子域的单独A记录:example.com MX mail.example.commail.example.com A 192.0.2.1example.com A 203.0.113.1
你注意到即使等待 TTL 过期后,DNS 查询仍返回不正确的结果。
若递归 DNS 缓存未能刷新,第三方工具有时可能无法返回正确的 DNS 结果。
在此情况下,通过以下方法清除你的公共 DNS 缓存: