1. Введение
Последнее обновление: 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!