反向DNS查找


13

大家早,

我已经将一个拥有约150万个DNS记录的域交给了总共十万台机器。DNS记录全部位于同一域的单个正向查找区域中,只是为了提供帮助,没有反向查找区域。

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

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

奇怪的是,这是因为我们使用了DHCP,并且此后将IP分配给了新主机。

通常,反向查找区现在很方便,这样我就可以为一个IP查找多个注册,但是正如我之前所说的-没有。

任何人都知道,找到重复的简单方法吗?我已经考虑过从DNS完全导出为CSV并开始进行排序和过滤,但是对于2k记录,我希望可以更轻松一些。

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

有什么想法吗?

编辑:不是所有的机器都加入AD,所以AD / DNS比较是不可能的。

编辑2:全面投票,这里有一些非常好的建议!我已经开始在Excel中进行导出和共映射工作,正在对正在运行的每个IP /主机执行ping操作,将日志记录到测试文件中,以查看实际情况和不实际情况,并正在等待变更批准以进行数据包捕获以开始实时监视。这些脚本也很有用,尽管我不会以当前格式使用它们,但它们为我编写自己的东西提供了良好的基础。感谢大家!

Answers:


8

如果可以导出为CSV,然后导入Excel,则可以使用条件格式生成重复项列表?

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


4
请不要使用链接作为解决方案。在答案中提供解决方案可以更好地维护答案,因为链接可能会变坏。
保罗

3
为了清楚@Paul所说的,当然需要链接,但不仅要链接。因此,将链接保留在答案中,但添加目标上写的内容。
glglgl 2015年

很公平!将来应做。
Rhys Evans

6

我将使用nmap来验证所有存活的主机,这些主机应为您清除其余的失效记录。我强烈建议从现在开始进行清理。虽然听起来很有趣:)


如果主机始终在线,这将起作用。如果这些机器也是笔记本电脑,那么某些(或很多,取决于活动)可能会丢失。
WoJ

4

这是两个脚本(几乎相同)-一个用于查找重复的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的记录是静态的,这意味着它们是手动添加的(并且很可能很重要)。


2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.