Разрешение облачных DNS-имен в корпоративной сети
Если у вас есть собственные корпоративные сети, связанные с облачными сетями Yandex Cloud (например, с помощью сервиса Yandex Cloud Interconnect), то вы можете интегрировать корпоративный DNS с внутренними DNS-зонами в Yandex Cloud и реализовать разрешение DNS-имен облачных ресурсов в ваших корпоративных сетях. Это позволит по имени обращаться к облачным ресурсам и сервисам Yandex Cloud из корпоративных сетей.
Чтобы настроить разрешение внутренних облачных DNS-имен клиентами в вашей корпоративной сети, вы создадите на стороне Yandex Cloud входящее DNS-подключение, которое будет перенаправлять DNS-запросы из корпоративной сети на DNS-резолверы в подсетях Virtual Private Cloud. На стороне корпоративной сети вы настроите DNS-сервер так, чтобы все DNS-запросы к облачным ресурсам направлялись на IP-адрес созданного входящего DNS-подключения.
В данном сценарии пользователь, подключенный к корпоративной сети в subnet1, разрешает DNS-имя хоста в кластере Yandex Managed Service for PostgreSQL, отправляя DNS-запросы через локальный DNS-форвардер.
Схема решения:
-
Корпоративная сеть:
-
Состоит из подсети
subnet1с диапазоном адресов172.16.1.0/24. -
В подсети
subnet1размещен DNS-сервер (DNS-форвардер) с IP-адресом172.16.1.200.Этот сервер обслуживает DNS-зону в подсети
subnet1и перенаправляет DNS-запросы компьютера пользователя с IP-адресом172.16.1.10в облачную сеть на IP-адрес входящего DNS-подключения, созданного на стороне Yandex Cloud.
-
-
Облачная сеть Yandex Cloud:
-
Состоит из подсети
subnet2с диапазоном адресов192.168.1.0/24. -
В подсети
subnet2расположен кластер Yandex Managed Service for PostgreSQL.В этом руководстве вы настроите интеграцию таким образом, чтобы DNS-имя (FQDN) хоста этого кластера успешно разрешалось изнутри корпоративной сети.
-
В облачной сети создано входящее DNS-подключение, позволяющее клиентам из корпоративной сети разрешать DNS-имена во внутренних DNS-зонах Yandex Cloud.
Входящему DNS-подключению присвоен IP-адрес
192.168.1.200, относящийся к подсетиsubnet2и зарезервированный в сервисе Yandex Virtual Private Cloud.
-
-
С помощью сервиса Yandex Cloud Interconnect корпоративная и облачная сети связаны между собой так, что все IP-адреса подсети в одной сети доступны из подсети в другой сети и наоборот.
Чтобы настроить разрешение DNS-имен облачных ресурсов и сервисов Yandex Cloud в корпоративных сетях:
- Подготовьте облако к работе.
- Настройте облачную инфраструктуру.
- Настройте корпоративную сеть.
- Проверьте работу интеграции.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки создаваемой инфраструктуры входят:
- Плата за ресурсы кластера Managed Service for PostgreSQL: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (тарифы Managed Service for PostgreSQL).
- Плата за использование сервиса Yandex Cloud Interconnect (тарифы Cloud Interconnect).
Настройте облачную инфраструктуру
На стороне Yandex Cloud вы создадите облачную сеть с одной подсетью, кластер Managed Service for PostgreSQL с одним хостом и входящее DNS-подключение.
Создайте облачную сеть
- В консоли управления
выберите каталог, в котором вы будете создавать облачную инфраструктуру. - Перейдите в сервис Virtual Private Cloud и нажмите кнопку Создать сеть.
- В поле Имя задайте имя облачной сети
my-vpc-network. - Отключите опцию Создать подсети.
- Нажмите Создать сеть.
Создайте подсеть
- В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. - Перейдите в сервис Virtual Private Cloud.
- На панели слева выберите
Подсети и нажмите кнопку Создать подсеть. - В поле Имя задайте имя подсети
subnet2. - В поле Зона доступности выберите зону доступности
ru-central1-b. - В поле Сеть выберите облачную сеть
my-vpc-network, созданную ранее. - В поле CIDR задайте CIDR подсети
192.168.1.0/24. - Нажмите Создать подсеть.
Создайте кластер Yandex Managed Service for PostgreSQL
-
В консоли управления
выберите каталог, в котором вы создаете инфраструктуру. -
Перейдите в сервис Managed Service for PostgreSQL и нажмите кнопку Создать кластер.
-
В поле Имя кластера задайте имя кластера
my-postgresql-cluster. -
В блоке База данных в поле Пароль выберите
Сгенерировать. -
В блоке Сетевые настройки выберите созданную ранее облачную сеть
my-vpc-network. -
В блоке Хосты оставьте один хост в зоне доступности
ru-central1-b.Чтобы удалить лишние хосты, в строке с соответствующим хостом нажмите значок
и выберите Удалить.Совет
Одного хоста достаточно, чтобы проверить работу рассматриваемого решения.
В рабочих сценариях не рекомендуется создавать кластер из одного хоста. Такой кластер обходится дешевле, но не обеспечивает высокую доступность.
-
Значения остальных параметров оставьте без изменений и нажмите кнопку Создать кластер.
Создайте входящее DNS-подключение
Создайте входящее DNS-подключение, через которое клиенты из корпоративной сети смогут разрешать DNS-имена во внутренних DNS-зонах Yandex Cloud:
-
В консоли управления
перейдите на страницу каталога, в котором вы создаете инфраструктуру. -
Перейдите в сервис Cloud DNS.
-
На панели слева выберите
Входящие подключения и нажмите кнопку Создать подключение. В открывшемся окне:-
В поле Имя задайте имя
corp-example-net-inbound. -
В блоке Сетевые настройки в поле Сеть выберите облачную сеть
my-vpc-network. -
В поле IP-адрес нажмите кнопку Зарезервировать, чтобы зарезервировать статический внутренний IP-адрес для создаваемого DNS-подключения. В открывшемся окне:
-
В поле Имя задайте имя резервируемого адреса
corp-example-net-inbound-address. -
В поле Подсеть выберите подсеть
subnet2, в которой будет зарезервирован IP-адрес.Примечание
IP-адрес входящего DNS-подключения может относиться к любой из подсетей в выбранной облачной сети. При этом указывать IP-адреса, уже используемые ресурсами Yandex Cloud, нельзя.
-
В поле Внутренний IPv4 адрес задайте IP-адрес
192.168.1.200(относится к диапазону адресов подсетиsubnet2). -
Нажмите кнопку Создать, чтобы зарезервировать адрес.
-
-
-
Нажмите кнопку Создать, чтобы создать входящее DNS-подключение.
Настройте корпоративную сеть
Настройте корпоративную сеть так, чтобы DNS-запросы к внутренним зонам Yandex Cloud направлялись на зарезервированный внутренний IP-адрес 192.168.1.200, который был назначен входящему DNS-подключению.
Например, в корпоративной подсети вы можете создать DNS-форвардер и задать его IP-адрес в качестве адреса основного DNS-сервера на сетевых интерфейсах клиентов в корпоративной подсети subnet1. Для создания DNS-форвардеров рекомендуем использовать утилиты CoreDNS
Пример настройки DNS-форвардера
-
Подключитесь к хосту, на котором будет настроен DNS-форвардер.
-
Скачайте актуальную версию
CoreDNSсо страницы производителя и установите ее:cd /var/tmp && wget <URL_пакета> -O - | tar -xz sudo mv coredns /usr/local/sbin -
Создайте файл конфигурации
CoreDNS:sudo mkdir /etc/coredns sudo tee >> /etc/coredns/Corefile <<EOF mdb.yandexcloud.net { forward . 192.168.1.200 } . { forward . <IP-адрес_основного_DNS-сервера_в_корпоративной_подсети> } 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-форвардер. Например, в ОС Linux 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-форвардер.
-
Установите пакет
unbound(приведен пример для ОС Linux Ubuntu):sudo apt update && sudo apt install --yes unbound -
Создайте файл конфигурации
unbound: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: 192.168.0.0/21 allow forward-zone: name: "mdb.yandexcloud.net" forward-addr: 192.168.1.200 forward-zone: name: "." forward-addr: <IP-адрес_основного_DNS-сервера_в_корпоративной_подсети> EOF -
Перезапустите Unbound:
sudo systemctl restart unbound -
Отключите системную службу распознавания имен DNS, чтобы ее функции выполнял локальный DNS-форвардер. Например, в ОС Linux Ubuntu 20.04 это можно сделать с помощью команд:
sudo systemctl disable --now systemd-resolved rm /etc/resolv.conf echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
Проверьте работу интеграции
-
Получите FQDN хоста созданного ранее кластера
my-postgresql-cluster.О том, как узнать FQDN хоста, читайте в разделе FQDN хостов PostgreSQL.
-
Убедитесь, что с компьютера в корпоративной сети выполняется разрешение имен во внутренней DNS-зоне Yandex Cloud
mdb.yandexcloud.net. Для этого выполните команду, указав в ней FQDN хоста кластера.Например:
host rc1d-oсfgp28n0k358fj1.mdb.yandexcloud.netРезультат:
rc1d-oсfgp28n0k358fj1.mdb.yandexcloud.net has address 192.168.1.20 -
Убедитесь, что на компьютере в корпоративной сети выполняется разрешение имен в публичных зонах, например:
host cisco.comРезультат:
cisco.com has address 72.163.4.185 ...
Как удалить созданные ресурсы
Чтобы перестать платить за ресурсы:
- удалите кластер Managed Service for PostgreSQL;
- удалите входящее DNS-подключение;
- удалите зарезервированный внутренний IP-адрес;
- удалите подсеть;
- удалите облачную сеть.
Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
DNS-форвардер — это специальный DNS-сервер, который по-разному перенаправляет DNS-запросы в зависимости от доменного имени, указанного в запросе.