8

Я использую 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 . Я также попытался добавить строку сервера имен в мой /etc/resolv.conf и удалить строку resolv-file resolv в /etc/dnsmasq.conf , но она сразу же перезаписывается на то, что вы видите выше, после sudo service dnsmasq restart .

Что происходит с dnsmasq и нужно ли настроить dnsmasq в качестве кэширующего DNS-сервера?

4 ответа4

10

Кажется, что есть ошибка в скрипте запуска для dnsmasq который использует resolvconf чтобы заглушить локальный распознаватель, если локальный интерфейс обратной связи явно не указан, except -ed в /etc/defaults/dnsmasq .

Короткий ответ: вы можете добавить ...

DNSMASQ_EXCEPT=lo

в /etc/defaults/dnsmasq для решения проблемы.

Для получения дополнительной информации см. Этот вопрос ...

https://raspberrypi.stackexchange.com/questions/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp

1

bigjosh прав - за исключением того, что было обновление для dnsmasq, и теперь в конце /etc/default/dnsmasq есть опция, которую вы можете отключить:

IGNORE_RESOLVCONF=yes
1

Не использовать

resolv-file=/etc/resolv.dnsmasq

Поместите DNS-сервер в dnsmasq.conf, как

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

И добавить в dnsmasq.conf

no-resolv
0

Если вы просто хотите только для кэширования DNS - сервер и больше ничего фантазии , что Dnsmasq может сделать, вы бы лучше устанавливать либо lwresd или unbound и с использованием конфигурации запаса по умолчанию , который дает вам только для кэширования DNS - сервер. Затем вы просто устанавливаете /etc/resolv.conf для использования «nameserver 127.0.0.1», и все готово.

Приятно то, что эти два пакета не возятся с тем, что находится в /etc/resolv.conf как это делает dnsmasq, и, таким образом, это более чистое решение, IMHO. Обычно вы также можете удалить пакет resolvconf , чтобы с /etc/resolv.conf ничего не мешало .

К вашему сведению, dnsmasq стал довольно сложным, слишком много наворотов и больше просто причиняет боль большинству людей. Нарушает ПОЦЕЛУЙ в моей книге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .