Настройка Dnsmasq Ubuntu

Dnsmasq — нетребовательный, простой в настройке кеширующий Раздел DNS: Что такое DNS транслятор и Настройка DHCP сервера Linux, FreeBSD сервер.

Хостинг VPS/VDS на Ubuntu:

aptitude install dnsmasq

Настраиваем параметры /etc/dnsmasq.conf

dnsmasq.conf
listen-address=127.0.0.1
bind-interfaces
 
log-queries
log-facility=/var/log/dnsmasq-queries.log
Если dnsmasq запускается в контейнере Установка и использование OpenVZ в 2023 появится ошибка: dnsmasq: setting capabilities failed: Operation not permitted. Для её устранения потребуются изменить настройки контейнера.
vzctl set CTID --capability setuid:on --save
vzctl set CTID --capability net_admin:on --save
vzctl set CTID --capability net_raw:on --save

Dnsmasq. Настройка DNS

Первым DNS сервером должен стоять в файле /etc/resolv.conf наш сервер dnsmasq.

nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

Утилитой Основы работы с утилитой Dig: Эффективное управление DNS-запросами проверяем к какому серверу происходит обращение и уменьшается ли время (поле Query time) повторного обращения, то есть кешируется ли наш запрос.

Решение проблемы: Больше трех серверов DNS. и затирания файла /etc/resolv.conf, когда после перезапуска Dnsmasq файл очищается и в него добавляется одна единственная запись: nameserver 127.0.0.1

В Linux имеется ограничение способности самостоятельной обрабатки DNS запросов, при котором можно использовать не более трех серверов DNS в resolv.conf. В качестве обходного пути можно указать только localhost в resolv.conf, а затем создать отдельный resolv-file для используемых внешних серверов DNS. Сначала создайте новый resolv файл для dnsmasq:

nano /etc/resolv.dnsmasq.conf
nameserver 10.26.95.254
nameserver 192.168.1.1
nameserver 8.8.8.8

Затем отредактируйте /etc/dnsmasq.conf для использования нового resolv файла:

/etc/dnsmasq.conf
...
resolv-file=/etc/resolv.dnsmasq.conf
...

В /etc/default/dnsmasq может понадобиться раскоментировать строку, если появится ошибка no servers found in /var/run/dnsmasq/resolv.conf

IGNORE_RESOLVCONF=no