Как кешировать "SERVFAIL" с помощью bind?

Я искал в Google за последний час и не смог найти ничего, имеющего отношение к моей проблеме, у меня установлена ​​и работает безупречная привязка, которую я использую для нескольких доменов и локальных обратных поисков, все же... некоторые удаленные серверы имен отключены и не возвращать никаких результатов моим запросам, а это замедляет работу приложений, использующих bind.

Например:

# dig @127.0.0.1 -x 155.1.2.3

; <<>> DiG 9.9.5-9+deb8u8-Debian <<>> @127.0.0.1 -x 155.1.2.3
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 40057
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;3.2.1.155.in-addr.arpa.                IN      PTR

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 27 14:06:14 EET 2016
;; MSG SIZE  rcvd: 51

тайм-ауты через ~ 5 секунд, но если я повторю команду, результат (SERVFAIL) не будет кэширован, и мое приложение будет задерживаться еще на 5 секунд снова и снова. Я знаю, что могу реализовать кеширование внутри приложения, но я уверен, что будет гораздо эффективнее создать кеши для этого в конфигурации связывания.

Как я могу кешировать SERVFAIL на... скажем 5 минут? Поддерживается ли bind?

Спасибо!

1 ответ

По умолчанию bind кэширует все ответы. какой TTL вы получаете в ответе SERVFAIL? Также проверьте, установлен ли для max-ncache-ttl значение 0 в конфигурации клиентского распознавателя.

Другие вопросы по тегам