Как настроить перенаправление с помощью DNS?

У меня есть такой вопрос: у меня есть внешний домен example.ru и внутренний домен example.local. Я развернул сайт и хочу, чтобы он был доступен внутри сети по адресу site.example.ru. Как это можно реализовать для всех пользователей домена через DNS-сервер, аналогично тому, как работает локальный файл hosts? <br/> Создание отдельной зоны для каждого сайта кажется очень неудобным и в будущем приведет к путанице. <br/> Я предпочел бы, чтобы трафик обрабатывался на локальном DNS, а не на шлюзе. <br/> При создании отдельной зоны example.ru перестают работать правила, установленные у провайдера. <br/> Как в этом случае можно правильно организовать работу? Следует ли создать зону example.ru и дублировать все записи от провайдера, или существует способ, при котором, если в моем локальном DNS не будет записи, он будет автоматически обращаться к DNS провайдера?
  • 26 октября 2024 г. 8:52
Ответы на вопрос 2
Для организации перенаправления домена внутри сети с использованием вашего локального DNS-сервера вы можете следовать следующим рекомендациям.

### Основные варианты:

1. **Создание отдельной зоны на вашем локальном DNS-сервере**:
   - Если вы создадите зону `example.ru` на своем локальном DNS-сервере, вы сможете добавлять записи для `site.example.ru` и других поддоменов. Однако в этом случае вам нужно будет вручную дублировать все записи от вашего провайдера, иначе пользователи внутри сети не смогут разрешать другие записи на `example.ru`.

2. **Использование перенаправления (Delegation)**:
   - Если ваш локальный DNS-сервер поддерживает возможность делегирования, вы можете делегировать часть зон (например, `site.example.ru`) к своему DNS-серверу, при этом основные записи будут все еще обрабатываться DNS-серверами вашего провайдера. Однако, это обычно требует конфигурации на стороне реестра вашего домена.

3. **Настройка резервного DNS**:
   - Некоторые локальные DNS-серверы могут быть настроены на использование вызовов к внешним DNS-серверам (например, через Forwarding или Conditional Forwarding). Это означает, что если ваш локальный DNS-сервер не сможет разрешить адрес, он будет обращаться к DNS-провайдеру. Эта опция наиболее удобна, так как вам не придется дублировать все записи, и вы сможете добавлять свои собственные записи только для тех адресов, которые вам нужны.

### Настройка Conditional Forwarding (если поддерживается):

1. На вашем локальном DNS-сервере найдите настройки для `Forwarders` или `Conditional Forwarding`.
2. Укажите адреса DNS-серверов вашего провайдера для обработки запросов к `example.ru` и других соответствующих поддоменов.
3. После этого добавьте запись `A` для `site.example.ru` в локальном DNS, указывая на внутренний IP-адрес вашего сайта.
4. Убедитесь, что ваш локальный DNS-сервер обрабатывает запросы к `example.ru` через ваш провайдер, если необходимые записи отсутствуют в вашем локальном DNS.

### Пример использования:

Допустим, у вас есть локальный DNS-сервер, который поддерживает Conditional Forwarding. В этом случае пошаговая настройка может выглядеть так:

1. В разделе настроек DNS найдите параметр "Forwarding".
2. Добавьте новый Forwarding для `example.ru`, указывая IP-адреса DNS-серверов вашего регистратора/провайдера.
3. Создайте запись `A` для `site.example.ru`, указывая на внутренний адрес сервера, на котором развернут ваш сайт.

### Заключение:

Использование Conditional Forwarding на локальном DNS-сервере — это наиболее оптимальный и гибкий способ сохранить работоспособность записям от вашего провайдера, обеспечивая при этом возможность добавления собственных локальных записей. Это позволит избежать путаницы и сложностей с дублированием записей, сохраняя при этом возможность доступа к вашему ресурсу через `site.example.ru` внутри сети.
Примерно так: 
Глобальный DNS        <- | <-            Локальный DNS
example.ru -> внешний IP | example.ru -> внутренний IP

Т.е., в вашем локальном DNS для вашего домена и/или поддоменов просто добавляете запись с внутренним IP адресом. При этом локальный DNS так же использует и вышестоящий глобальный DNS. Т.е., если записи нет в локальном - он переадресует запрос в глобальный DNS, если запись есть - он её отдаст.
Похожие вопросы