No PowerShell, posso executar Get-DnsServerResourceRecord -zonename "test.com" para obter todos os registros na zona.
Posso carregar todas as zonas em uma variável e usar um loop for para obter todos os registros em todas as zonas.
O que eu quero é todos os registros de todas as zonas com um registro contendo um endereço IP dentro de um intervalo CIDR.
Exemplo: Quero todos os registros em todas as zonas que tenham um valor de 10.10.10.1/24. O retorno deve conter zona, tipo de registro, nome do registro e valor, por exemplo, temp.com, registro A, www, 10.10.10.10 test.org, cname, host1, 10.10.10.25 etc.
A primeira coisa a ser notada é que ao consultar DNS, cada tipo de registro DNS tem uma propriedade diferente para consultar, então não há como simplesmente consultar um registro para qualquer coisa que corresponda a "mydomain.foo" e obter todos os registros CNAME, MX, TXT, NS que podem ter essa sequência. Então a consulta abaixo é especificamente para encontrar endereços IPv4 em registros A.
Já que você está procurando por um /24, a opção mais simples é simplesmente procurar pelos 3 primeiros octetos. Então:
Você poderia, com alguma manipulação de strings, procurar por um subconjunto de /24, mas como os endereços IP são strings e não números, fica complicado.
Observe que o bit de consulta em si é:
onde o elemento crítico é:
Você pode consultar outros tipos de registros usando outras propriedades encontradas em
RecordData
, alguns exemplos das quais são :