Если внутренний резолвер стоит первым, а публичный вторым, Squid не узнаёт, какие имена относятся к какому пространству имён.

В Squid 6 и 7 dns_nameservers заменяет обычный список резолверов адресами серверов. В его синтаксисе нет сопоставления по домену. Корректный отрицательный ответ тоже отличается от недоступного резолвера, поэтому альтернативы не являются надёжным способом перебирать несовместимые пространства имён.

Направление запросов по домену

Локальный DNS-форвардер может выразить недостающую политику. В существующей конфигурации dnsmasq приватный суффикс можно направить так:

server=/internal.example/192.0.2.53

Замените домен и адрес. Настройте утверждённый upstream по умолчанию для остальных имён, подходящий слушатель и ограничения доступа. Затем направьте Squid на этот резолвер с конфигурацией, которую поддерживает установленная версия.

Либо используйте организационный DNS-сервис, который правильно разрешает оба пространства имён. Избегайте публичного запасного пути, который раскрывает приватные имена, но не может на них ответить.

Если родительский прокси выполняет поиск назначения, этому хопу нужно приватное пространство имён. Резолвер на локальном хосте Squid не исправит поиск родительского прокси.

Проверьте и отрицательный случай

Выберите допустимое приватное имя, допустимое публичное имя и несуществующее приватное имя. Для каждого определите предполагаемый upstream и то, является ли ожидаемый ответ адресом или отрицательным ответом. Последний случай выявляет случайный публичный запасной путь после внутреннего отрицательного ответа.

Учитывайте семейства адресов, которые требует клиент. Работающий поиск A не доказывает, что AAAA следует политике или возвращает достижимое назначение. Отмечайте и состояние кеша: сохранённый ответ может скрыть, какой upstream выберет новый запрос.

Похожие статьи