Поднимаем свой DNS-сервер на dnsmasq

dnsmasq

Одна из частых задач системного администратора — поднять локальный DNS-сервер для офиса, дома или тестовой среды. Конечно же всё это делать лениво и хочется легкий и быстрый способ это сделать. Их есть у меня! Обратите внимание на dnsmasq. Это компактная и мощная утилита, которая умеет делать следующее.

Резолвить домены локально (например, dev.local);
Кэшировать DNS-запросы;
Делать форвардинг к другим DNS-серверам;
Работать как DHCP-сервер (опционально).

Установка dnsmasq

Тут всё просто, сервер ставится как и любое другое приложение:

sudo apt install dnsmasq

Одна команда и всё. Ждём когда установка завершится, после чего приступаем к настройке.

Базовая конфигурация

Конфигурационный файл по умолчанию находится здесь: /etc/dnsmasq.conf. Вот пример минимальной конфигурации сервера:

# Основной DNS, к которому будут проксироваться внешние запросы

server=8.8.8.8

# Зона для кастомных записей

domain-needed
bogus-priv
no-resolv

# Свое доменное имя
domain=local

# Файл с кастомными DNS-записями
addn-hosts=/etc/dnsmasq.hosts

Ещё создаем файл кастомных записей:

sudo nano /etc/dnsmasq.hosts

Вот пример содержимого такого файла:

192.168.1.100 web.local
192.168.1.101 db.local

как настроить dns сервер

Запуск и автозапуск

Так. Сервер установили, сконфигурировали. Теперь перезапускаем:

sudo systemctl restart dnsmasq

Обязательно убедитесь, что он включен при старте:

sudo systemctl enable dnsmasq

Проверка работы сервера

Убедитесь, что DNS отвечает:

dig @127.0.0.1 web.local +short

Ответ в нашем примере должен быть таким: 192.168.1.100

Чтобы система использовала ваш dnsmasq:

sudo nano /etc/resolv.conf

И указать:

nameserver 127.0.0.1

? NetworkManager может перезаписывать этот файл. В таком случае — настройте его отдельно через /etc/NetworkManager/conf.d/.

Оставьте комментарий