Я использую Debian Jessie и пытаюсь настроить dnsmasq в качестве кэширующего DNS-сервера. Я использовал руководство, чтобы придумать следующее /etc/dnsmasq.conf
:
listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll
Делать sudo service dnsmasq restart
не удается, и это не начнется, говоря мне
Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.
Хорошо, довольно странно, что конфиг прямо из руководства не удался. Я просто уберу no-poll
опцию, чтобы посмотреть, работает ли она. На этот раз все начинается нормально, но разрешение DNS явно не удается. Соответствующие файлы:
/etc/resolv.conf
:
nameserver 127.0.0.1
/etc/resolv.dnsmasq
:
nameserver 8.8.8.8
/var/run/dnsmasq/resolv.conf
:
nameserver 127.0.0.1
Третий файл, по-видимому, является действующим файлом dnsmasq resolv.conf, поскольку добавление строки сервера имен в то время, когда dnsmasq уже работает, приводит к немедленному запуску разрешения DNS. Похоже, это проигнорировало мою /etc/resolv.dnsmasq
. Я также попытался добавить строку сервера имен в my /etc/resolv.conf
и удалить resolv-file
строку in /etc/dnsmasq.conf
, но она сразу же перезаписывается на то, что вы видите выше при выполнении sudo service dnsmasq restart
.
Что происходит с dnsmasq и нужно ли настроить dnsmasq в качестве кэширующего DNS-сервера?
server=8.8.8.8
свой конфиг dnsmasq?no-poll
основном говорит, чтобы игнорироватьresolv-file
. При запуске требуется любой новый файл, так что это будет/etc/resolv.conf
в вашем случае (потому что он перезаписывается, когда что-то меняется).Ответы:
Кажется, есть ошибка в стартовом скрипте,
dnsmasq
который использует,resolvconf
чтобы заглушить локальный распознаватель, если локальный интерфейс обратной связи явно неexcept
задан в/etc/defaults/dnsmasq
файле.Короткий ответ: вы можете добавить ...
чтобы
/etc/defaults/dnsmasq
решить проблему.Для получения дополнительной информации см. Этот вопрос ...
/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp
источник
bigjosh прав - за исключением того, что было обновление для dnsmasq, и теперь есть опция, в конце
/etc/default/dnsmasq
которой вы можете снять хеш:источник
/etc/defaults/dnsmasq
имелIGNORE_RESOLVECONF=yes
с инструкциями раскомментировать это, чтобы решить эту проблему, которая не сделала.Не использовать
Поместите DNS-сервер в dnsmasq.conf, как
И добавить в dnsmasq.conf
источник
Если вам нужен только DNS-сервер с кэшированием и ничего более необычного, что может сделать dnsmasq, лучше установить либо одну из них,
lwresd
либоunbound
использовать стандартную конфигурацию по умолчанию, которая дает вам DNS-сервер только для кэширования. Затем вы просто/etc/resolv.conf
используете «nameserver 127.0.0.1» и все готово.Приятно то, что эти два пакета не возятся с тем,
/etc/resolv.conf
что делает dnsmasq, и, таким образом, являются более чистым решением IMHO. Вы также можете удалитьresolvconf
пакет, чтобы ничего не мешало/etc/resolv.conf
.К вашему сведению, dnsmasq стал довольно сложным, слишком много наворотов и больше всего причиняет боль большинству людей. Нарушает ПОЦЕЛУЙ в моей книге.
источник
dnsmasq-base
, какnetwork-manager
иlibvirt-bin
(если вы используете KVM), поэтому не всегда возможно полностью избавиться от него. В этом случае вы можете удалить/usr/sbin/dnsmaq
и сделать его жесткой ссылкой,/bin/true
чтобы он всегда был успешным (чтобы обмануть скрипт инициализации), а затемchattr +i /usr/sbin/dnsmasq
заблокировать его от обновления. Я должен был сделать это на нескольких ноутбуках.