反向 DNS 查找

反向 DNS 查找

大家早,

我被交给了一个域名,其中包含约 15 万条 DNS 记录,总共有 10 万台机器。DNS 记录全部位于同一域上的单个正向查找区域中,并且为了方便起见,没有反向查找区域。

由于清除和老化不是一种选择(只是我的运气!),我需要找到一种简单的方法来消除大量陈旧的记录。

对我来说,最简单的起点是删除所有时间戳超过一年的记录(大约 2700 条记录) - 但其中一些仍然响应 ping。

这可能是因为我们使用 DHCP,并且 IP 已被分配给新主机。

通常,反向查找 zoen 现在非常有用,这样我就可以查找一个 IP 的多个注册,但正如我之前所说 - 没有这样的注册。

有谁知道一种简单的查找重复项的方法吗?我考虑过从 DNS 完全导出到 CSV 并开始排序和过滤,但对于超过 2k 条记录,我希望有更简单一点的方法。

此外,由于我们运行的一些套件的性质糟糕,因此仅删除记录并允许重新注册是不可能的!

有什么想法吗?

编辑:并非所有机器都加入了 AD,因此无法进行 AD/DNS 比较。

编辑 2:全场都点赞,这里有一些非常好的建议!我已经开始在 Excel 中进行导出和比较工作,对正在进行的每个 IP/主机执行 ping 操作,记录到测试文件中以查看哪些是真实的,哪些不是真实的,并且正在等待更改批准以进行数据包捕获以开始实时监控。这些脚本也很有用,虽然我不会以它们当前的格式使用它们,但它们为我编写自己的内容提供了良好的基础。谢谢大家!

答案1

如果您可以导出为 CSV 然后导入 Excel,那么您可以使用条件格式来生成重复列表吗?

http://www.tech-recipes.com/rx/35290/excel-2013-find-duplicate-data-using-conditional-formatting/

答案2

我会使用 nmap 来验证所有活动主机,这应该会为您清除其余的死机记录。不过,我强烈建议从现在开始进行清理。听起来很有趣 :)

答案3

这里有两个脚本(几乎相同) - 一个用于查找重复的 IP,一个用于查找重复的名称。

#region Find duplicate name in dns records
$DupNames = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object OwnerName | Where-Object {$_.Count -gt 1}

$DupNamesArr = @()
foreach ($RecordGroup in $DupNames) {
    foreach ($Record in $RecordGroup.Group) {
        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupNamesArr += $RecordObj
    }
}
#endregion

#region Find duplicate IP in dns records
$DupIPs = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object RecordData | ?{$_.Count -gt 1}

$DupIPArr = @()
foreach ($RecordGroup in $DupIPs) {
    foreach ($Record in $RecordGroup.Group) {

        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupIPArr += $RecordObj
    }
}
#endregion

笔记:

  1. 某些系统(例如负载平衡)需要一些重复记录才能正常工作。

  2. 您可以使用WMI添加计算机名称和IP,从而验证记录。

  3. 时间戳为 0 的记录是静态的,这意味着它们是手动添加的(并且更有可能很重要)。

答案4

也许您可以记录足够长一段时间内的所有实际 DNS 请求(如果您想捕获每季度一次查询所有打印机页面统计信息的脚本,实际上可能需要几个月的时间)。然后删除所有从未请求过的记录。

相关内容