dnsmasq cache NOERROR с ANSWER: 0, AUTHORITY: 0

Я использую общедоступного поставщика DNS (nextdns.io), который блокирует некоторые домены. Эти заблокированные домены возвращают такой ответ, когда dig -ed:

; <<>> DiG 9.16.1-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63541
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.               IN      A

;; Query time: 66 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Jul 22 12:03:25 CDT 2020
;; MSG SIZE  rcvd: 33

Я использую dnsmasq на маршрутизаторе DD-WRT для обработки всех запросов DNS от устройств в локальной сети. Есть ли способ настроить dnsmasq для кеширования этих результатов NOERROR с 0 ОТВЕТОМ / AUTHORITY ?

Просматривая журналы, я могу сказать, что мой провайдер DNS верхнего уровня клиент в моей сети часто пытается получить доступ к некоторым заблокированным доменам.

Я изучил справочную страницу dnsmasq, но я вижу флаги cache / ttl, которые, похоже, не влияют на эти типы ответов, поскольку они не отрицательные (например, NXDOMAIN ) кэшируемые, но просто не дают ответа. Я знаю, что могу явно обрабатывать определенные домены в моей конфигурации dnsmasq, добавляя записи типа address = /. Example.com/::, но я бы предпочел добавить cache / ttl в моем dnsmasq для кеширования нет ответов примерно 300 секунд, прежде чем снова попытаться запросить ответ из восходящего потока.

0
задан 22 July 2020 в 21:47
1 ответ

Основная проблема с точки зрения кэширования заключается в том, что это некая форма нарушенного ответа (я бы подумал, что сломан NODATA на основе предложенного намерения).

Кэширование DNS выполняется на основе некоторого TTL, для положительных ответов RRSet TTL, а для отрицательных ответов TTL кэша основан на записи SOA в разделе AUTHORITY (в частности, используется TTL MIN(SOA TTL, SOA). МИНИМУМ)).

Независимо от того, является ли отрицательный ответ NXDOMAIN или NODATA (NOERROR с пустым ANSWER), эти типы ответов всегда имеют соответствующую запись SOA в разделе AUTHORITY.

Конечно, было бы лучше, если бы поставщик DNS фильтрации обслуживал действительные ответы также для отфильтрованных доменов (т.е. правильный ответ NXDOMAIN или NODATA).

Работа над проблемой не обязательно проста, поскольку это не тот тип ответа, который должен существовать, и не обязательно есть возможность поймать этот случай.

Тем не менее, вы используете dnsmasq, который, согласно руководству dnsmasq, имеет настройку, которая, по-видимому, справляется с этой ситуацией:

--neg-ttl=
Отрицательные ответы от вышестоящих серверов обычно содержат информацию о времени жизни в записях SOA, которые dnsmasq использует для Кэширование. Если в ответах от вышестоящих серверов эта информация опущена, dnsmasq не кэширует ответ. Этот параметр задает значение по умолчанию для времени жизни (в секундах), которое dnsmasq использует для кэширования отрицательного значения отвечает даже при отсутствии записи SOA.

2
ответ дан 22 July 2020 в 18:17

Теги

Похожие вопросы