Мы используем DNS-серверы Windows 2016+. Мы полагаемся на LocalNetPriority на наших DNS-серверах. У нас есть несколько DNS-серверов Active Directory на нескольких сайтах. Ожидаемое поведение заключается в том, что при выполнении определенного запроса к DNS-серверу он вернет IP-адрес, который находится в той же подсети, что и исходный запрос, если для одного и того же хоста существует несколько записей A. В большинстве случаев это работает нормально.
Однако для запросов, исходящих от самого DNS-сервера, это не работает. Во-первых, DNS-сервер (или Active Directory) по умолчанию настраивает свой сетевой интерфейс на использование себя в качестве предпочтительного DNS-сервера через localhost (127.0.0.1 и ::1). Это приводит к сбою выбора LocalNetPriority, поскольку исходный IP-адрес не принадлежит ни к одной из наших подсетей.
Во-вторых, сервер предпочитает IPv6 IPv4. Мы не используем IPv6, но также не хотим его отключать, так как он явно вызывал проблемы в прошлом в различных сценариях, и Microsoft утверждает, что он является обязательным, и не поддерживает и не рекомендует его отключать. Об использовании IPv6 не может быть и речи.
Наконец, это должно работать при сбоях в сети. Это конкретное требование требует, чтобы приоритет локальной сети работал должным образом, когда местоположение спутника отделено от остальной части сети. Таким образом, использование одноранговых DNS-преобразователей в качестве основного сервера само по себе не удовлетворяет этому требованию.
Похоже, что настройка IPv4 в качестве приоритета над IPv6 и настройка фактического IP-адреса сервера в качестве предпочтительного DNS-сервера может быть единственным решением. Однако я давно понял, что использование 127.0.0.1 — лучший выбор, потому что при перезагрузке или отключении сетевого кабеля активная директория может полностью развалиться.
Что мне не хватает? Есть ли более прямой способ решить эту проблему? Может быть, мне просто нужно добавить запись в файл HOSTS для конкретного хоста, с которым у нас возникли проблемы.