如何列出给定域的所有 CNAME 记录?

如何列出给定域的所有 CNAME 记录?

我无法使用 dig/nslookup/host 列出它们。

答案1

有两种方法,都需要管理员访问或信任 DNS 记录:

  • 执行区域传输(AXFR) 来检索域的所有记录。DNS 管理员需要明确允许从您选择的 DNS 服务器向您的 IP 地址进行 AXFR 传输。您可以像这样执行此类传输:dig @ns1.google.com google.com AXFR
  • 直接查看相关 DNS 服务器上的区域文件。您需要具有 DNS 服务器的管理员权限才能执行此操作。

答案2

在具有适当的 DNS 权限的情况下,使用 grep 查找 cname 记录:

host -t axfr my.dom.com dns.my.dom.com | grep -i cname

答案3

我不知道这是否解决了缺少上述适当权限的情况下对给定域的“所有” CNAME 记录的需求,但自 2023 年 5 月起,dig使用拟议的 CNAME 进行查询的以下技巧有效,例如,如果您想检查 CNAME www.stackexchange.com

dalton@dalton-Precision-3541:$ dig +nocmd www.stackexchange.com +noall +answer
www.stackexchange.com。219 IN CNAME stackexchange.com。
stackexchange.com。219 在 151.101.65.69
stackexchange.com.219 IN A 151.101.129.69
stackexchange.com.219 在 151.101.1.69
stackexchange.com.219 IN A 151.101.193.69
dalton@dalton-Precision-3541:$ 日期
2023 年 5 月 5 日 星期五 07:54:23 MDT

该输出为您提供 A 记录,即站点的规范名称为,stackexchange.com其值为 IP 地址(给出了四个)。显示的别名或 CNAME(指规范名称)为www.stackexchange.com。我注意到术语的选择有点令人困惑,即 CNAME 类型是 A 记录中规范名称的别名。

为了防止操作系统digdig版本存在差异,我使用了上述方法:

DiG 9.11.3-1ubuntu1.11-Ubuntu

如果使用规范名称查询,则只会获得 A 记录:

dalton@dalton-Precision-3541:$ dig +nocmd stackexchange.com +noall +answer
stackexchange.com.300 IN A 151.101.129.69
stackexchange.com.300 IN A 151.101.193.69
stackexchange.com.300 IN A 151.101.65.69
stackexchange.com.300 IN A 151.101.1.69

相关内容