Как включить DNS-кэширование в dnsmasq под управлением NetworkManager?

Ubuntu Desktop 12.04 использует dnsmasq для выполнения поиска DNS, но он не настроен для кэширования этих результатов. (Я проверил это, используя dig для разрешения имен, и не вижу значительного улучшения времени отклика после первого поиска.) Как настроить dnsmasq, управляемый NetworkManager, для кэширования результатов поиска DNS?

6 ответов

В Ubuntu 12.10 вы можете включить кэш экземпляра dnsmasq, управляемого NetworkManager, поместив строку

cache-size=1000

(с вашим предпочтительным числом имен вместо 1000) в новом файле в /etc/NetworkManager/dnsmasq.d/. Чтобы активировать это изменение, вы должны сделать

sudo stop network-manager
sudo killall dnsmasq
sudo start network-manager

или перезагрузка.

Мне удалось включить DNS-кэширование в Linux Mint 13 (на основе Ubuntu 12.04), используя метод, описанный в первом ответе. Я создал файл /etc/NetworkManager/dnsmasq.d/cachedns содержащий строку cache-size=100затем перезапустил сетевой менеджер. Несмотря на то, что dnsmasq выполняется сетевым менеджером с жестко --cache-size=0 в командной строке установка размера кэша в файле конфигурации переопределяет это значение. Вы можете проверить, что это работает, выполнив это:

sudo killall -USR1 dnsmasq
tail /var/log/syslog

Вы должны увидеть строку, которая выглядит следующим образом в системном журнале, показывая размер кэша:

dnsmasq[17808]: cache size 100, 0/2 cache insertions re-used unexpired cache entries.

Я не хотел обновляться с 12.04, но все же хотел, чтобы dnsmasq управлялся NetworkManager с включенным кэшированием, но, как сказал другой ответ, --cache-size=0 жестко запрограммирован и не может быть изменен при конфигурации.

Так что я закончил тем, что сделал в роли root:

mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.real

а затем создайте новый файл /usr/sbin/dnsmasq со следующим содержимым:

#!/bin/bash
args=$(echo "$@" | sed 's/--cache-size=0/--cache-size=1000/')
/usr/sbin/dnsmasq.real $args

убедись, что ты chmod +x /usr/sbin/dnsmasqи измените размер кэша с 1000 на любой другой, наслаждайтесь вашей версией LTS с кешем DNS!

Для повторного включения кэша (с версией NetworkManager, которая имеет каталог /etc/NetworkManager/dnsmasq.d), на самом деле достаточно удалить файл в этом каталоге с содержимым "cache-size=X" (где X равен 150 по умолчанию dnsmasq будет иметь). Файлы там переопределяют жестко заданные параметры, заданные в командной строке.

В 12.04 dnsmasq запускается NetworkManager с жестко заданным (то есть не настраиваемым) параметром --cache-size = 0.

manpages для dnsmasq говорит, что установка нулевого размера кеша отключает кеширование. Если вы хотите включить кэширование, вам, вероятно, придется отключить плагин dnsmasq для NetworkManager, чтобы предотвратить запуск NetworkManager dnsmasq и запустить собственный экземпляр dnsmasq с размером кеша, большим нуля.

здесь вы можете прочитать, как отключить dnsmasq-плагин для NetworkManager: /questions/165995/dnsmasq-inogda-razreshaet-problemyi-inogda-net/166003#166003

В Ubuntu 14.04 мне пришлось редактировать /etc/default/dnsmasq и установить ENABLED=1

Я также положил cache-size=1000 там и во всех других конфигурационных файлах dnsmasq, которые я нашел.

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