Stupid House

Настройка DNS/DHCP сервера dnsmasq в FreeBSD


Возникла у меня необходимость в небольшой сети с количеством компьютеров около 20 и парой серверов настроить DNS и DHCP службы. Заморачиваться с BIND не хотелось, поэтому был произведен поиск альтернатив, выбор пал на dnsmasq, из преимуществ описывалась его легкость настройки и интеграция DNS и DHCP сервисов, плюс к этому выяснилось, что проект OpenWRT использует его в своих прошивках для маршрутизаторов. Все описанные ниже действия проводились на ОС FreeBSD.

 

 

Установка

Здесь все просто, установка через менеджер пакетов:

# pkg install dnsmasq

Или установка из портов:

# cd /usr/ports/dns/dnsmasq
# make install clean

 

Настройка DNS в dnsmasq

По умолчанию dnsmasq список вышестоящих DNS серверов берет из файла /etc/resolv.conf, а список записей прямого просмотра из /etc/hosts. Если компьютер с сервисом получает настройки по DHCP, то файл resolv.conf заполняется автоматически, но если необходимо чтобы сервис не использовал данные из этих файлов, оставив данные в этих файлах только для нужд системы, то данные параметры необходимо переопределить в файле конфигурации /usr/local/etc/dnsmasq.conf. Если параметры по умолчанию не устраивают то, указанные параметры необходимо раскомментировать и заполнить.

resolv-file=/usr/local/etc/dnsmasq.d/resolv   # Вышестоящие сервера DNS
no-host   # dnsmasq не будет читать файл /etc/hosts
addn-hosts=/usr/local/etc/dnsmasq.d/hosts   # Список записей прямого просмотра DNS

 

Другие настройки касательно DNS сервера:

local=/mynet.local/   # Локальный(е) домен(ы), запросы в этих доменах отвечают только из /etc/hosts или DHCP
expend-hosts   # Раскомментировать (и поле domain ниже) если необходимо автоматически добавлять domain к одиночным записям в host файле
domain=mynet.local   # Добавляет поле domain к DHCP именам хостов, устанавливает domain для получающих настройки через DHCP, предоставляет данные для настройки expend-hosts
conf-dir=/usr/local/etc/dnsmasq.d/,*.conf   # Включить в конфигурацию все файлы в каталоге заканчивающиеся на .conf
log-queries   # Логирование каждого запроса DNS, используется для отладки, не обязательный параметр

Проверяем настройки файла /etc/resolv.conf или, который был указан в resolv-file.

# cat /etc/resolv.conf
search mynet.local
nameserver 192.168.27.5
nameserver 192.168.27.254

Вносим необходимые DNS записи прямого просмотра в файле /etc/hosts или, который указан в addn-hosts. Записи будут иметь вид записей файла hosts.

192.168.11.1 server1
192.168.11.2 server2 server2.mynet.local

Настройка aliases, cname, ptr, txt, mx записей выполняется в конфигурационном файле dnsmasq.conf, но т.к. в настройках включен параметр conf-dir, то лучше в папке /usr/local/etc/dnsmasq.d/ создать отдельные для этого файлы с расширением .conf. Пример для cname:

# touch /usr/local/etc/dnsmasq.d/cname.conf
cname=srv1,server1
cname=srv2,server2

 

Настройка DHCP в dnsmasq

Чтобы не загромождать конфигурационный файл программы вынесем настройки DHCP в отдельный файл в каталоге /usr/local/etc/dnsmasq.d/ (смотрим настройку conf-dir выше).

# touch /usr/local/etc/dnsmasq.d/dhcp.conf

Указываем пул выдаваемых адресов DHCP и время аренды (например, 192.168.11.101 - 192.168.11.150 на 3 часа):

dhcp-range=192.168.11.101,192.168.11.150,3h

Указываем DHCP настройки, выдаваемые клиентам:

dhcp-option=3,192.168.11.254   # Шлюз (роутер)
dhcp-option=6,192.168.11.1,192.168.11.2   # DNS сервера
dhcp-option=15,mynet.local     # Домен по умолчанию
dhcp-option=42,192.168.11.1    # NTP сервер

Настройка резервации IP адресов, MAC адрес через запятую IP адрес:

dhcp-host=XX:XX:XX:XX:XX:XX,192.168.11.55

Для ноутбуков, можно указать два MAC адреса через запятую (MAC адрес интерфейса Wi-Fi и MAC адресе интерфейса Ethernet), но во избежание коллизий должен быть подключен только один интерфейс!!!

dhcp-host=XX:XX:XX:XX:XX:XX,YY:YY:YY:YY:YY:YY,192.168.11.77

По необходимости для отладки включаем логирование DHCP запросов в файле dnsmasq.conf.

log-dhcp

 

Запуск сервиса dnsmasq в FreeBSD

Добавляем сервис dnsmasq в автозапуск:

# service dnsmasq enable
dnsmasq enabled in /etc/rc.conf

или руками прописываем в файле /etc/rc.conf:

dnsmasq_enable="YES"

Запускаем сервис:

# service dnsmasq start
Starting dnsmasq.

Для включения dnsmasq без функции DNS сервера в /etc/rc.conf необходимо добавить:

dnsmasq_flags="-p0"

 

Tags:
Автор: muxa, 20.03.2023
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии