Автоматизируйте задачи DNS с помощью командлетов DNS PowerShell

Записи DNS обычно управляются динамически вашим DNS-сервером. Однако иногда может возникнуть необходимость вручную создать, изменить или удалить различные типы записей DNS. Или даже добавить различные задачи DNS в автоматизированные сценарии. В таких случаях на помощь приходят командлеты PowerShell DNS.

В этом блоге есть сопровождающее видео, созданное участником TechSnips, Дэвидом Лэмбом. При желании можете посмотреть его или, если предпочитаете текст, продолжайте чтение!

Просмотр записей DNS с помощью командлетов PowerShell DNS

Вы можете просмотреть все ресурсные записи для заданной зоны DNS, просто используя командлет PowerShell DNS Get-DnsServerResourceRecord. Используя этот командлет, вы можете указать параметр ZoneName, который выведет все записи DNS в этой зоне.

Как видно ниже, это генерирует довольно длинный список записей.

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

Это поведение подчеркивает одно из преимуществ этого конкретного командлета перед графической консолью DNS. Вид предоставляет вам все записи для этой зоны, независимо от того, в какой папке они находятся. В графической консоли потребовалось бы довольно много времени, чтобы собрать эту информацию вместе.

Сейчас немного уменьшим этот список. Используя тот же самый cmdlet, добавление параметра RRType для поиска записей A (хосты IPv4) и фильтрация записей, где Время жизни (TTL) больше 15 минут, дает нам более управляемый список. Вы можете использовать cmdlet Where-Object для фильтрации по множеству различных свойств записи 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

Пойдем еще дальше, вы можете также искать записи в другой DNS-зоне и даже на разных DNS-серверах.

В приведенном ниже примере мы будем искать записи A в зоне canada.corp.ad на DNS-сервере DC03

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

Добавление и удаление записей хоста A

Чтобы добавить запись хоста, вам нужно использовать PowerShell DNS cmdlet Add-DnsServerResourceRecordA. В приведенном ниже примере вам нужно добавить запись хоста для нового принтера, который вы добавляете в сеть. Он будет добавлен в зону corp.ad с именем reddeerprint01, и его 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

Если оказывается, что вам нужно удалить запись, например, если принтер был выведен из эксплуатации, вы можете использовать следующий код для удаления только что созданной записи хоста:

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

Добавление и удаление записей хоста AAAA

Также так же легко добавить запись хоста IPv6. Конечно, эти записи немного отличаются, так как они указаны как AAAA записи. Вы могли заметить, что теперь мы используем командлет PowerShell DNS Add-DnsServerResourceRecordAAAA. Это незначительное изменение, но важное.

Добавьте запись в зону corp.ad для нового сервера Интранета IT по адресу fc00:0128, а затем быстро проверьте, что она была создана с помощью следующей команды.

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

Добавление обратных записей поиска (PTR)

С помощью командлетов PowerShell DNS вы также можете добавлять записи PTR. Обратная запись поиска позволяет клиенту запрашивать у DNS-сервера имя хоста для предоставленного IP-адреса.

Создание записи PTR – относительно простой процесс, но есть одна важная информация, которую вам нужно будет знать, прежде чем начать добавлять записи PTR. Обратные зоны поиска не создаются по умолчанию. Вам нужно будет настроить обратную зону поиска перед добавлением записей. К счастью, это относительно легко сделать.

Создание DNS-зоны

Используйте командлет PowerShell DNS Add-DnsServerPrimaryZone для создания новой DNS-зоны. В этом случае, поскольку вы создаете обратную зону поиска, укажите сетевой идентификатор.

В этом примере я также выбрал установить область репликации на всё лес AD и я явно указал DC03 как предпочтительный DNS-сервер.

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

Теперь, когда обратная зона поиска на месте, вы можете добавить запись PTR для нового принтера под названием CYQF-Printer-01.canada.corp.ad с IP-адресом 192.168.2.56. Поскольку эта запись предназначена для зоны canada.corp.ad, вы будете настраивать DNS-сервер DC03.

Теперь, когда зона создана, давайте создадим запись PTR с использованием команды Add-DnsServerResourceRecordPtr. При использовании этой команды важно учесть несколько моментов.

  • Вам необходимо указать имя зоны, используя идентификатор сети в обратном порядке, а затем добавить .in-addr.arpa. Так что для нашей 192.168.2.0/24 сети имя зоны будет 2.168.192.in-addr.arpa.
  • Параметр Name – это часть имени хоста IP-адреса. Для нашего принтера с IP-адресом 192.168.2.56 Name56.

Как только у вас будут эти сведения, код, необходимый для создания записи PTR, относительно прост, хотя и немного длинный:

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

Добавление записей синонимов (CNAME)

Чтобы завершить этот учебник, создайте запись синонима хоста или запись CNAME с помощью команды Add-DnsServerResourceRecordCName.

Эти записи позволяют указать синоним для существующей записи хоста в зоне. Это особенно полезно, например, если вы хотите предоставить вашим финансовым пользователям адрес для их веб-приложения по финансам.

Вы можете создать псевдоним с именем финансы и направить его на веб-сервер webapp25.corp.ad. Как только приложение будет перенесено на новый веб-сервер с новым именем хоста, вы измените запись CNAME, чтобы указать финансы, указывающую на новый хост. Таким образом, пользователи не должны обновлять свои закладки. Они могут продолжать получать доступ к своему приложению, используя адрес 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

Если вы хотите погрузиться в DNS глубже и увидеть некоторые более продвинутые возможности, обязательно ознакомьтесь со всеми другими сообщениями о DNS здесь.

Сводка

Этим завершается наш учебник по использованию PowerShell с записями DNS. С накопленными знаниями вы теперь сможете управлять интерактивно или даже автоматизировать большие объемы записей DNS, если решите заняться этим!

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