Вопрос или проблема
Я уже задавал аналогичный вопрос, который был слишком специфичным (named для внутреннего использования и переадресации специфических поддоменов). Для того вопроса я нашел обходное решение, которое не является приемлемым.
Сейчас я задаю более общий вопрос. Вопрос заключается в том, почему разрешение других зон зависит от конфигурации зоны “.”?
У нас есть DNS, который не имеет доступа в интернет, потому что мы хотим, чтобы он разрешал только локальные доменные имена. Мы хотим, чтобы он разрешал только один внешний домен. Назовем его dmz.example.com. Конфигурация для этой зоны в /etc/named.conf выглядит так:
zone "dmz.example.com" in
{
type forward;
forwarders { 10.100.1.1; 10.100.1.2; }; // DMZ DNS
};
Поскольку мы не хотим, чтобы наш DNS разрешал внешние/интернет-домены, мы сделали это с помощью пустого файла root.servers вот так:
zone "."
{
type hint;
file "root.servers"; // root.server — пустой файл
};
Когда у DNS запрашивают интернет-домен, он сразу же возвращает без ответа, так как root.servers пуст. Для доменов, для которых он мастер или раб, он разрешает их нормально. С этой конфигурацией DNS не разрешает dmz.example.com.
Затем мы изменили конфигурацию зоны “.”. Мы установили ее как зону переадресации для “.”, но переадресатор — несуществующий или недоступный IP. Вот так:
zone "." in
{
type forward;
forwarders { 10.100.100.100; }; // несуществующий IP
};
Когда мы используем эту конфигурацию для зоны “.”, DNS разрешает dmz.example.com, но больше не отвечает сразу на запросы для интернет-доменов. Он ждет таймаут ответа от переадресатора.
Мне это не нравится по двум причинам:
- DNS теперь делает ненужные запросы к несуществующему IP.
- Интернет-домены больше не разрешаются мгновенно без ответа.
Как я могу заставить DNS разрешать dmz.example.com и отвечать на интернет-домены как раньше (мгновенно, без ненужного сетевого трафика)?
Ответ или решение
Вопрос, который вы поднимали, касается важной темы конфигурации DNS-сервера, который должен выполнять специфичные задачи и работать в специализированной сети без доступа к интернету. Для более глубокого понимания проблемы давайте проанализируем теоретическую основу, приведём схожий пример и предложим конкретные решения вашей задачи.
Теория
DNS (Domain Name System) — это фундаментальный элемент сети, который отвечает за преобразование доменных имён в IP-адреса. Существуют различные типы зон в DNS-серверах, например, зоны типа hint
, forward
, master
и slave
. В вашем случае конфигурация зоны .
(точка), иначе называемая корневой зоной, оказывает значительное влияние на поведение всего DNS-сервера.
Когда вы конфигурируете зону .
как hint
с пустым файлом root.servers
, DNS-сервер не имеет информации о корневых серверов и, следовательно, сразу отвечает отказом на запросы, которые не могут быть разрешены локально. Это позволяет избежать ненужных попыток поиска и гарантирует мгновенные ответы.
Однако, когда вы изменяете зону .
на тип forward
и указываете несуществующий IP-адрес как сервер для форвардинга, сервер пытается отправлять запросы этому несуществующему адресу, что приводит к задержкам из-за ожидания таймаута.
Пример
Рассмотрим гипотетический сценарий, в котором фирма имеет внутреннюю сеть с ограниченным доступом к внешним ресурсам. Допустим, внутри фирмы есть корпоративный DNS-сервер с конфигурацией, аналогичной вашей. При указании зоны .
как forward
с несуществующим IP для форвардинга, пользователи сталкиваются с задержками при попытке доступа к внешним доменам. Это вызывает недовольство, так как пользователи ожидают мгновенных ответов в случае невозможности разрешения имен.
Применение
Чтобы решить вашу проблему и обеспечить адекватное поведение вашего DNS-сервера, нужно выполнить следующее:
-
Создание фильтров для нежелательных запросов. Вы можете настроить DNS-сервер таким образом, чтобы он обрабатывал определенные внутренние домены, например,
dmz.example.com
, через специальную зону типаforward
, а запросы на другие внешние домены обрабатывал локально без попытки к форвардингу вообще. -
Создание зон блокировки. Один из подходов — создание зон для всех верхнеуровневых доменов (например,
.com
,.net
,.org
) с конфигурациейtype master
илиtype static-stub
, что позволит серверу автоматически отвечать отказом на запросы к этим зонам. -
Оптимизация DNS-сервера. Воспользуйтесь механизмами кэширующих DNS-серверов для более быстрого ответа на запросы. В случае, если кэширование возможно, это существенно снизит нагрузку и задержки.
Помимо этого, рекомендуется изучить документацию и лучшие практики от разработчиков программного обеспечения для DNS-серверов, которые вы используете (например, BIND или другой используемый софт), чтобы расширить возможности конфигурации. Также, если это возможно, настройте протоколы мониторинга и логирования активности DNS-сервера для дальнейшего анализа и оптимизации.
Эти действия должны помочь вам достичь нужного результата без избыточного сетевого трафика и нежелательных задержек, обеспечив при этом корректное разрешение сетевых имен для доверенных доменов.