Criar registros PTR a partir de registros A existentes (DNS do Windows)

2

Estou migrando zonas DNS (tanto para frente quanto reversa) de Vincular para o DNS do Windows. As entradas reversas no servidor Bind existente não foram mantidas tão bem para as zonas estáticas e eu prefiro não apenas importar todos os registros.

No entanto, movi todos os registros A para a configuração do Windows e verifiquei se eles foram limpos. Agora eu tenho zonas inversas vazias.

O que eu estou querendo saber é se existe uma maneira relativamente fácil de dizer ao servidor DNS (Windows 2008 R2, integrado ao Active Directory), através da GUI ou da linha cmd, ir em frente e criar registros PTR para todos os registros A .

    
por J.Zimmerman 24.07.2010 / 01:34

2 respostas

3

Como estão suas habilidades com o PowerShell? Poderia ser uma questão bastante simples de usar

$hosts = Get-WmiObject -ComputerName $DomainController -Namespace 'root\MicrosoftDNS' -Class MicrosoftDNS_AType 

E, em seguida, use o método CreateInstanceFromPropertyData :

foreach ($record in $hosts)  {
  $PTRRecord = [wmiclass]"\$DomainController\root\MicrosoftDNS:MicrosoftDNS_PTRType
  $PTRRecord.createInstanceFromPropertydata("foo","bar","baz")
}

Meu exemplo acima é um trecho extraído (e higienizado) de um script que uso para adicionar registros CNAME para registros A existentes. Fazer PTRs deve ser bem parecido; consertar meu handwave foo-bar-baz. Há mais ideias e sugestões em este artigo da Equipe de Scripts .

    
por 24.07.2010 / 02:03
1

Então uma resposta mais completa segue. Note que faz muito pouca verificação de erros e é excessivamente falador. Eu peguei a maioria das idéias de Equipe de scripts e a resposta de AndyN. Não é de forma perfeita.

$server = "mydns.domain.name"

if (-not (Test-Connection -ComputerName $server)){Throw "DNS server not found"}

$srvr = $server -split "\."

$hosts = Get-WmiObject -ComputerName $server -Namespace 'root\MicrosoftDNS' -Class MicrosoftDNS_AType | where { $_.DomainName -eq "$($srvr[1]).$($srvr[2])" }

foreach ($record in $hosts)  {
  $resource = [WmiClass]"\$($srvr[0])\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord"
  $computer = $record.OwnerName
  $addr = $record.IPAddress -split "\."
  $rzone = "$($addr[1]).$($addr[0]).in-addr.arpa"
  $text = "$($addr[3]).$($addr[2]).$rzone IN PTR $computer"
write-host "$server, $rzone, $text"
  $resource.CreateInstanceFromTextRepresentation($server, $rzone, $text)
}
    
por 15.10.2010 / 00:05