繁体   English   中英

获取与IP关联的所有DNS记录

[英]Get all DNS records associated with an IP

背景

以下代码返回给定别名或主机的IPv4地址: [System.Net.Dns]::GetHostAddresses('someDnsName').IPAddressToString

下面的代码返回IP的HostName(CName)和别名: [System.Net.Dns]::GetHostByAddress('172.12.34.56')

因此,我希望在GetHostAddresses上返回IP的任何内容都列在对GetHostByAddress的调用的HostName或GetHostAddresses下(或至少列出要列出的该项的FQDN)。 即我希望以下查询的结果返回true

cls
$name = 'someName'
$fqdn = [System.Net.Dns]::GetHostEntry($name).HostName 
$ip = [System.Net.Dns]::GetHostAddresses($fqdn).IPAddressToString
$result = [System.Net.Dns]::GetHostByAddress($ip) 

#this is the result I'd expect to be true
($result.HostName -eq $fqdn) -or ($result.Aliases -contains $fqdn)

#here's additional info to aid in sense checking
"Name: $name"
"FQDN: $fqdn"
"IP: $ip"
"Result: "
(" - HostName: {0}" -f $result.HostName)
" - Aliases: " 
($result | select -ExpandProperty Aliases) | %{("`t{0}" -f $_)}

然而,有一些A记录不以这种方式表现。 这可能是我对DNS的误解,我公司的DNS配置错误(这是因为我正在编写这个脚本的DNS异常;我们在同一个IP上找到了2台服务器;所以我想检查其他服务器),或者是其他东西...

有没有办法列出与给定IP地址关联的所有DNS名称? 即,从GetHostAddresses返回IP的任何内容都将列在返回的IP地址的反向查找结果中?

当您查看全局范围时,获取与给定IP地址关联的所有名称的明确列表是不可行的,因为任何DNS管理员都可以为其区域中的任何IP地址定义记录。 例如,我可以轻松定义A记录myoverflow.planetcobalt.net. 指向stackoverflow.com IP地址198.252.206.16。

如果你将范围缩小到只有你的组织,那就不太可能了。 但是,您仍需要枚举组织的DNS服务器上的所有正向查找区域,并检查每条A记录的地址。 您找到的ServerFault问题的答案执行此区域枚举。 但是,您需要DNS管理员权限。

之所以如此复杂,原因在于技术上正向和反向查找区域之间没有关系。 任何A记录都没有任何技术要求可以获得任何PTR记录(更不用说匹配记录了)。 你可以有两个记录

foo.example.com.             A    192.168.23.42

17.13.113.10.in-addr.arpa.  PTR  foo.example.com.

没有问题。 或多个没有PTR记录的A记录。 或PTR记录没有A记录。

Microsoft的DNS服务器允许您将PTR记录与A记录相关联,但这只是一个便利功能。 同样,域名系统中没有针对此关联的技术要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM