В небольших сетях нередко возникает задача быстро поднять собственный DNS-сервер без сложной и громоздкой конфигурации. В таких случаях dnsmasq оказывается очень удобным решением, потому что он сочетает в себе простоту настройки, небольшое потребление ресурсов и вполне достаточный набор функций для локальной инфраструктуры. В ALT Linux этот сервис особенно хорошо подходит для домашних лабораторий, небольших офисов, тестовых стендов и изолированных сегментов сети, где важна предсказуемость и простота сопровождения.
Чаще всего dnsmasq используют тогда, когда требуется не просто пересылать DNS-запросы во внешние серверы, но и обслуживать локальные имена внутри своей сети. Это может быть полезно, если нужно, чтобы компьютеры и серверы открывались по понятным именам вроде server1.goida.ru, а не по IP-адресам. Кроме того, dnsmasq умеет работать достаточно гибко: он может обслуживать локальные записи, пересылать внешние запросы дальше и при необходимости выступать частью более сложной схемы адресации.
Установка пакета
Установка сводится к обычной установке пакета из репозитория:
bashapt-get install dnsmasq -y
После этого в системе появляется сам сервис, а также основной конфигурационный файл, в котором и задаются параметры работы DNS. На практике это один из самых удобных этапов, потому что уже после установки можно почти сразу переходить к настройке и проверке.
Редактирование конфигурации
Основной файл конфигурации обычно находится по пути:
nano /etc/dnsmasq.conf
Именно здесь задаются параметры прослушивания интерфейсов, доменное имя, правила пересылки запросов и локальные записи. Перед тем как перезапускать сервис, полезно проверить конфигурацию на наличие ошибок, чтобы не тратить время на поиск проблемы в уже запущенной службе.
Проверка выполняется так:
bashdnsmasq --test
Если синтаксис корректный, можно переходить к перезапуску службы:
bashsystemctl restart dnsmasq.service
После этого желательно сразу посмотреть состояние сервиса:
systemctl status dnsmasq.service
И, если всё работает как нужно, включить автозапуск:
systemctl enable --now dnsmasq.service
Такой порядок действий удобен тем, что позволяет сначала убедиться в корректности конфигурации, а уже потом переводить службу в рабочий режим.
Базовая конфигурация
Для простого сценария настройки можно использовать такой вариант:
interface=*
domain=goida.ru
expand-hosts
server=8.8.8.8
server=1.1.1.1
Параметр interface=* говорит о том, что служба будет принимать запросы на всех доступных интерфейсах. Это удобно в небольших сетях или на тестовых серверах, где не требуется жестко ограничивать список интерфейсов вручную. В более строгой инфраструктуре лучше указывать конкретный интерфейс, но для базового примера универсальный вариант выглядит понятнее.
Директива domain=goida.ru задает локальный домен. В сочетании с expand-hosts это позволяет автоматически дополнять короткие имена указанным доменом. Например, если в локальной системе задан хост server1, то при обращении он может быть интерпретирован как server1.goida.ru. Это удобно, когда в сети принято использовать короткие имена вместо полного доменного имени.
Параметры server=8.8.8.8 и server=1.1.1.1 задают внешние DNS-серверы, к которым dnsmasq будет обращаться для пересылки запросов, не относящихся к локальной зоне. Таким образом, сервер может обслуживать и внутренние имена, и обычные внешние домены.
Локальные DNS-записи
Одной из самых полезных возможностей dnsmasq является создание локальных имен для конкретных хостов. Это особенно удобно, когда необходимо закрепить за сервером постоянное имя, которое будет использоваться всеми клиентами сети.
Для этого применяется директива address. В вашем случае корректная запись выглядит так:
address=/server1.goida.ru/192.168.1.1
Здесь имя server1.goida.ru сопоставляется с IP-адресом 192.168.1.1. Важно не ставить пробелы внутри строки, потому что это может привести к ошибке разбора конфигурации. Именно такие мелочи часто становятся причиной того, что сервис не стартует или работает не так, как ожидалось.
После добавления этой записи любой клиент, использующий dnsmasq как DNS-сервер, сможет обращаться к server1.goida.ru и получать нужный IP-адрес. Это делает сеть более удобной в эксплуатации, особенно если в ней много узлов и их адреса могут меняться, а имя при этом должно оставаться постоянным.
Обратное разрешение имен
Помимо прямого разрешения имен, в DNS часто нужно поддерживать и обратные записи. Это полезно, когда по IP-адресу требуется получить имя хоста. В dnsmasq для этого можно использовать ptr-record.
Для адреса 192.168.1.1 запись будет такой:
ptr-record=1.1.168.192.in-addr.arpa,server1.goida.ru
Такой подход позволяет системе отвечать на обратные запросы и возвращать имя хоста при проверке по IP. Это бывает полезно для журналирования, сетевой диагностики, контроля доступа и сервисов, которые ориентируются именно на обратное DNS-распознавание.
Итоговый вариант конфигурации
Если собрать всё вместе, получится такой пример конфигурации:
textinterface=*
domain=goida.ru
expand-hosts
server=8.8.8.8
server=1.1.1.1
address=/server1.goida.ru/192.168.1.1
ptr-record=1.1.168.192.in-addr.arpa,server1.goida.ru
Такой конфиг уже можно использовать как основу для небольшой локальной DNS-инфраструктуры. Он обеспечивает обработку запросов на всех интерфейсах, поддержку локального домена, пересылку внешних запросов и базовые статические записи для прямого и обратного разрешения имен.
Проверка работы
После запуска службы проверьте, что DNS отвечает:
systemctl status dnsmasq.service
Для теста можно использовать dig или nslookup:
dig server1.goida.ru
dig -x 192.168.1.1
Если всё настроено правильно, прямой и обратный DNS-запросы будут возвращать ожидаемые значения.