Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
  • Интернет-магазины
  • Хранение и восстановление данных
  • Тестовая среда
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
  • Продукты Microsoft в Yandex Cloud
  • Сетевая инфраструктура
  • Визуализация и анализ данных
  • Интернет вещей
  • Бессерверные технологии
  1. Управление инфраструктурой
  2. Интеграция Cloud DNS и корпоративного сервиса DNS

Интеграция Cloud DNS и корпоративного сервиса DNS

Статья создана
Yandex Cloud
  • Пример интеграции
  • Перед началом работы
  • Настройте DNS в облаке
    • Установите DNS-форвардеры
    • Настройте сетевой балансировщик
    • Настройте сервис DHCP
  • Настройте корпоративные серверы DNS
  • Проверьте работу сервиса
  • Удалите неиспользуемые ресурсы

Если у вас есть собственные корпоративные сети, связанные с внутренними сетями в вашем облаке Yandex Cloud (например, с помощью сервиса Cloud Interconnect), то можно интегрировать сервис Cloud DNS с корпоративным DNS. Это позволит обращаться к ресурсам и сервисам по имени независимо от их расположения: в корпоративной или облачной сетях.

Делегировать управление DNS-записями во внутренних зонах Yandex Cloud вашим DNS-серверам в корпоративной сети не получится, т. к. NS-записи для внутренней зоны игнорируются. Для того, чтобы распознавание имен сервисов и ресурсов в облачных сетях выполнялось при использовании внутренних зон, настройте отдельные DNS-форвардеры в облачных подсетях. DNS-форвардеры — серверы DNS, которые по-разному перенаправляют запросы в зависимости от имени, указанного в запросе.

Примечание

Далее в качестве примера таких серверов взяты широко известные CoreDNS и unbound. Вы можете использовать любой другой DNS-форвардер.

Чтобы настроить распознавание имен корпоративных сервисов и ресурсов в облачных сетях Yandex Cloud:

  • Ознакомьтесь с описанием примера интеграции.
  • Настройте DNS в облаке.
  • Настройте корпоративные серверы DNS.
  • Проверьте работу сервиса.

Если созданные ресурсы вам больше не нужны, удалите их.

Пример интеграции

  1. Корпоративная сеть состоит из двух подсетей: 172.16.1.0/24 и 172.16.2.0/24.

  2. В этих подсетях размещено по одному DNS-серверу:

    • 172.16.1.5: ns1.corp.example.net
    • 172.16.2.5: ns2.corp.example.net

    Эти серверы обслуживают зону corp.example.net.

  3. Облачная сеть Yandex Cloud также состоит из двух подсетей:

    • 172.16.3.0/24: subnet3, зона доступности ru-central1-a
    • 172.16.4.0/24: subnet4, зона доступности ru-central1-b

    В этих подсетях размещены DNS-серверы Yandex Cloud: 172.16.3.2 и 172.16.4.2.

    Эти серверы обслуживают внутренние зоны DNS в облачной сети.

  4. Корпоративная и облачная сети связаны между собой так, что все подсети одной сети доступны из подсетей другой сети и наоборот.

Далее будут настроены два DNS-форвардера в облачной сети:

  • 172.16.3.5: forwarder1.internal
  • 172.16.4.5: forwarder2.internal

Они будут перенаправлять DNS-запросы следующим образом:

  • Запросы к зоне corp.example.net — через корпоративные DNS-серверы 172.16.1.5 и 172.16.2.5.
  • Все прочие запросы (к зоне .) — через внутренние DNS-серверы Yandex Cloud, соответствующим подсетям: 172.16.3.2 и 172.16.4.2.

Для обеспечения отказоустойчивости работы DNS-форвардеров, они будут размещены за внутренним сетевым балансировщиком Yandex Network Load Balancer. Все запросы к DNS-форвардерам (как из облачной сети, так и из корпоративной сети) будут выполняться через этот балансировщик.

Перед началом работы

  1. Для установки DNS-форвардеров в каждой из облачных подсетей subnet3 и subnet4 создайте ВМ из публичного образа Ubuntu 20.04 с параметрами:

    • Имя:
      • forwarder1 — для ВМ в подсети subnet3;
      • forwarder2 — для ВМ в подсети subnet4.
    • В блоке Сетевые настройки:
      • Публичный адрес: без адреса.
      • Внутренний адрес: выберите Вручную и укажите:
        • 172.16.3.5 — для ВМ forwarder1;
        • 172.16.4.5 — для ВМ forwarder2.
  2. Для подключения из интернета и проверки сервиса в подсети subnet4 создайте еще одну ВМ из публичного образа Ubuntu 20.04 с параметрами:

    • Имя: test1.
    • В блоке Сетевые настройки:
      • Публичный адрес: Автоматически.
      • Внутренний адрес: Автоматически.
  3. Для установки ПО из интернета в подсетях subnet3 и subnet4 настройте NAT-шлюз.

Настройте DNS в облаке

  1. Установите DNS-форвардеры.
  2. Настройте сетевой балансировщик.
  3. Настройте сервис DHCP.

Установите DNS-форвардеры

CoreDNS
unbound
  1. Подключитесь к ВМ для установки DNS-форвардера через промежуточную ВМ test1.

  2. Скачайте актуальную версию CoreDNS со страницы производителя и установите ее:

    cd /var/tmp && wget <URL пакета> -O - | tar -zxvf
    sudo mv coredns /usr/local/sbin
    
  3. Создайте файл конфигурации CoreDNS:

    sudo mkdir /etc/coredns
    sudo tee /etc/coredns/Corefile
    <скопируйте блок Corefile>
    

    Corefile для forwarder1

    corp.example.net {
      forward . 172.16.1.5 172.16.2.5
    }
    . {
      forward . 172.16.3.2
      health
    }
    

    Corefile для forwarder2

    corp.example.net {
      forward . 172.16.1.5 172.16.2.5
    }
    . {
      forward . 172.16.4.2
      health
    }
    

  4. Настройте автоматический запуск CoreDNS:

    sudo tee /etc/systemd/system/coredns.service
    <скопируйте блок coredns.service>
    sudo systemctl enable --now coredns
    
    coredns.service
    [Unit]
    Description=CoreDNS
    After=network.target
    
    [Service]
    User=root
    ExecStart=/usr/local/sbin/coredns -conf /etc/coredns/Corefile
    StandardOutput=append:/var/log/coredns.log
    StandardError=append:/var/log/coredns.log
    RestartSec=5
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  5. Отключите системную службу распознавания имен DNS, чтобы ее функции выполнял локальный DNS-форвардер. В Ubuntu 20.04 это можно сделать командами:

    sudo systemctl disable --now systemd-resolved
    rm /etc/resolv.conf
    echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
    
  1. Подключитесь к ВМ DNS-форвардера через промежуточную ВМ test1.

  2. Установите пакет unbound:

    sudo apt update && sudo apt install --yes unbound
    
  3. Настройте и перезапустите DNS-форвардер:

    sudo tee --append /etc/unbound/unbound.conf
    <скопируйте блок unbound.conf>
    sudo systemctl restart unbound
    
    unbound.conf для forwarder1
    server:
      module-config: "iterator"
      interface: 0.0.0.0
      access-control: 127.0.0.0/8   allow
      access-control: 172.16.0.0/21 allow
    
    forward-zone:
      name: "corp.example.net"
      forward-addr: 172.16.1.5
      forward-addr: 172.16.2.5
    
    forward-zone:
      name: "."
      forward-addr: 172.16.3.2
    
    unbound.conf для forwarder2
    server:
      module-config: "iterator"
      interface: 0.0.0.0
      access-control: 127.0.0.0/8   allow
      access-control: 172.16.0.0/21 allow
    
    forward-zone:
      name: "corp.example.net"
      forward-addr: 172.16.1.5
      forward-addr: 172.16.2.5
    
    forward-zone:
      name: "."
      forward-addr: 172.16.4.2
    
  4. Отключите системную службу распознавания имен DNS, чтобы ее функции выполнял локальный DNS-форвардер. В Ubuntu 20.04 это можно сделать командами:

    sudo systemctl disable --now systemd-resolved
    rm /etc/resolv.conf
    echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
    

Настройте сетевой балансировщик

Создайте сетевой балансировщик с параметрами:

  • Тип: Внутренний.

  • В блоке Обработчики:

    • Подсеть: выберите subnet3 из списка.
    • Протокол: UDP.
    • Порт: 53.
    • Целевой порт: 53.
  • В блоке Целевые группы:

    • Создайте группу, состоящую из хостов forwarder1 и forwarder2.

    • В блоке Проверка состояния укажите параметры:

      CoreDNS
      unbound
      • Тип: HTTP.
      • Путь: /health.
      • Порт: 8080.
      • Тип: TCP.
      • Порт: 53.

При создании балансировщика ему будет автоматически назначен IP-адрес из подсети subnet3.

Примечание

Внутренний сетевой балансировщик не будет отвечать на DNS-запросы от форвардеров, из которых состоит его целевая группа: forwarder1 и forwarder2. Это связано с особенностями реализации, подробнее см. в разделе Внутренний сетевой балансировщик нагрузки.

Настройте сервис DHCP

Чтобы хосты в облачной сети автоматически использовали корпоративный сервис DNS, в настройках DHCP для подсетей subnet3 и subnet4 укажите:

  1. Адрес DNS-сервера: IP-адрес, который был назначен балансировщику.
  2. (Опционально) Доменное имя: corp.example.net.

Чтобы обновить сетевые настройки на хостах forwarder1, forwarder2 и test1, выполните команду:

sudo netplan apply

После обновления сетевых настроек хосты в облачной сети будут использовать балансировщик вместо сервера DNS Yandex Cloud.

Настройте корпоративные серверы DNS

Настройте корпоративные серверы так, чтобы DNS-запросы к внутренним зонам Yandex Cloud направлялись на IP-адрес, который был назначен балансировщику.

Проверьте работу сервиса

  1. Проверьте, что на облачных хостах forwarder1, forwarder2 и test1 выполняется распознавание имен во внутренней зоне corp.example.net:

    host ns1.corp.example.net
    ns1.corp.example.net has address 172.16.1.5
    
  2. Проверьте, что на облачных хостах forwarder1, forwarder2 и test1 выполняется распознавание имен в публичных зонах, например:

    host cisco.com
    cisco.com has address 72.163.4.185
    ...
    
  3. Проверьте, что на корпоративных DNS-серверах ns1 и ns2 выполняется распознавание внутренних имен Yandex Cloud, например:

    host ns.internal
    ns.internal has address 10.130.0.2
    
  4. Чтобы убедиться, что сервисы запускаются автоматически, перезапустите ВМ forwarder1, forwarder2 и test1 и повторите проверки.

Удалите неиспользуемые ресурсы

  • Если какие-либо из созданных ВМ вам больше не нужны, удалите их.
  • Удалите целевые группы, обработчики и сетевой балансировщик.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Пример интеграции
  • Перед началом работы
  • Настройте DNS в облаке
  • Установите DNS-форвардеры
  • Настройте сетевой балансировщик
  • Настройте сервис DHCP
  • Настройте корпоративные серверы DNS
  • Проверьте работу сервиса
  • Удалите неиспользуемые ресурсы