Одна из частых задач системного администратора — поднять локальный 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
Запуск и автозапуск
Так. Сервер установили, сконфигурировали. Теперь перезапускаем:
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/.