Automatizar tarefas de DNS com os cmdlets DNS do PowerShell

Os registros DNS são normalmente gerenciados dinamicamente pelo seu servidor DNS. No entanto, às vezes, você pode precisar 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 situações que o uso dos cmdlets DNS do PowerShell é a escolha certa.

Esta postagem no blog tem um vídeo complementar criado por David Lamb, colaborador do TechSnips. Sinta-se à 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 usando o cmdlet DNS do PowerShell Get-DnsServerResourceRecord. Usando este cmdlet, você pode especificar o parâmetro ZoneName, que listará todos os registros DNS nessa 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 específico sobre o console gráfico 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, simplifique um pouco esta lista. Usando o mesmo cmdlet, mas adicionando o parâmetro RRType para procurar 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 muitas propriedades diferentes do registro 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

Levando isso um passo adiante, você também pode procurar registros em uma zona DNS diferente e até em servidores DNS diferentes.

No exemplo abaixo, vamos procurar 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 de DNS do PowerShell Add-DnsServerResourceRecordA. No exemplo abaixo, você precisa adicionar um registro de host para uma nova impressora que você está adicionando à rede. 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

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

Adicione um registo à zona corp.ad para o novo servidor da Intranet de TI em fc00:0128 e verifique rapidamente se ele 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 Registos de Procura Reversa (PTR)

Usando os cmdlets DNS do PowerShell, você também pode adicionar registos PTR. Um registo de procura reversa permite que o cliente faça uma consulta a um servidor DNS para solicitar o nome do host para um determinado endereço IP.

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

Criando uma Zona DNS

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

Neste exemplo, eu também escolhi definir o âmbito de replicação para toda a floresta AD, e especifiquei o 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ê estará direcionando 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. Então, para nosso ID de 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ê deseja fornecer aos seus usuários financeiros um endereço para seu aplicativo financeiro habilitado para web.

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 marcadores. Eles podem continuar acessando 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 verificar todos os outros posts de DNS aqui.

Resumo

Isso conclui nosso tutorial sobre o uso do PowerShell com registros DNS. Com o conhecimento que você acumulou aqui, você deve agora ser capaz de gerenciar interativamente ou até automatizar grandes partes dos registros DNS se dedicar sua mente a isso!

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