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

8

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

Сообщество
источник

Ответы:

10

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

cache-size=1000

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

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

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

jdthood
источник
Спасибо за вашу информацию. Для Ubuntu 16.04 (и 15.10 с момента появления systemd) используйте «остановка / запуск сетевого менеджера службы sudo», а не «остановка / запуск сетевого менеджера sudo»
Фумиски Уэллс
Хотя это все еще работает, с помощью инструмента systemd это должно быть:sudo systemctl stop NetworkManager
goetzc
4

Мне удалось включить 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.
bloovis
источник
Мне было интересно, как это затронуло жестко запрограммированный сетевой менеджер --cache-size = 0, но ваш пост проясняет меня. Спасибо!
Фумиски Уэллс
1

Я не хотел обновляться с 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!

moparisthebest
источник
0

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

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

здесь вы можете прочитать, как отключить dnsmasq-плагин для NetworkManager: https://askubuntu.com/a/131422/71057

Евгений М.
источник
0

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

incase1
источник
0

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

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

Артур Ф
источник