Интеграция Cloud DNS и корпоративного сервиса DNS
Если у вас есть собственные корпоративные сети, связанные с внутренними сетями в вашем облаке Yandex Cloud (например, с помощью сервиса Cloud Interconnect), то можно интегрировать сервис Cloud DNS с корпоративным DNS. Это позволит обращаться к ресурсам и сервисам по имени независимо от их расположения: в корпоративной или облачной сетях.
Делегировать управление DNS-записями во внутренних зонах Yandex Cloud вашим DNS-серверам в корпоративной сети не получится, т. к. NS-записи для внутренней зоны игнорируются. Для того, чтобы распознавание имен сервисов и ресурсов в облачных сетях выполнялось при использовании внутренних зон, настройте отдельные DNS-форвардеры в облачных подсетях. DNS-форвардеры — серверы DNS, которые по-разному перенаправляют запросы в зависимости от имени, указанного в запросе.
Примечание
Далее в качестве примера таких серверов взяты широко известные CoreDNS и unbound. Вы можете использовать любой другой 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
Эти серверы обслуживают зону 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
.
- В блоке Сетевые настройки:
- Публичный адрес: без адреса.
- Внутренний адрес: выберите Вручную и укажите:
- 172.16.3.5 — для ВМ
forwarder1
; - 172.16.4.5 — для ВМ
forwarder2
.
- 172.16.3.5 — для ВМ
- Имя:
-
Для подключения из интернета и проверки сервиса в подсети
subnet4
создайте еще одну ВМ из публичного образа Ubuntu 20.04 с параметрами:- Имя:
test1
. - В блоке Сетевые настройки:
- Публичный адрес: Автоматически.
- Внутренний адрес: Автоматически.
- Имя:
-
Для установки ПО из интернета в подсетях
subnet3
иsubnet4
настройте NAT-шлюз.
Настройте DNS в облаке
Установите DNS-форвардеры
-
Подключитесь к ВМ для установки DNS-форвардера через промежуточную ВМ
test1
. -
Скачайте актуальную версию
CoreDNS
со страницы производителя и установите ее:cd /var/tmp && wget <URL пакета> -O - | tar -zxvf sudo mv coredns /usr/local/sbin
-
Создайте файл конфигурации
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 }
-
Настройте автоматический запуск
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
-
Отключите системную службу распознавания имен 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-форвардер:
sudo tee --append /etc/unbound/unbound.conf <скопируйте блок unbound.conf> sudo systemctl restart unbound
unbound.conf для forwarder1server: 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 для forwarder2server: 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
-
Отключите системную службу распознавания имен 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
. -
В блоке Проверка состояния укажите параметры:
CoreDNSunbound- Тип:
HTTP
. - Путь:
/health
. - Порт:
8080
.
- Тип:
TCP
. - Порт:
53
.
- Тип:
-
При создании балансировщика ему будет автоматически назначен IP-адрес из подсети subnet3
.
Примечание
Внутренний сетевой балансировщик не будет отвечать на DNS-запросы от форвардеров, из которых состоит его целевая группа: forwarder1
и forwarder2
. Это связано с особенностями реализации, подробнее см. в разделе Внутренний сетевой балансировщик нагрузки.
Настройте сервис DHCP
Чтобы хосты в облачной сети автоматически использовали корпоративный сервис DNS, в настройках DHCP для подсетей subnet3
и subnet4
укажите:
- Адрес DNS-сервера: 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
и повторите проверки.
Удалите неиспользуемые ресурсы
- Если какие-либо из созданных ВМ вам больше не нужны, удалите их.
- Удалите целевые группы, обработчики и сетевой балансировщик.