How do I Search All Forward Lookup Names in Windows 2008 R2 DNS Server for a String?
Is there a way to search the entire forward lookup zone in Windows 2008 R2 DNS server?
I would like to search both the NAME
and the RDATA
of all the resource records for a substring.
You can use dnscmd
to enumerate records in a zone.
dnscmd /enumrecords mydomain.com @
You can then search the output of that for your string(s).
dnscmd /enumrecords mydomain.com @ | find "somestring"
or dump it to a file and parse the file with whatever tool you like
dnscmd /enumrecords mydomain.com @ > mydomain_enum.txt
There's a good article on doing something similar here.
And, as voretaq points out, yes it does work with non-AD-integrated zones.
For an AD-Integrated zone you should be able to do this via an LDAP search.
I'm not sure about the LDAP schema MS uses, but it's going to involve a filter something like (|(name=???)(rrdata=???))
-- I'm almost certain they don't use name
and rrdata
but substitute appropriately.
For non-integrated zones it may be easier to dump the zone file in BIND format and grep through it, or trigger an AXFR and grep through that. I'm not aware of anything in the Windows tools that lets you do a substring search.
Of course the last time I touched Windows DNS tools Win2K was The New Hotness On The Block so my knowledge is a little stale…