Управление записями и наборами записей DNS в Azure DNS с помощью Azure CLI

В этой статье показано, как управлять записями DNS для зоны DNS с помощью кроссплатформенного интерфейса командной строки Azure. Интерфейс Azure CLI доступен для Windows, Mac и Linux. Записями DNS также можно управлять с помощью Azure PowerShell или портала Azure.

В контексте примеров, приведенных в этой статье, предполагается, что вы уже установили Azure CLI, вошли в систему и создали зону DNS.

Введение

Чтобы создавать записи DNS в Azure DNS, нужно понимать, как Azure DNS организует записи DNS в соответствующие наборы записей.

Имена записей

В Azure DNS записи указываются с помощью относительных имен. Полное доменное имя включает в себя имя зоны, а относительное имя — нет. Например, относительное имя записи www в зоне contoso.com дает запись с полным именем www.contoso.com.

Запись вершины — это запись DNS в корне (или вершины) зоны 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 с заданным именем и типом. Например, предположим, что веб-сайт 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

Чтобы создать запись DNS, используйте команду az network dns record-set <record-type> add-record (где <record-type> — это тип записи, например, srv, txt и т. д.) Чтобы получить справочную информацию, используйте az network dns record-set --help.

При создании записи необходимо указать следующую информацию:

  • Имя группы ресурсов
  • Имя зоны
  • Название набора записей
  • Тип записи

Имя набора записей должно быть относительным, т. е. оно не должно содержать имя зоны. Если набор записей еще не существует, команда автоматически создаст его за вас. Однако, если набор записей уже существует, команда добавит указанную вами запись.

При создании набора записей используется срок жизни (TTL) по умолчанию — 3600. Инструкции по использованию различных сроков жизни см. в разделе Создание набора записей DNS.

В следующем примере будет создана запись A с именем www в зоне contoso.com в группе ресурсов MyResourceGroup. IP-адрес записи A — 1.2.3.4.

az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 1.2.3.4

Чтобы создать набор записей на вершине зоны (в нашем примере — contoso.com), используйте имя записи \"\@\", включая кавычки:

az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --ipv4-address 1.2.3.4

Создание набора записей DNS

В приведенных выше примерах запись DNS добавлялась к существующему набору записей, или набор записей создавался неявно. Кроме того, можно явно создать набор записей, прежде чем добавлять в него записи. В Azure DNS поддерживаются пустые наборы записей, которые могут использоваться как заполнители для резервирования имен DNS перед созданием записей DNS. Пустые наборы записей видны в плоскости управления Azure DNS, но не отображаются на серверах имен Azure DNS.

Наборы записей создаются с помощью команды az network dns record-set <record-type> create. Чтобы получить справку, см. az network dns record-set <record-type> create --help.

При создании набора записей можно явно указать его свойства, например срок жизни и метаданные. Метаданные набора записей используются для связывания данных приложения с каждым набором записей в виде пар "ключ — значение".

В следующем примере показано, как создать пустой набор записей типа А со сроком жизни 60 секунд. Для этого используется параметр --ttl (краткая форма -l).

az network dns record-set a create --resource-group myresourcegroup --zone-name contoso.com --name www --ttl 60

В следующем примере с помощью параметра --metadata создается набор записей с двумя записями метаданных, "dept=finance" и "environment=production":

az network dns record-set a create --resource-group myresourcegroup --zone-name contoso.com --name www --metadata "dept=finance" "environment=production"

После создания пустого набора записей в него можно добавить записи с помощью команды azure network dns record-set <record-type> add-record, как описано в разделе Создание записи DNS.

Создание записей других типов

Вы уже узнали, как создавать записи типа А. В следующем примере показано, как создавать записи других типов, поддерживаемые в Azure DNS.

Параметры, используемые для указания данных записи, различаются в зависимости от типа записи. Например, для записи типа A необходимо указать адрес IPv4, используя параметр --ipv4-address <IPv4 address>. Параметры для каждого типа записи можно перечислить с помощью команды az network dns record-set <record-type> add-record --help.

В каждом случае мы покажем, как создать одну запись. Запись добавляется в существующий набор или набор, созданный неявно. Дополнительные сведения о создании наборов записей и явной настройке параметра набора см. в разделе Создание набора записей DNS.

Пример создания набора записей SOA отсутствует, поскольку SOA создаются и удаляются с каждой зоной DNS. Запись типа SOA нельзя создать или удалить отдельно. Однако SOA можно изменить, как показано в следующем примере.

Создание записи типа AAAA

az network dns record-set aaaa add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-aaaa --ipv6-address 2607:f8b0:4009:1803::1005

Создание записи типа CAA

az network dns record-set caa add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-caa --flags 0 --tag "issue" --value "ca1.contoso.com"

Создание записи CNAME

Примечание

Стандарты DNS не допускают использование записей типа CNAME на вершине зоны (--Name "@"), а также использование наборов записей, содержащих более одной записи.

Дополнительные сведения см. в разделе Записи типа CNAME.

az network dns record-set cname set-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-cname --cname www.contoso.com

Создание записи типа MX

Чтобы создать запись MX на вершине зоны (в данном случае "contoso.com"), в этом примере мы используем имя набора записей "\@\".

az network dns record-set mx add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --exchange mail.contoso.com --preference 5

Создание записи типа NS

az network dns record-set ns add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-ns --nsdname ns1.contoso.com

Создание записи типа PTR

В этом случае my-arpa-zone.com представляет зону ARPA вашего диапазона IP-адресов. Каждая запись PTR в этой зоне соответствует IP-адресу в этом диапазоне. Имя записи 10 — это последний октет IP-адреса в этом диапазоне IP-адресов, представленном данной записью.

az network dns record-set ptr add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name my-arpa.zone.com --ptrdname myservice.contoso.com

Создание записи типа SRV

Создавая набор записей SRV, укажите в его имени _service и _protocol. Нет необходимости включать @ в имя набора записей при создании набора записей SRV на вершине зоны.

az network dns record-set srv add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name _sip._tls --priority 10 --weight 5 --port 8080 --target sip.contoso.com

Создание записи типа TXT

В следующем примере показано, как создать запись типа ТХТ. Дополнительные сведения о максимальной длине строки, поддерживаемой в записях типа TXT, см. в разделе Записи типа TXT.

az network dns record-set txt add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-txt --value "This is a TXT record"

Получение набора записей

Чтобы извлечь существующий набор записей, используйте команду az network dns record-set <record-type> show. Чтобы получить справку, см. az network dns record-set <record-type> show --help.

При создании записи или набора записей указанное имя набора записей должно быть относительным. Данное имя не включает имя зоны. Необходимо также указать тип записи, зону, содержащую набор записей, и группу ресурсов, содержащую зону.

В следующем примере показано получение записи www типа А из зоны contoso.com в группе ресурсов MyResourceGroup.

az network dns record-set a show --resource-group myresourcegroup --zone-name contoso.com --name www

Перечисление наборов записей

Команда az network dns record-set list позволяет получить список всех записей в зоне DNS. Чтобы получить справку, см. az network dns record-set list --help.

В этом примере возвращаются все наборы записей в зоне contoso.com в группе ресурсов MyResourceGroup:

az network dns record-set list --resource-group myresourcegroup --zone-name contoso.com

В этом примере возвращаются все наборы записей, соответствующие заданному типу записи (в данном случае это записи типа A).

az network dns record-set a list --resource-group myresourcegroup --zone-name contoso.com 

Добавление записи в существующий набор записей

Команду az network dns record-set <record-type> add-record можно использовать как для создания записи в новом наборе записей, так и для добавления записи в существующий набор.

Дополнительные сведения см. в разделах Создание записи DNS и Создание записей других типов выше.

Удаление записи из существующего набора записей

Для удаления записи DNS из существующего набора используйте команду az network dns record-set <record-type> remove-record. Чтобы получить справку, см. az network dns record-set <record-type> remove-record -h.

Эта команда удаляет запись DNS из набора записей. Удаление последней записи в наборе не приводит к удалению самого набора. Чтобы сохранить вместо этого пустой набор записей, используйте параметр --keep-empty-record-set.

При использовании az network dns record-set <record-type> add-record команды необходимо указать запись, которая удаляется, и зону для удаления. Эти параметры описаны в предыдущих разделах Создание записи DNS и Создание записей других типов.

В следующем примере показано удаление записи типа A со значением "1.2.3.4" из набора записей с именем www в зоне contoso.com в группе ресурсов MyResourceGroup.

az network dns record-set a remove-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "www" --ipv4-address 1.2.3.4

Обновление существующего набора записей

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

Изменение записи типа A, AAAA, CAA, MX, NS, PTR, SRV или TXT

Чтобы изменить существующую запись типа A, AAAA, CAA, MX, NS, PTR, SRV или TXT, сначала следует добавить новую запись, а затем удалить существующую. Подробные инструкции об удалении и добавлении записей см. в предыдущих разделах этой статьи.

В следующем примере показано, как в записи типа А изменить IP-адрес 1.2.3.4 на IP-адрес 5.6.7.8.

az network dns record-set a add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 5.6.7.8
az network dns record-set a remove-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name www --ipv4-address 1.2.3.4

Вы не можете добавлять, удалять или изменять записи в автоматически созданном наборе записей NS на вершине зоны (--Name "@", включая кавычки). В этом наборе можно изменить только срок жизни и метаданные набора записей.

Изменение записи CNAME

В отличие от большинства других типов записей, набор записей CNAME может содержать только одну запись. Вот почему вы не можете заменить текущее значение, добавив новую запись и удалив существующую, как и другие типы записей.

Вместо этого используйте az network dns record-set cname set-record, чтобы изменить запись типа CNAME. Чтобы получить справку, см. az network dns record-set cname set-record --help.

В примере ниже показано изменение набора записей CNAME с именем www в зоне contoso.com в группе ресурсов MyResourceGroup таким образом, чтобы он указывал на www.fabrikam.net вместо существующего значения.

az network dns record-set cname set-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name test-cname --cname www.fabrikam.net

Изменение записи типа SOA

В отличие от большинства других типов записей, набор записей SOA может содержать только одну запись. Вот почему вы не можете заменить текущее значение, добавив новую запись и удалив существующую, как и другие типы записей.

Вместо этого используйте az network dns record-set soa update, чтобы изменить запись типа SOA. Чтобы получить справку, см. az network dns record-set soa update --help.

В следующем примере показано, как установить свойство "email" записи SOA для зоны contoso.com:

az network dns record-set soa update --resource-group myresourcegroup --zone-name contoso.com --email admin.contoso.com

Изменение записи NS на вершине зоны

Набор записей типа NS на вершине зоны автоматически создается вместе с каждой зоной DNS. Он содержит имена DNS-серверов Azure, назначенные зоне.

Вы можете добавить большее количество серверов доменных имен в этот набор записей NS для поддержки совместных доменов с несколькими поставщиками DNS. Вы также можете изменить TTL и метаданные для этого набора записей. Однако вы не можете удалить или изменить предварительно указанные DNS-серверы Azure.

Это ограничение распространяется только на набор записей NS на вершине зоны. Другие наборы записей NS в зоне (используемые для делегирования дочерних зон) можно изменять без ограничений.

В следующем примере показано, как добавить еще один сервер имен в набор записей NS на вершине зоны:

az network dns record-set ns add-record --resource-group myresourcegroup --zone-name contoso.com --record-set-name "@" --nsdname ns1.myotherdnsprovider.com 

Изменение срока жизни существующего набора записей

Для изменения срока жизни существующего набора записей используйте команду azure network dns record-set <record-type> update. Чтобы получить справку, см. azure network dns record-set <record-type> update --help.

В примере ниже показано, как изменить срок жизни набора записей. В этом случае устанавливается срок в 60 секунд.

az network dns record-set a update --resource-group myresourcegroup --zone-name contoso.com --name www --set ttl=60

Изменение метаданных существующего набора записей

Метаданные набора записей используются для связывания данных приложения с каждым набором записей в виде пар "ключ — значение". Для изменения метаданных существующего набора записей используйте команду az network dns record-set <record-type> update. Чтобы получить справку, см. az network dns record-set <record-type> update --help.

В следующем примере показано, как изменить набор с двумя записями метаданных: dept=finance и environment=production. Все существующие метаданные заменяются заданными значениями.

az network dns record-set a update --resource-group myresourcegroup --zone-name contoso.com --name www --set metadata.dept=finance metadata.environment=production

Удаление набора записей

Наборы записей можно удалить с помощью команды az network dns record-set <record-type> delete. Чтобы получить справку, см. azure network dns record-set <record-type> delete --help. При удалении набора записей также удаляются все содержащиеся в нем записи.

Примечание

Удалить наборы записей типа SOA и NS на вершине зоны (--name "@") нельзя. Эти записи создаются и удаляются автоматически вместе с зоной.

В следующем примере показано удаление набора записей с именем www типа А из зоны contoso.com в группе ресурсов MyResourceGroup.

az network dns record-set a delete --resource-group myresourcegroup --zone-name contoso.com --name www

Вам будет предложено подтвердить операцию удаления. Чтобы скрыть этот запрос, используйте параметр --yes.

Дальнейшие действия

См. дополнительные сведения о зонах и записях в Azure DNS.
Узнайте, как защитить зоны и записи при использовании Azure DNS.