Постановка задачи
У меня есть работающий сервер кэширования и пересылки привязок почти как и ожидалось. Все запросы перенаправляются, их 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 я не заметил такого поведения, но хотел бы вернуться к привязке по другим причинам.
Решено
Проблема существовала между клавиатурой и стулом.
Что пошло не так
При устранении неполадок я переключал /etc/resolv.conf туда и обратно между локальными и вышестоящими преобразователями.
Основная причина
Присутствует только одна чашка кофе. Я думал, что снова переключился на локальный преобразователь, но этого не произошло. Извинения, ложная тревога.