API облачных DNS ResourceRecordSets

1. Введение

64e18005b6cdcd83.png

Последнее обновление: 6 января 2021 г.

Что такое облачный DNS?

См. нашу домашнюю страницу .

Что ты построишь

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

Что вы узнаете

Как СОЗДАТЬ, ЧИТАТЬ, УДАЛИТЬ и ОБНОВИТЬ отдельные наборы ResourceRecordSet.

Что вам понадобится

2. Приступаем к настройке

Настройте свой проект Google Cloud Platform

Войти в gcloud

gcloud auth login

Создать проект

gcloud projects create my-codelab-project

Включите Cloud DNS API

gcloud services enable dns.googleapis.com

Это может занять несколько минут, чтобы это вступило в силу.

3. Создание частной ManagedZone

ManagedZone содержит наборы ResourceRecordSets.

Запишите имя домена, для которого вы хотите добавить записи DNS. В этом примере мы будем использовать «my-domain.com» и предположим, что ваш экземпляр виртуальной машины находится в сети по умолчанию.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. Управление наборами записей ресурсов

К концу этого раздела DNS-запросы через вашу виртуальную частную сеть для вашего домена будут разрешаться по IP-адресу виртуальной машины.

Например, если IP-адрес вашей виртуальной машины — «1.2.3.4», а вам нужен «my-domain.com». для разрешения этого IP-адреса вы должны создать «запись».

СОЗДАТЬ запись A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • Позиционный аргумент «мой-домен.com». , также известное как dnsName, — это имя, для которого мы хотим определить разрешение DNS.
  • –type : обозначает тип записи DNS, которую мы пытаемся создать.
  • –ttl : обозначает время жизни этой записи.
  • –rrdatas : содержит фактический ответ на запрос.
  • –zone : требуется, чтобы указать, в какой ManagedZone должна быть создана эта запись.

Подробнее о концепциях DNS можно прочитать здесь .

Теперь, когда вы создали запись A, вы сможете проверить разрешение DNS.

SSH на вашу машину. В этом примере мы используем экземпляр виртуальной машины с именем «dns-codelab» в «us-central1-a».

gcloud compute ssh codelab --zone=us-central1-a

Установите dnsutils, чтобы вы могли использовать команду «копать».

sudo apt install dnsutils

запросить ваш домен

dig my-domain.com.

это должно дать результат, аналогичный

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com.                        IN        A

;; ANSWER SECTION:
my-domain.com.                60        IN        A        1.2.3.4
...

СОЗДАТЬ, ИСПРАВИТЬ и ПОЛУЧИТЬ запись CNAME

Теперь, когда вы сопоставили my-domain.com. до 1.2.3.4, вам, вероятно, захочется убедиться, что www.my-domain.com. также разрешается до 1.2.3.4. Записи для "www." префиксы не создаются автоматически.

Если вы запросите www.my-domain.com.

dig www.my-domain.com.

вы получите результат, аналогичный

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

указывающее, что для этого домена нет записи DNS

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

выйдите из виртуальной машины

exit

Создать запись CNAME

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

Теперь, когда вы создали запись CNAME, вы сможете проверить разрешение DNS.

SSH снова подключитесь к вашей машине

gcloud compute ssh codelab --zone=us-central1-a

запросить ваш домен

dig www.my-domain.com.

вы должны были получить вывод, аналогичный

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

О, нет! Похоже, при создании записи CNAME с флагом «–rrdatas» произошла опечатка. Вместо того, чтобы удалять и заново создавать запись, мы можем внести правильное изменение.

выйти из экземпляра виртуальной машины

exit

Исправьте запись CNAME.

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

Обратите внимание, что мы можем опустить флаг «–ttl», поскольку мы его не меняем, но все остальные флаги должны быть включены, поскольку они являются частью универсального уникального идентификатора ResourceRecordSet.

Мы также можем проверить, соответствует ли запись ожидаемому, с помощью gcloud.

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

который должен производить результат

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

убедитесь, что запись CNAME разрешается правильно

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

вы должны были получить вывод, аналогичный

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com.                IN        A

;; ANSWER SECTION:
www.my-domain.com.        60        IN        CNAME         my-domain.com..
...

УДАЛИТЬ, чтобы очистить

Прежде чем ManagedZone можно будет удалить, необходимо сначала удалить все наборы ResourceRecordSets в ManagedZone (за исключением записей NS и SOA, которые генерируются автоматически и всегда должны существовать в ManagedZone).

выйти из экземпляра виртуальной машины

exit

Удалить запись CNAME

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

Удалить запись А

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

Удалить управляемую зону

gcloud dns managed-zones delete "my-zone"

5. Поздравления

Поздравляем, вы успешно научились управлять своими наборами ResourceRecordSets!

Дальнейшее чтение

Справочная документация