Настройка 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"