.NET GetHostByAddress别名仅显示8个条目

时间:2012-11-03 02:41:22

标签: c# .net powershell dns

我需要从我们的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?

1 个答案:

答案 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
}