Как долго работает dnsmasq кеш днс?

9

Я посмотрел справочную страницу и не смог найти, как долго dnsmasq кеширует днс. какое правило для кэширования и истечения срока действия?

У меня проблема с тем, что отправка запроса во внешнюю службу иногда занимает более 5 или 10 секунд для namelookup. Я мог бы сохранить внешний ip службы в / etc / hosts, но я боюсь смены ip. Установка Dnsmasq улучшает поиск имен, но медленный поиск имен все еще происходит с меньшей частотой.

Одним из решений является настройка простого ping в cron, но мне нужно сначала выяснить время истечения.

Спасибо.

ОБНОВИТЬ

добавлен вывод копания

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      0       IN      A       140.207.69.102

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 17 19:24:36 2015
;; MSG SIZE  rcvd: 55

ОБНОВЛЕНИЕ 2

предыдущий вывод dig содержит TTL как 0, что вводит в заблуждение. Я выложил еще один раскопок.

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60900
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      181     IN      CNAME   forward.qq.com.
forward.qq.com.             181     IN      A       101.226.90.149
forward.qq.com.             181     IN      A       101.226.129.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 21 12:01:54 2015
;; MSG SIZE  rcvd: 99
perlwle
источник

Ответы:

9

DNSmasq использует значение TTL DNS для определения периода кэширования. Вы можете использовать digкоманду для запроса текущего TTL вашего DNS-сервера для этого домена.

Теро Килканен
источник
Вы имеете в виду, что dnsmasq кэширует только днс в течение периода TTL? Я обновил свой вопрос выводом копания.
perlwle
1
Да, только период TTL используется для кэширования. И ваш TTL равен 0, поэтому DNSmasq всегда будет делать запрос к авторизованному DNS-серверу.
Теро Килканен
Однако, как указано в руководстве, вы можете использовать --max-cache-ttl для принудительного снижения TTL для кэшированных значений (сам не проверял).
sam_pan_mariusz
@TeroKilkanen Query time: 0msecозначает попадание в кеш для dnsmasq. но как долго dnsmasq будет хранить запись DNS в кеше?
Perlwle
@ sam_pan_mariusz Я думаю, что вы имели в виду --max_ttlфлаг? Я бы предпочел всегда получать правильный IP-адрес, а не пропускать изменение IP-адреса внешнего сервиса.
Perlwle
4

Опция, которую вам нужно будет установить для dnsmasq: --min-cache-ttlзначение указывается в секундах.

Согласно выводу dig, TTL равен 0, если вы установите его, скажем --min-cache-ttl=600, тогда значение TTL, которое будет возвращено dig, будет 600. TTL для того места, api.mch.weixin.qq.comгде я нахожусь, равно 600, поэтому установите его на 600 секунд самостоятельно должен быть достаточно безопасным, чтобы не пропустить изменения IP. (Я предполагаю, что вы находитесь в Китае.)

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

См. Сообщение в списке рассылки dnsmasq, подробно описывающее введение этой функции.

Phizes
источник
Я собираюсь пинговать каждые 10 минут или около того и надеюсь, что это исправит задержку поиска DNS. Как упоминалось в предыдущем комментарии, я использую более старую версию, у которой нет этой настройки. Поправьте меня, если я ошибаюсь. Однако, если он доступен, установка его на 600 будет такой же, как и у внешнего сервиса TTL. Это не будет иметь никакого значения, не так ли?
Perlwle
1
@perlwle Нет, не будет, я предполагал, что вы всегда получаете нулевой TTL, увеличение его до 1200 поможет. Я бы предложил посмотреть в DNSCrypt . Без дополнительной информации о том, сколько времени занимает поиск, скорость соединения и влияние третьих сторон, я не могу дать более четкого ответа. Если вам нужен более мощный кеш / распознаватель DNS, я бы порекомендовал основную часть этого руководства о Unbound, она отлично работает на Ubuntu 12.04 из стандартных репозиториев. (Обратите внимание, что Google DNS теперь правильно обрабатывает DNSSEC.)
Phizes
1
Также обратите внимание на dnsmasq 'local-ttl' для этих записей файла хоста
KCD