Интеграция Cloud DNS и корпоративного сервиса DNS
Если у вас есть собственные корпоративные сети, связанные с внутренними сетями в вашем облаке 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, зона доступностиru-central1-a
.172.16.4.0/24
: subnet4, зона доступностиru-central1-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
.
- В блоке Сетевые настройки:
- Публичный адрес:
Без адреса
. - Внутренний IPv4-адрес: выберите
Вручную
и укажите:- 172.16.3.5 — для ВМ
forwarder1
; - 172.16.4.5 — для ВМ
forwarder2
.
- 172.16.3.5 — для ВМ
- Публичный адрес:
- Имя:
-
Для подключения из интернета и проверки сервиса в подсети
subnet4
создайте еще одну ВМ из публичного образа Ubuntu 20.04 с параметрами:- Имя:
test1
. - В блоке Сетевые настройки:
- Публичный адрес:
Автоматически
. - Внутренний IPv4-адрес:
Автоматически
.
- Публичный адрес:
- Имя:
-
Для установки ПО из интернета в подсетях
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 EOF
unbound.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-шлюз;
- удалите сети.