Интеграция Cloud DNS и корпоративного сервиса DNS
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
Если у вас есть собственные корпоративные сети, связанные с внутренними сетями в вашем облаке Yandex Cloud с помощью сервиса Yandex Cloud Interconnect, то можно интегрировать корпоративный DNS с Cloud DNS. Это позволит обращаться к ресурсам и сервисам по имени независимо от их расположения: в корпоративной или облачной сетях.
Делегировать управление DNS-записями во внутренних зонах Yandex Cloud вашим DNS-серверам в корпоративной сети не получится, так как NS-записи для внутренней DNS-зоны игнорируются. Чтобы распознавание имен сервисов и ресурсов в облачных сетях выполнялось при использовании внутренних зон, настройте отдельные DNS-форвардеры в облачных подсетях. DNS-форвардеры — серверы DNS, которые по-разному перенаправляют запросы в зависимости от имени, указанного в запросе. Рекомендуем использовать CoreDNS
Важно
Некоторые DNS-форвардеры сверяют расположение зон в Cloud DNS со своими настройками при валидации ответа. В этом случае необходимо указать в настройках только зоны, существующие в Cloud DNS. Например, если записи размещены в общей зоне ., настройте переадресацию для нее.
Чтобы настроить распознавание имен корпоративных сервисов и ресурсов в облачных сетях Yandex Cloud:
- Ознакомьтесь с описанием примера интеграции.
- Настройте DNS в облаке.
- Настройте корпоративные серверы DNS.
- Проверьте работу сервиса.
Если созданные ресурсы вам больше не нужны, удалите их.
Пример интеграции
-
Корпоративная сеть состоит из двух подсетей:
172.16.1.0/24и172.16.2.0/24. -
В этих подсетях размещено по одному DNS-серверу:
172.16.1.5: ns1.corp.example.net172.16.2.5: ns2.corp.example.net
Эти серверы обслуживают DNS-зону
corp.example.net. -
Облачная сеть Yandex Cloud также состоит из двух подсетей:
172.16.3.0/24: subnet3, зона доступностиkz1-d.172.16.4.0/24: subnet4, зона доступностиkz1-b.
В этих подсетях размещены DNS-серверы Yandex Cloud:
172.16.3.2и172.16.4.2.Эти серверы обслуживают внутренние DNS-зоны в облачной сети.
-
Корпоративная и облачная сети связаны между собой так, что все подсети одной сети доступны из подсетей другой сети и наоборот.
Далее будут настроены два DNS-форвардера в облачной сети:
172.16.3.5: forwarder1.internal172.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-форвардерам (как из облачной сети, так и из корпоративной сети) будут выполняться через этот балансировщик.
Перед началом работы
-
Для установки DNS-форвардеров в каждой из облачных подсетей
subnet3иsubnet4создайте виртуальную машину из публичного образа Ubuntu 20.04 с параметрами:- Имя:
forwarder1— для ВМ в подсетиsubnet3;forwarder2— для ВМ в подсетиsubnet4.
- В блоке Сетевые настройки:
- Публичный IP-адрес:
Без адреса. - Внутренний IPv4-адрес: выберите
Вручнуюи укажите:- 172.16.3.5 — для ВМ
forwarder1; - 172.16.4.5 — для ВМ
forwarder2.
- 172.16.3.5 — для ВМ
- Публичный IP-адрес:
- Имя:
-
Для подключения из интернета и проверки сервиса в подсети
subnet4создайте еще одну ВМ из публичного образа Ubuntu 20.04 с параметрами:- Имя:
test1. - В блоке Сетевые настройки:
- Публичный IP-адрес:
Автоматически. - Внутренний IPv4-адрес:
Автоматически.
- Публичный IP-адрес:
- Имя:
-
Для установки ПО из интернета в подсетях
subnet3иsubnet4настройте NAT-шлюз.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входят:
- плата за постоянно запущенную виртуальную машину (см. тарифы Yandex Compute Cloud);
- плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за использование сетевого балансировщика (см. тарифы Yandex Network Load Balancer).
Настройте DNS в облаке
Установите DNS-форвардеры
-
Подключитесь к ВМ для установки DNS-форвардера через промежуточную ВМ
test1. -
Скачайте актуальную версию
CoreDNSсо страницы производителя и установите ее:cd /var/tmp && wget <URL_пакета> -O - | tar -zxvf sudo mv coredns /usr/local/sbin -
Создайте файл конфигурации
CoreDNS:-
forwarder1:sudo mkdir /etc/coredns sudo tee >> /etc/coredns/Corefile <<EOF corp.example.net { forward . 172.16.1.5 172.16.2.5 } . { forward . 172.16.3.2 health } EOF -
forwarder2:sudo mkdir /etc/coredns sudo tee >> /etc/coredns/Corefile <<EOF corp.example.net { forward . 172.16.1.5 172.16.2.5 } . { forward . 172.16.4.2 health } EOF
-
-
Настройте автоматический запуск
CoreDNS:sudo tee >> /etc/systemd/system/coredns.service <<EOF [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 EOF sudo systemctl enable --now coredns -
Отключите системную службу распознавания имен 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
-
Подключитесь к ВМ DNS-форвардера через промежуточную ВМ
test1. -
Установите пакет
unbound:sudo apt update && sudo apt install --yes unbound -
Настройте и перезапустите DNS-форвардер:
unbound.conf для forwarder1
sudo tee -a /etc/unbound/unbound.conf <<EOF 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 EOFunbound.conf для forwarder2
sudo tee -a /etc/unbound/unbound.conf <<EOF 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 EOF -
Перезапустите Unbound:
sudo systemctl restart unbound -
Отключите системную службу распознавания имен 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
Настройте сетевой балансировщик Network Load Balancer
Создайте внутренний сетевой балансировщик с параметрами:
Примечание
Обработка UDP-трафика для сетевого балансировщика по умолчанию выключена. Чтобы включить обработку UDP-трафика на сетевом балансировщике, обратитесь в техническую поддержку. Подробнее можно прочитать здесь.
-
Тип:
Внутренний. -
В блоке Обработчики:
- Подсеть: выберите
subnet3из списка. - Протокол:
UDP. - Порт:
53. - Целевой порт:
53.
- Подсеть: выберите
-
В блоке Целевые группы:
-
Создайте группу, состоящую из хостов
forwarder1иforwarder2. -
В блоке Проверка состояния укажите параметры:
CoreDNSUnbound- Тип:
HTTP. - Путь:
/health. - Порт:
8080.
- Тип:
TCP. - Порт:
53.
- Тип:
-
При создании балансировщика ему будет автоматически назначен IP-адрес из подсети subnet3.
Примечание
Внутренний сетевой балансировщик не будет отвечать на DNS-запросы от форвардеров, из которых состоит его целевая группа: forwarder1 и forwarder2. Это связано с особенностями реализации, подробнее см. в разделе Типы сетевых балансировщиков.
Настройте сервис DHCP
Чтобы хосты в облачной сети автоматически использовали корпоративный сервис DNS, в настройках DHCP для подсетей subnet3 и subnet4 укажите:
- Серверы доменных имен: IP-адрес, который был назначен балансировщику.
- (Опционально) Доменное имя:
corp.example.net.
Чтобы обновить сетевые настройки на хостах forwarder1, forwarder2 и test1, выполните команду:
sudo netplan apply
После обновления сетевых настроек хосты в облачной сети будут использовать балансировщик вместо сервера DNS Yandex Cloud.
Настройте корпоративные серверы DNS
Настройте корпоративные серверы так, чтобы DNS-запросы к внутренним зонам Yandex Cloud направлялись на IP-адрес, который был назначен балансировщику.
Проверьте работу сервиса
-
Проверьте, что на облачных хостах
forwarder1,forwarder2иtest1выполняется распознавание имен во внутренней зонеcorp.example.net:host ns1.corp.example.net ns1.corp.example.net has address 172.16.1.5 -
Проверьте, что на облачных хостах
forwarder1,forwarder2иtest1выполняется распознавание имен в публичных зонах, например:host cisco.com cisco.com has address 72.163.4.185 ... -
Проверьте, что на корпоративных DNS-серверах
ns1иns2выполняется распознавание внутренних имен Yandex Cloud, например:host ns.internal ns.internal has address 10.130.0.2 -
Чтобы убедиться, что сервисы запускаются автоматически, перезапустите ВМ
forwarder1,forwarder2иtest1и повторите проверки.
Как удалить созданные ресурсы
Чтобы перестать платить за ресурсы:
- удалите ВМ;
- удалите статические публичные IP-адреса, если вы зарезервировали их специально для своих ВМ;
- удалите целевые группы;
- удалите обработчики;
- удалите сетевой балансировщик;
- удалите подсети;
- удалите таблицу маршрутизации;
- удалите NAT-шлюз;
- удалите сети.