Como posso pesquisar entradas de DNS integradas no domínio?

3

Exemplo:

  1. Eu tenho um servidor chamado server1.domain.local
  2. Tenho muitas entradas CNAME em várias zonas de pesquisa direta apontadas para server1.domain.local
  3. Eu quero descomissionar o servidor1 e ter um novo servidor, servidor2, que irá substituí-lo.

Eu preciso alterar todos os meus CNAMEs que apontam para server1.domain.local para apontar para server2.domain.local.

Eu sei que posso criar server1.domain.local como outro CNAME, mas eu prefiro apenas encontrar todas as entradas e alterá-las individualmente.

Como posso encontrar todas as referências em todas as zonas de pesquisa direta para server.domain.local?

    
por Eric Burcham 17.05.2011 / 21:10

3 respostas

3

O utilitário dnscmd das ferramentas de suporte do Windows é provavelmente sua melhor opção. Você pode obter uma lista de todas as zonas DNS com o comando: dnscmd [servername] /EnumZones . Você pode enumerar todos os registros CNAME em cada zona com o comando: dnscmd [servername] /EnumRecords [zone name] . /TYPE CNAME .

Em teoria, você poderia encadear esses dois juntos em um script, processar a saída e fazer as alterações desejadas automaticamente (também usando dnscmd com os comandos /RecordDelete e /RecordAdd ). Esse é um exercício que vou deixar para você (por enquanto).

Edit: Ok - eu não pude resistir. Aqui está esse script. Será apenas echo os comandos que realmente fazem alterações. Se fizer o que você quer, então você pode puxar os comandos echo e deixar rasgar.

@echo off

set SERVER_TO_REPLACE=server1.domain.com
set REPLACEMENT_VALUE=server2.domain.com

rem Quick and dirty list of Primary zones that aren't Reverse zones
for /F "usebackq" %%i in ('dnscmd %1 /EnumZones ^| find " Primary" ^| find /v " Rev"') do call :process_zone %1 %%i
goto end

:process_zone
rem Quick and dirty enumeration of all CNAME records in a zone
for /F "usebackq tokens=1,3,4" %%i in ('dnscmd %1 /EnumRecords %2 . /TYPE CNAME ^| find " CNAME"') do call :process_RR %1 %2 %%i %%j %%k
goto end

:process_RR
rem Check a record and alter it if necessary
if /I "%5" EQU "%SERVER_TO_REPLACE%" (
  echo dnscmd %1 /RecordDelete %2 %3 %4 %5 /f
  echo dnscmd %1 /RecordAdd %2 %3 %4 %REPLACEMENT_VALUE%
)

:end
    
por 17.05.2011 / 21:25
1

Um método seria executar nslookup em um dos seus servidores DNS ou em um sistema com permissão para realizar uma transferência de zona. Com nslookup faça ls > file , o que solicitará uma cópia do banco de dados de zona e salvará em um arquivo de texto. Em seguida, o recurso de pesquisa em seu editor de texto favorito para encontrar coisas para corrigir.

    
por 17.05.2011 / 21:25
1

Essas zonas são integradas ao AD? Caso contrário, você pode editar manualmente os arquivos de zona com o bloco de notas (localizar e substituir) e, em seguida, recarregar as zonas.

EDITAR

Meu mal. Eu não vi em seu título que estas são zonas integradas AD. Você ainda pode usar o método que postei alterando as zonas para zonas não integradas do AD, editando os arquivos de zona que serão criados e alterando-os de volta para as zonas integradas do AD. É um truque, então este pode não ser o método que você preferiria usar.

    
por 17.05.2011 / 23:27