我需要从我们的DNS服务器输入的单个IP地址中获取每个CNAME记录。
当我查找时:
[System.Net.Dns]::GetHostByAddress("81.95.243.81").Aliases
它只给了我相同的8个别名:
botexshop.dk
bisamba.dk
nordsoenoceanarium.dk
www.brandingcommunity.com
botexhome.dk
botexudstyr.dk
botexjylland.dk
marineacademy.dk
但我知道IP地址有超过69条CNAME记录(请看这里:Toolbox | DNSstuff | Reverse DNS Lookup Results for 81.95.243.81)
为什么GetHostByAddress
一直只返回相同的8个别名?我如何获得所有CNAME?
答案 0 :(得分:0)
System.Net.Dns在很多方面都很缺乏。我看到有些人甚至编写完整的DNS解析器来获得他们需要的东西。
我知道这并没有完全回答你的问题,但是这个功能似乎完成了工作,但是它非常脆弱并且依赖于nslookup所以YMMV:
function get-dnsaliases($ip)
{
$ip_rev = $ip -split '\.'
[array]::reverse($ip_rev)
$ip_rev = $ip_rev -join '.'
$ptr_regex = "^`t" + [regex]::escape("$ip_rev.in-addr.arpa, type = PTR, class = IN")
$responses = nslookup -d $ip
$foundanswer = $null
$aliases = @()
foreach ($response in $responses)
{
if($foundanswer)
{
if($response -match "^`tname = (?<alias>.+)$")
{
$aliases += $Matches.alias
}
}
elseif($response -match $ptr_regex)
{
$foundanswer = $true
}
}
return $aliases
}