Как включить 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, которые я нашел.