Answers:
您没有指定环境是什么,但是如果您使用的是Unix,我认为dig和grep的组合应该可以工作。ns.example.com
应该是名称服务器的主机名,example.com
是主机所在域的主机,而HOST是要为其查找所有CNAME记录的主机。这实际上是grep命令中的制表符,而不是字面意思<TAB>
(您可能必须调整grep字符串)。
此外,还需要将您的域名服务器配置为允许区域传输,具体取决于实施情况。
dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'
或者,如果您使用的是Windows,则可以使用nslookup:
C:\> nslookup
> name ns.example.com
> ls -a example.com FILE
这应该example.com
将ns.example.com
“知道” 域的所有记录输出到FILE。然后,您可以使用任何想要对文本文件进行排序的工具来查找相应的CNAMES。
或使用未经测试(但看起来正确)的perl 脚本:
#!/usr/bin/perl
use Net::DNS;
($target, $zone) = @ARGV;
$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}
完整性的几点:
使用powershell:
检查您的Microsoft DNS服务器上的主名:
Get-WmiObject-名称空间'root \ MicrosoftDNS'-类MicrosoftDNS_AType-过滤器“ IPAddress ='xx.xx.xx.xx(IP)'”-计算机名称mydnsservername
从您的Microsoft DNS服务器获取该主机的所有cname:
Get-WmiObject-名称空间'root \ MicrosoftDNS'-类MicrosoftDNS_CNAMEType-过滤器“ primaryname ='来自第一个查询的主要名称以点终止。'” -ComputerName mydnsservername |选择所有者名称,primaryname