Перейти к основному содержимому

Настроить 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.

  1. Добавьте сервисного пользователя с ролью member.

  2. Для добавленного сервисного пользователя получите IAM-токен для проекта.

  3. Откройте CLI.

  4. Выполните 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> — значения записи.
  5. Если вы хотите подключить сеть к зоне, выполните 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.
  6. Если вы хотите подключить сеть к приватному 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 сети, можно скопировать в панели управления: в верхнем меню нажмите ПродуктыОблачные серверыСеть → вкладка Приватные сети → в карточке сети нажмите .
  7. Если на шаге 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.

    7.3. Измените DNS-серверы в каждой из подсетей этой сети.