Вопрос или проблема
Стек приложения имеет несколько компонентов, например, API, публичное приложение и внутреннее приложение. Я хочу сделать внутреннее приложение доступным только из внутренних диапазонов IP-адресов. Я настроил свой nginx (обратный прокси), чтобы разрешить только определенные диапазоны IP (например, 192.168.1.0/24). Я использую доменное имя: mydomain.com
Допустим, внутреннее приложение использует поддомен app.mydomain.com
. Также есть веб-сайт (работающий извне) по адресу (www.)mydomain.com
. Внешний DNS (организация) настроен на указание на публичный статический IP моего сервера, который необходим для публичного API (например, api.mydomain.com
).
Но в локальной сети (включая VPN) я хочу направить трафик внутрь. Например, вместо публичного IP ПК должны использовать локальный IP, чтобы только те, кто имеет локальный IP, могли быть допущены обратным прокси nginx. Для этого я настраиваю сервер Windows AD, который также выполняет функции DNS-сервера. Я пытаюсь настроить этот DNS, чтобы направлять компьютеры в сети на сервер во внутренней сети.
Когда я пытаюсь определить первичную зону для mydomain.com с записью для app.mydomain.com, указывающей на адрес внутреннего сервера, nslookup app.mydomain.com
возвращает локальный IP, но mydomain.com
или www.mydomain.com
больше не работают.
Есть ли способ указать для всех остальных поддоменов использовать внешний DNS (организация)?
Когда я пытался настроить вторичную зону, передача не удалась. Я думаю, что авторитет (внешний DNS) не позволяет мне это сделать.
Интересно, как я могу это реализовать?
Вы можете достичь этого, создав первичную зону с именем app.mydomain.com
и создав пустую запись A
в ней, указывающую на внутренний IP-адрес вашего сервера; это работает, потому что пустая запись соответствует имени самой зоны, а не фактическому имени хоста внутри нее.
Таким образом, DNS-сервер будет считать себя авторитетным только для зоны app.mydomain.com
, но не для вышестоящей зоны mydomain.com
; таким образом, запросы ко всем остальным содержимым в зоне будут разрешаться стандартным образом (либо рекурсивно от корневых серверов, либо через пересылку, если вы ее настроите).
Ответ или решение
Конфигурация DNS-сервера Windows для поддомена и редирект всех остальных запросов к внешнему авторитетному DNS
Введение
Построение надежной архитектуры для вашего приложения требует правильно настроенного DNS. В вашем случае вы хотите сделать внутреннее приложение доступным только с локальных IP-адресов, при этом сохранить доступ к внешнему сайту и API.
Задача
Ваше внутреннее приложение находится на поддомене app.mydomain.com
, а внешний веб-сайт — на www.mydomain.com
. Вы столкнулись с проблемой: после создания первичной зоны для mydomain.com
запросы к mydomain.com
и www.mydomain.com
перестали работать, и вам требуется направить их к внешнему авторитетному DNS-серверу.
Решение
Для достижения вашей цели, следуйте данным шагам:
-
Создание первичной зоны для поддомена:
- Запустите
DNS Manager
на вашем Windows сервере. - Щелкните правой кнопкой на
Forward Lookup Zones
и выберитеNew Zone
. - Выберите
Primary Zone
, укажите имя зоныapp.mydomain.com
и завершите создание.
- Запустите
-
Создание записи A для внутреннего сервера:
- После успешного создания зоны
app.mydomain.com
, добавьте запись типа A. - Укажите внутренний IP адрес вашего сервера, например
192.168.1.10
. - Запись будет выглядеть как:
app IN A 192.168.1.10
.
- После успешного создания зоны
-
Решение проблемы с верхнеуровневыми доменами:
- Не создавайте первичные зоны для
mydomain.com
илиwww.mydomain.com
. - Чтобы DNS-сервер оставался авторитетным только для
app.mydomain.com
, рекомендуется настроить отдельную зону для поддомена и оставить запросы для корневого домена на разрешение через внешние DNS-серверы. - Например, вы можете настроить переадресацию (forwarding) для всех неразрешенных DNS-запросов. Для этого:
- В вашем DNS Manager, щелкните правой кнопкой на имя вашего сервера и выберите
Properties
. - Перейдите на вкладку
Forwarders
и добавьте IP-адреса внешних DNS-серверов. Это позволит вашему DNS-серверу разрешать все запросы, которые он не может обработать сам.
- В вашем DNS Manager, щелкните правой кнопкой на имя вашего сервера и выберите
- Не создавайте первичные зоны для
-
Тестирование конфигурации:
- Проверьте работу вашей конфигурации с помощью команды:
nslookup app.mydomain.com nslookup www.mydomain.com
- Запрос
nslookup app.mydomain.com
должен возвращать внутренний IP-адрес, в то время как запросnslookup www.mydomain.com
должен обращаться к внешнему DNS-серверу и возвращать публичный IP вашего веб-сайта.
- Проверьте работу вашей конфигурации с помощью команды:
Заключение
Следуя приведенным шагам, вы получите стабильную и безопасную конфигурацию вашего DNS-сервера, которая позволит защитить внутренний доступ к приложению и направить внешний трафик к соответствующим ресурсам. Правильная архитектура DNS — это основа безопасной и эффективной работы ваших приложений.