Automatize Tarefas DNS com Cmdlets DNS do PowerShell

Os registros DNS são geralmente gerenciados dinamicamente pelo seu servidor DNS. No entanto, às vezes, você pode descobrir que precisa criar, editar ou remover manualmente vários tipos de registros DNS. Ou até mesmo adicionar várias tarefas DNS a scripts de automação. É nessas horas que usar os cmdlets DNS do PowerShell é a maneira ideal.

Esta postagem no blog tem um vídeo complementar criado por David Lamb, colaborador da TechSnips. Fique à vontade para assistir ou, se preferir texto, continue lendo!

Visualizando Registros DNS com os Cmdlets DNS do PowerShell

Você pode visualizar todos os registros de recursos para uma determinada zona DNS simplesmente usando o cmdlet DNS do PowerShell Get-DnsServerResourceRecord. Usando este cmdlet, você pode especificar o parâmetro ZoneName, que listará todos os registros DNS naquela zona.

Como você pode ver abaixo, isso gera uma lista bastante extensa de registros.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad
Listing DNS records with PowerShell

Esse comportamento destaca uma das vantagens deste cmdlet em particular sobre o console gráfico do DNS. A visualização fornece todos os registros para esta zona, independentemente da pasta em que estão. No console gráfico, levaria bastante tempo para reunir essas informações.

Agora, reduza um pouco esta lista. Usando o mesmo cmdlet, mas adicionando o parâmetro RRType para buscar registros A (hosts IPv4) e filtrando os registros onde o Tempo de Vida (TTL) é maior que 15 minutos nos dá uma lista um pouco mais gerenciável. Você pode usar o cmdlet Where-Object para filtrar em muitas propriedades diferentes de registros DNS.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A | Where-Object TimeToLive -GE "00:15:00"
Finding DNS records with a TimeToLive greater than 15 minutes

Indo um passo além, você também pode buscar registros em uma zona DNS diferente e até em servidores DNS diferentes.

No exemplo abaixo, vamos buscar registros A na zona canada.corp.ad no servidor DNS DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName canada.corp.ad -RRType A
Finding DNS A records

Adicionando e Removendo Registros de Host A

Para adicionar um registro de host, você precisará usar o cmdlet DNS do PowerShell Add-DnsServerResourceRecordA. No exemplo abaixo, você precisa adicionar um registro de host para uma nova impressora que está adicionando à rede. Ele será adicionado à zona corp.ad com o nome reddeerprint01, e seu endereço IP é 192.168.2.56.

PS51> Add-DnsServerResourceRecordA -Name reddeerprint01 -ZoneName corp.ad -IPv4Address 192.168.2.56
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A
Creating a DNS record

Se descobrir que precisa remover um registro, talvez a impressora tenha sido desativada, você pode usar o seguinte código para remover o registro de host que acabamos de criar:

PS51> Remove-DnsServerResourceRecord -ZoneName corp.ad -Name reddeerprint01 -RRType A

Adicionando e Removendo Registros de Host AAAA

É tão fácil adicionar um registro de host IPv6. Claro, esses registros diferem um pouco, pois são listados como registros AAAA. Você pode notar que agora estamos usando o cmdlet de DNS do PowerShell Add-DnsServerResourceRecordAAAA. É uma mudança sutil, mas importante.

Adicione um registro na zona corp.ad para o novo servidor de Intranet de TI em fc00:0128 e verifique rapidamente se foi criado com o seguinte comando.

PS51> Add-DnsServerResourceRecordAAAA -Name it-intranet -ZoneName corp.ad -IPv6Address "fc00::0128"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType AAAA
Creating an AAA host record

Adicionando Registros de Pesquisa Reversa (PTR)

Usando os cmdlets de DNS do PowerShell, você também pode adicionar registros PTR. Um registro de pesquisa reversa permite que o cliente consulte um servidor DNS para solicitar o nome do host para um determinado endereço IP.

Criar um registro PTR é um processo relativamente fácil, mas há uma informação importante que você precisará saber antes de começar a adicionar registros PTR. As zonas de pesquisa reversa não são criadas por padrão. Você precisará configurar sua zona de pesquisa reversa antes de adicionar registros. Felizmente, é relativamente fácil fazer isso.

Criando uma Zona DNS

Use o cmdlet de DNS do PowerShell Add-DnsServerPrimaryZone para criar uma nova zona DNS. Neste exemplo, como você está criando uma zona de pesquisa reversa, forneça o ID da rede.

Neste exemplo, também escolhi definir o escopo de replicação para toda a floresta AD, e escolhi especificamente DC03 como o servidor DNS preferido:

PS51> Add-DnsServerPrimaryZone -ComputerName DC03 -NetworkId "192.168.2.0/24" -ReplicationScope Forest
PS51> Get-DnsServerZone -ComputerName DC03
Creating a DNS primary zone

Agora que a zona de pesquisa reversa está em vigor, você pode adicionar um registro PTR para uma nova impressora chamada CYQF-Printer-01.canada.corp.ad que possui o endereço IP 192.168.2.56. Como este registro é para a zona canada.corp.ad, você irá direcionar o servidor DNS DC03.

Agora que a zona está criada, vamos criar um registro PTR usando o comando Add-DnsServerResourceRecordPtr. Ao usar este cmdlet, é importante observar algumas coisas.

  • Você precisa especificar o nome da zona usando o ID da rede na ordem inversa e, em seguida, adicionar .in-addr.arpa. Portanto, para nossa rede 192.168.2.0/24, o nome da zona é 2.168.192.in-addr.arpa.
  • O parâmetro Name é a parte do host do endereço IP. Para nossa impressora em 192.168.2.56, o Name é 56.

Depois de ter essas informações, o código necessário para criar o registro PTR é relativamente simples, se um pouco longo:

PS51> Add-DnsServerResourceRecordPtr `
    -Name "56" `
    -PtrDomainName "CYQF-Printer-01.canada.corp.ad" `
    -ZoneName "2.168.192.in-addr.arpa" `
    -computerName DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName "2.168.192.in-addr.arpa"
Creating a PTR record

Adicionando Registros de Alias (CNAME)

Para finalizar este tutorial, crie um registro de alias de host ou registro CNAME usando o cmdlet Add-DnsServerResourceRecordCName.

Esses registros permitem que você especifique um alias para um registro de host existente na zona. Isso se torna especialmente útil, por exemplo, se você quiser fornecer aos seus usuários financeiros um endereço para o aplicativo financeiro habilitado para web deles.

Você poderia criar um alias chamado finance e apontá-lo para o servidor web webapp25.corp.ad. Uma vez que o aplicativo for migrado para o novo servidor web com um novo nome de host, você então mudaria o registro CNAME para apontar finance que aponta para o novo host. Dessa forma, os usuários não precisam atualizar seus favoritos. Eles podem continuar a acessar sua aplicação usando o endereço finance.corp.ad.

PS51> Add-DnsServerResourceRecordCName -ZoneName corp.ad -HostNameAlias "webapp25.corp.ad" -Name "finance"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType CName
Creating a CNAME record

Se você quiser se aprofundar no DNS e ver algumas capacidades mais avançadas, certifique-se de conferir todos os outros posts sobre DNS aqui.

Resumo

Isso conclui nosso tutorial sobre o uso do PowerShell com registros DNS. Com o conhecimento que você acumulou aqui, agora você deveria ser capaz de gerenciar interativamente ou até mesmo automatizar grandes áreas de registros DNS se você se concentrar nisso!

Source:
https://adamtheautomator.com/powershell-dns/