Настроить DNS в приватной сети облачной платформы
Для настройки DNS в приватной сети облачной платформы вы создаете приватную зону с ресурсными записями. Затем подключаете сеть к приватной зоне и подключаете сеть к приватному DNS-резолверу.
Если вам нужно настроить DNS в приватной сети выделенных серверов, подключение выполняется через глобальный роутер, подробнее в инструкции Настроить DNS в приватной сети выделенного сервера.
Подключение сети к зоне и подключение сети к DNS-резолверу выполняются независимо друг от друга. Вы можете не выполнять эти подключения, выполнить одно или оба в зависимости от ваших целей и особенностей вашей инфраструктуры:
- если сеть подключена к зоне, при добавлении или изменении порта в этой сети для него автоматически создается или обновляется A- или AAAA-запись. Полное доменное имя порта в записи формируется как
<server_name>.<zone_domain_name>., где<server_name>— имя сервера,<zone_domain_name>— доменное имя зоны. Вы можете изменить доменное имя порта вручную, при этом запись в зоне обновится автоматически; - если сеть подключена к DNS-резолверу, серверы в этой сети могут резолвить доменные имена всех зон в рамках своего пула и проекта.
Настроить приватный DNS
Настройка DNS выполняется через API, для аутентификации запросов используется IAM-токен для проекта. Полный список API-методов для работы с сервисом смотрите в Private DNS API.
-
Добавьте сервисного пользователя с ролью
member. -
Для добавленного сервисного пользователя получите IAM-токен для проекта.
-
Откройте CLI.
-
Выполните API-запрос, чтобы создать приватную зону с записями. Записи можно будет создать позднее:
curl -X POST \
https://<pool>.cloud.api.selcloud.ru/private-dns/v1/zones \
-H "X-Auth-Token: <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "<zone_name>",
"ttl": <ttl>,
"domain": "<domain_name>.",
"records": [
{
"type": "<record_type>",
"domain": "<subdomain>.<zone_domain_name>.",
"ttl": <record_ttl>,
"values": [
<value1>,<value2>
]
}
]
}'Укажите:
-
<pool>— пул, в котором находится приватная сеть, напримерru-3; -
<token>— IAM-токен для проекта, который вы получили на шаге 2; -
<zone_name>— имя зоны; -
<zone_ttl>— TTL зоны в секундах, по умолчанию 3600. TTL — время, в течение которого ресурсная запись зоны в кэше DNS-сервера считается актуальной и не требует повторного кэширования; -
<zone_domain_name>— доменное имя зоны, напримерexample. Может содержать цифры, латинские буквы и дефисы; -
опционально: добавьте блок
<"records">с информацией о ресурсных записях в зоне. Записи можно будет создать и изменить в любой момент после создания зоны. Записи указываются группами по типам, для каждой группы укажите:<record_type>— тип записи:A,AAAA,MX,TXT,CNAME;<subdomain>— доменное имя порта, напримерfirst. Может содержать цифры, латинские буквы и дефисы;<record_ttl>— TTL записи в секундах, по умолчанию 3600. Чтобы запись наследовала TTL зоны, укажите-1;<value1>,<value2>— значен ия записи.
-
-
Если вы хотите подключить сеть к зоне, выполните API-запрос:
curl -X PUT \
https://<pool>.cloud.api.selcloud.ru/network/v2.0/networks/<network_id> \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"network": {
"dns_domain": "zone_domain_name"
}
}'Укажите:
<pool>— пул, в котором будет создана зона, напримерru-3;<zone_domain_name>— доменное имя зоны, которое задали на шаге 4.
-
Если вы хотите подключить сеть к приватному DNS-резолверу, выполните API-запрос:
curl -X POST \
https://<pool>.cloud.api.selcloud.ru/private-dns/v1/services \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"network_id": "<network>"
}'Укажите:
<pool>— пул, в котором находится сеть, напримерru-3;<network>— ID сети, можно скопировать в панели управления: в верхнем меню нажмите Продукты → Облачные серверы → Сеть → вкладка Приватные сети → в карточке сети нажмите .
-
Если на шаге 6 вы подключили сеть к приватному DNS-резолверу, укажите IP-адреса резолвера в настройках подсетей этой сети:
7.1. Посмотрите ID подключения к DNS-резолверу, для этого выполните API-запрос списка подключений:
curl -X GET \
https://<pool>.cloud.api.selcloud.ru/private-dns/v1/services \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \Укажите
<pool>— пул, в котором находится сеть, напримерru-3.7.2. Посмотрите IP-адреса DNS-резолвера в подсети, для этого выполните API-запрос:
curl -X GET \
https://ru-1.cloud.api.selcloud.ru//private-dns/v1/services/<service> \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \Укажите:
<pool>— пул, в котором находится сеть, напримерru-3;<service>— ID подключения к DNS-резолверу, который посмотрели на шаге 7.1.
IP-адреса резолвера указаны в поле
address.