Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как управлять записями DNS для зоны DNS с помощью Azure PowerShell. Записи DNS также можно управлять с помощью кроссплатформенного интерфейса командной строки Azure или портала Azure.
В примерах этой статьи предполагается, что вы уже установили Azure PowerShell, вошли в систему и создали зону DNS.
Примечание
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать, ознакомьтесь с разделом Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.
Introduction
Прежде чем создавать записи DNS в Azure DNS, сначала необходимо понять, как Azure DNS упорядочивает записи DNS в наборы записей DNS.
Имена записей
В Azure DNS записи указываются с помощью относительных имен. Полное доменное имя (FQDN) включает имя зоны, в то время как относительное имя не включает. Например, относительное имя записи www в зоне contoso.com дает полностью квалифицированное имя записи www.contoso.com.
Запись apex — это запись DNS в корне (или apex) зоны DNS. Например, в зоне DNS contoso.com апекс-записи также присвоено полное доменное имя contoso.com (это иногда называется голым доменом). По соглашению, относительное имя '@' используется для обозначения записей верхнего уровня.
Типы записей
У каждой записи DNS есть имя и тип. Записи разделяются на разные типы в зависимости от данных, которые они содержат. Наиболее распространенный тип — запись A, которая сопоставляет имя с IPv4-адресом. Другой распространенный тип — запись MX, которая сопоставляет имя с почтовым сервером.
Azure DNS поддерживает все общие типы записей DNS: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV и TXT. Обратите внимание, что записи SPF, представлены в виде записей TXT.
Дополнительные типы записей поддерживаются, если зона подписана с помощью расширений безопасности DNS (DNSSEC), таких как делегирующий подписывающий (DS) и записи ресурсов TLSA.
Типы записей ресурсов DNSSEC, такие как DNSKEY, RRSIG и NSEC3, добавляются автоматически при подписании зоны с помощью DNSSEC. Эти типы записей ресурсов DNSSEC нельзя создавать или изменять после подписывания зоны.
Наборы записей
В некоторых случаях необходимо создать несколько записей DNS с заданным именем и типом. Например, предположим, что веб-сайт www.contoso.com размещается по двум разным IP-адресам. Для этого веб-сайта требуются две разные записи A — по одной для каждого IP-адреса: Ниже приведен пример набора записей:
www.contoso.com. 3600 IN A 134.170.185.46
www.contoso.com. 3600 IN A 134.170.188.221
Azure DNS управляет всеми записями DNS, используя наборы записей. Набор записей (также называется набором записей ресурсов) — это коллекция записей DNS в зоне, которые имеют одно имя и принадлежат к одному типу. Большинство наборов записей содержат единственную запись. Однако примеры, подобные приведенному выше, в которых набор записей содержит несколько записей, не являются редкими.
Например, предположим, что вы уже создали в зоне contoso.com запись А www, указывающую на IP-адрес 134.170.185.46 (первая запись выше). Чтобы создать вторую запись, не нужно создавать дополнительный набор записей — следует добавить запись в уже имеющийся набор записей.
Наборы записей типа SOA и CNAME являются исключениями. По стандартам DNS несколько записей с одним и тем же именем для этих типов не допускаются, поэтому такие наборы записей могут содержать только одну запись.
Дополнительные сведения о записях DNS в Azure DNS см. в зонах и записях DNS.
Создание записи DNS
Чтобы создать новый набор записей, он должен иметь другое имя и тип, отличные от существующих записей. Если новая запись имеет то же имя и тип, что и существующая запись, необходимо добавить ее в существующий набор записей.
Создайте записи A в новом наборе записей
Для создания наборов записей используется командлет New-AzDnsRecordSet. При создании набора записей необходимо указать имя набора записей, зону, время жизни (TTL), тип записи и созданные записи.
Параметры для добавления записей в набор записей зависят от типа набора записей. Например, при использовании набора записей типа A необходимо указать IP-адрес с помощью параметра -IPv4Address. Различные типы записей будут иметь дополнительные параметры.
В следующем примере создается набор записей с относительным именем www в зоне contoso.comDNS. Полное доменное имя набора записей — www.contoso.com. Тип записи — "A", а срок жизни составляет 3600 секунд. Набор записей содержит одну запись с IP-адресом 1.2.3.4.
New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4")
Чтобы создать набор записей на вершине зоны (в данном случае "contoso.com"), используйте имя набора записей "@" (за исключением кавычки):
New-AzDnsRecordSet -Name "@" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4")
Если необходимо создать набор записей, содержащий несколько записей, сначала создайте локальный массив и добавьте записи, а затем передайте массив New-AzDnsRecordSet следующим образом:
$aRecords = @()
$aRecords += New-AzDnsRecordConfig -IPv4Address "1.2.3.4"
$aRecords += New-AzDnsRecordConfig -IPv4Address "2.3.4.5"
New-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName MyResourceGroup -Ttl 3600 -RecordType A -DnsRecords $aRecords
Метаданные набора записей можно использовать для связывания данных для конкретного приложения с каждым набором записей в виде пар "ключ-значение". В следующем примере показано, как создать набор записей с двумя записями метаданных, dept=finance и environment=production.
New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") -Metadata @{ dept="finance"; environment="production" }
Azure DNS также поддерживает пустые наборы записей, которые могут выступать в качестве заполнителя, чтобы зарезервировать DNS-имя перед созданием записей DNS. Пустые наборы записей отображаются в плоскости управления Azure DNS, но отображаются на серверах доменных имен Azure DNS. В следующем примере создается пустой набор записей:
New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords @()
Создание записей других типов
Подробно показано, как создать записи A, в следующих примерах показано, как создавать записи других типов записей, поддерживаемых Azure DNS.
В каждом случае мы покажем, как создать набор записей, содержащий одну запись. Более ранние примеры записей A можно адаптировать для создания наборов записей других типов, содержащих несколько записей, с метаданными или для создания пустых наборов записей.
Нет примера для создания набора записей SOA, так как SOA создаются и удаляются с каждой зоной DNS. Запись SOA не может быть создана или удалена отдельно. Однако SOA можно изменить, как показано в следующем примере.
Создание набора записей AAAA с одной записью
New-AzDnsRecordSet -Name "test-aaaa" -RecordType AAAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ipv6Address "2607:f8b0:4009:1803::1005")
Создайте набор записей CAA с одной записью
New-AzDnsRecordSet -Name "test-caa" -RecordType CAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Caaflags 0 -CaaTag "issue" -CaaValue "ca1.contoso.com")
Создайте набор записей CNAME с одной записью
Примечание
Стандарты DNS не разрешают записи CNAME в вершине зоны (-Name '@'), а также не разрешают наборы записей, содержащие несколько записей.
Дополнительные сведения см. в записях CNAME.
New-AzDnsRecordSet -Name "test-cname" -RecordType CNAME -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Cname "www.contoso.com")
Создание набора записей MX с одной записью
В этом примере мы используем имя набора записей "@" для создания записи MX в вершине зоны (в данном случае "contoso.com".
New-AzDnsRecordSet -Name "@" -RecordType MX -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Exchange "mail.contoso.com" -Preference 5)
Создайте набор записей NS с одной записью
New-AzDnsRecordSet -Name "test-ns" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Nsdname "ns1.contoso.com")
Создайте набор записей PTR с одной записью
В этом случае "my-arpa-zone.com" представляет зону обратного поиска ARPA, охватывающую ваш диапазон IP-адресов. Каждый набор записей PTR в этой зоне соответствует IP-адресу в этом диапазоне IP-адресов. Имя записи "10" является последним октетом IP-адреса в этом диапазоне IP-адресов, представленным этой записью.
New-AzDnsRecordSet -Name 10 -RecordType PTR -ZoneName "my-arpa-zone.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ptrdname "myservice.contoso.com")
Создайте набор записей SRV с одной записью
При создании набора записей SRV укажите _service и _protocol в имени набора записей. При создании набора записей на вершине зоны нет необходимости включать "@" в имя набора записей SRV.
New-AzDnsRecordSet -Name "_sip._tls" -RecordType SRV -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Priority 0 -Weight 5 -Port 8080 -Target "sip.contoso.com")
Создайте набор записей TXT с одной записью
В следующем примере показано, как создать запись TXT. Дополнительные сведения о максимальной длине строки, поддерживаемой в записях TXT, см. в записях TXT.
New-AzDnsRecordSet -Name "test-txt" -RecordType TXT -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Value "This is a TXT record")
Получение набора записей
Чтобы получить существующий набор записей, используйте Get-AzDnsRecordSet. Этот командлет возвращает локальный объект, представляющий набор записей в Azure DNS.
Как и в New-AzDnsRecordSetслучае, имя набора записей должно быть относительным именем, то есть оно должно исключить имя зоны. Также необходимо указать тип записи и зону, содержащую набор записей.
В следующем примере показано, как получить набор записей. В этом примере зона указывается с использованием параметров -ZoneName и -ResourceGroupName.
$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Вместо этого можно также указать зону с помощью объекта зоны, передаваемого параметром -Zone.
$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone
Список наборов записей
Можно также использовать Get-AzDnsZone для перечисления наборов записей в зоне, пропуская либо параметр -Name, либо параметр -RecordType, или оба.
В следующем примере возвращаются все наборы записей в зоне:
$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
В следующем примере показано, как получить все наборы записей заданного типа, указав тип записи при опущении имени набора записей:
$recordsets = Get-AzDnsRecordSet -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Чтобы получить все наборы записей с заданным именем, в разных типах записей необходимо получить все наборы записей, а затем отфильтровать результаты:
$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | where {$_.Name.Equals("www")}
Во всех приведенных выше примерах зону можно указать с помощью -ZoneName и -ResourceGroupNameпараметров (как показано), либо указав объект зоны:
$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$recordsets = Get-AzDnsRecordSet -Zone $zone
Добавление записи в существующий набор записей
Чтобы добавить запись в существующий набор записей, сделайте следующее:
Получение существующего набора записей
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType AДобавьте новую запись в локальный набор записей.
Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"Обновите изменения, чтобы она отражалась в службе Azure DNS.
Set-AzDnsRecordSet -RecordSet $rs
Использование Set-AzDnsRecordSetзаменяет существующий набор записей в Azure DNS (и все записи, которые он содержит) указанным набором записей.
Проверки Etag используются для обеспечения того, чтобы одновременные изменения не были перезаписаны. Вы можете использовать необязательный -Overwrite параметр для подавления этих проверок.
Эта последовательность операций также может быть обработана через канал, что означает, что вы передаёте объект набора записей через канал, а не передаёте его как параметр.
Get-AzDnsRecordSet -Name "www" –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Add-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet
В приведенных выше примерах показано, как добавить запись "A" в существующий набор записей типа "A". Аналогичная последовательность операций используется для добавления записей в наборы записей других типов, заменив -Ipv4Address параметр Add-AzDnsRecordConfig другими параметрами, определенными для каждого типа записи. Параметры для каждого типа записи совпадают с командлетом New-AzDnsRecordConfig , как показано в других примерах типов записей выше.
Наборы записей типа CNAME или SOA не могут содержать несколько записей. Это ограничение возникает из стандартов DNS. Это не ограничение Azure DNS.
Удаление записи из существующего набора записей
Процесс удаления записи из набора записей аналогичен процессу добавления записи в существующий набор записей:
Получить существующий набор записей
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType AУдалите запись из локального объекта набора записей. Удаляемая запись должна быть точным совпадением с существующей записью по всем параметрам.
Remove-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"Зафиксируйте изменение обратно в службу Azure DNS. Используйте необязательный
-Overwriteпереключатель, чтобы отключить проверки Etag для параллельных изменений.Set-AzDnsRecordSet -RecordSet $Rs
При использовании приведенной выше последовательности для удаления последней записи из набора записей не удаляется набор записей, а он оставляет пустой набор записей. Чтобы полностью удалить набор записей, см. статью "Удалить набор записей".
Аналогично добавлению записей в набор записей, последовательность операций для удаления набора записей также может быть передана:
Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Remove-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet
Различные типы записей поддерживаются путем передачи соответствующих параметров, относящихся к типу Remove-AzDnsRecordSet. Параметры каждого типа записи совпадают с командлетом New-AzDnsRecordConfig , как показано в других примерах типов записей выше.
Изменение существующего набора записей
Действия по изменению существующего набора записей похожи на шаги, которые вы выполняете при добавлении или удалении записей из набора записей:
- Получение существующего набора записей с помощью
Get-AzDnsRecordSet. - Измените локальный объект набора записей следующим образом:
- Добавление или удаление записей
- Изменение параметров существующих записей
- Изменение метаданных набора записей и времени жизни (TTL)
- Зафиксируйте изменения с помощью командлета
Set-AzDnsRecordSet. Это заменяет существующий набор записей в Azure DNS указанным набором записей.
При использовании команды Set-AzDnsRecordSet проверки Etag используются для предотвращения перезаписи одновременных изменений. Вы можете использовать необязательный -Overwrite параметр для подавления этих проверок.
Обновление записи в существующем наборе записей
В этом примере мы изменим IP-адрес существующей записи A:
$rs = Get-AzDnsRecordSet -name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Ipv4Address = "9.8.7.6"
Set-AzDnsRecordSet -RecordSet $rs
Изменение записи SOA
Вы не можете добавлять или удалять записи из автоматически созданного набора записей SOA на вершине зоны (-Name "@"включая кавычки). Однако вы можете изменить любой из параметров записи SOA (кроме host) и набора записей TTL.
В следующем примере показано, как изменить свойство Email записи SOA:
$rs = Get-AzDnsRecordSet -Name "@" -RecordType SOA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Email = "admin.contoso.com"
Set-AzDnsRecordSet -RecordSet $rs
Изменение записей NS в вершине зоны
Набор записей NS в вершине зоны автоматически создается с каждой зоной DNS. Он содержит имена серверов доменных имен Azure DNS, назначенных зоне.
Вы можете добавить большее количество серверов доменных имен в этот набор записей NS для поддержки совместных доменов с несколькими поставщиками DNS. Вы также можете изменить TTL и метаданные для этого набора записей. Однако вы не можете удалить или изменить предустановленные серверы имен Azure DNS.
Это ограничение применяется только к набору записей NS в вершине зоны. Другие наборы записей NS в зоне (как используется для делегирования дочерних зон) можно изменять без ограничений.
В следующем примере показано, как добавить другой сервер имен в набор записей NS в вершине зоны:
$rs = Get-AzDnsRecordSet -Name "@" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Add-AzDnsRecordConfig -RecordSet $rs -Nsdname ns1.myotherdnsprovider.com
Set-AzDnsRecordSet -RecordSet $rs
Изменение метаданных набора записей
Метаданные набора записей можно использовать для связывания данных для конкретного приложения с каждым набором записей в виде пар "ключ-значение".
В следующем примере показано, как изменить метаданные существующего набора записей:
# Get the record set
$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
# Add 'dept=finance' name-value pair
$rs.Metadata.Add('dept', 'finance')
# Remove metadata item named 'environment'
$rs.Metadata.Remove('environment')
# Commit changes
Set-AzDnsRecordSet -RecordSet $rs
Удаление набора записей
Наборы записей можно удалить с помощью командлета Remove-AzDnsRecordSet . При удалении набора записей также удаляются все записи в наборе записей.
Примечание
Невозможно удалить наборы записей SOA и NS в вершине зоны (-Name '@'). Azure DNS создал их автоматически при создании зоны и автоматически удаляет их при удалении зоны.
В следующем примере показано, как удалить набор записей. В этом примере имя набора записей, тип набора записей, имя зоны и группа ресурсов указываются явным образом.
Remove-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Вместо этого набор записей можно указать по имени и типу, а зона, указанная с помощью объекта:
$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone
В качестве третьего варианта сам набор записей можно указать с помощью объекта набора записей:
$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -RecordSet $rs
При указании набора записей для удаления с помощью объекта набора записей проверки Etag используются для обеспечения того, чтобы одновременные изменения не были удалены. Вы можете использовать необязательный -Overwrite параметр для подавления этих проверок.
Объект набора записей также можно передать вместо передачи в качестве параметра:
Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | Remove-AzDnsRecordSet
Запросы на подтверждение
Командлеты New-AzDnsRecordSet, Set-AzDnsRecordSet и Remove-AzDnsRecordSet поддерживают запросы на подтверждение.
Каждый командлет запрашивает подтверждение, если $ConfirmPreference переменная предпочтения PowerShell имеет значение Medium или ниже. Поскольку значение $ConfirmPreference по умолчанию равно High, эти запросы не задаются при использовании стандартных настроек PowerShell.
Текущий $ConfirmPreference параметр можно переопределить с помощью -Confirm параметра. Если вы укажете -Confirm или -Confirm:$True, командлет запросит подтверждение перед выполнением. Если вы укажете -Confirm:$False, командлет не будет запрашивать подтверждения.
Дополнительные сведения о -Confirm, $ConfirmPreference см. в разделе «О переменных предпочтениях».
Дальнейшие шаги
Дополнительные сведения о зонах и записях в Azure DNS.
Узнайте, как защитить зоны и записи при использовании Azure DNS.
Ознакомьтесь со справочной документацией по Azure DNS PowerShell.