Рекурсивная пересылка Bind DNS-сервер не отвечает из кеша
Постановка задачи
У меня есть сервер кэширования и пересылки bind, который работает почти так, как ожидалось. Все запросы пересылаются, их TTL кешируется. На первый взгляд, все выглядело нормально, пока я не увидел, что время отклика никогда не опускается ниже 150 мс моего VPN.
После выполнения tcpdump я обнаружил, что, хотя bind хорошо знал, что TTL больше 0 (в данном случае TTL 14000), преобразователь все еще переадресовывал каждый запрос. TTL ответа по- прежнему уменьшается, как и ожидалось, но каждый отдельный запрос по-прежнему передается в восходящем направлении независимо от TTL, оставшегося в кэшированной записи.
Если я отключу переадресацию, это поведение прекращается, и кеш работает как положено.
Версия
Bind 9.9.4-29 (Redhat forked)
OS: CentOS 7
Соответствующие части конфигурации
allow-query { local; };
recursion yes;
allow-recursion { local; };
max-cache-size unlimited;
stacksize unlimited;
datasize unlimited;
zone "." IN {
type forward;
forward first;
forwarders { 192.168.120.3; 192.168.120.2; };
};
Я пробовал оба forward first;
а также forward only;
Этот распознаватель почти не загружен и имеет несколько ГБ доступной памяти. В любой момент времени в нем никогда не кэшируется более нескольких сотен записей.
Вполне вероятно, что у меня неправильное ожидание поведения в привязке? Используя Unbound я не видел такого поведения, но я бы хотел переключиться обратно на bind по другим причинам.
1 ответ
решаемая
Проблема существовала между клавиатурой и стулом.
Что пошло не так
При устранении неполадок я переключал свой /etc/resolv.conf туда и обратно между локальными и обратными преобразователями.
Первопричина
Только одна чашка кофе в подарок. Я думал, что переключился обратно на локальный распознаватель, и я не сделал. Извинения, ложная тревога.