gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:35:20 25 4
gpt4 key购买 nike

背景

以下代码返回给定别名或主机的 IPv4 地址:[System.Net.Dns]::GetHostAddresses('someDnsName').IPAddressToString
以下代码返回 IP 的主机名 (CName) 和别名:[System.Net.Dns]::GetHostByAddress('172.12.34.56')
因此,我希望在 GetHostAddresses 上返回 IP 的任何内容列在调用 GetHostByAddress 的主机名或别名下(或至少要列出该项目的 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 question的答案你发现做这个区域枚举。不过,您需要 DNS 管理员权限。

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

foo.example.com.             A    192.168.23.42


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

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

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

关于.net - 获取与 IP 关联的所有 DNS 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31539904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com