Как кешировать "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 в конфигурации клиентского распознавателя.