Dnsmasq
dnsmasq — это простой DHCP/DNS сервер, который можно использовать в локальной сети до 1000 клиентов. Его основные особенности — простота настройки и небольшой расход системных ресурсов. Он также поддерживает IPv6.
Установка
USE-флаги
Выберите нужные USE-флаги:
USE flags for net-dns/dnsmasq Small forwarding DNS server
+dhcp
|
Enable support for acting as a DHCP server. |
+dumpfile
|
Include code to dump packets to a libpcap-format file for debugging |
+inotify
|
Enable inotify filesystem monitoring support |
+loop
|
Include functionality to probe for and remove DNS forwarding loops |
auth-dns
|
Add support for acting as an authorative DNS server. |
conntrack
|
Add support for Linux conntrack connection marking. |
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
dhcp-tools
|
Install extra command line tools for manually managing DHCP leases. |
dnssec
|
Enable support DNSSEC validation and caching. |
id
|
Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead |
idn
|
Enable support for Internationalized Domain Names |
ipv6
|
Add support for IP version 6 |
libidn2
|
Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn |
lua
|
Enable Lua scripting support |
nettlehash
|
Use hashing functions from dev-libs/nettle |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
script
|
Enable support for calling scripts when leases change. |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
static
|
!!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically |
tftp
|
Enables built in TFTP server for netbooting. |
Emerge
Затем установите пакет net-dns/dnsmasq:
root #
emerge --ask net-dns/dnsmasq
Конфигурация
Поведением dnsmasq можно управлять с помощью следующих ресурсов:
- параметры командной строки, устанавливаемые в файле /etc/conf.d/dnsmasq
- основной файл конфигурации (/etc/dnsmasq.conf)
Сервис
OpenRC
Если необходима автоматическая загрузка при старте, добавьте dnsmasq на уровень запуска по умолчанию:
root #
rc-update add dnsmasq default
Чтобы запустить сервсис сейчас:
root #
rc-service dnsmasq start
Настройка сервиса
В /etc/conf.d/dnsmasq можно настроить параметры командной строки, подаваемые демону dnsmasq при его запуске.
DNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq -H /srv/virt/gentoo/hosts --max-cache-ttl=10"
Основной файл конфигурации
Основная настройка dnsmasq осуществляется с помощью его файла конфигурации /etc/dnsmasq.conf. Этот файл использует синтаксис вида key[=value]
. Пример файла конфигурации включен в пакет; он хорошо документирован и его рекомендуется прочитать. В этом файле, либо с помощью параметров командной строки, можно обращаться к дополнительным ресурсам (например, файл DHCP hosts).
Пример файла конфигурации:
# Принимать соединения только на этом интерфейсе
interface=eth1
# Присваивать имена по mac-адресу
dhcp-host=00:1e:68:c2:ff:ee,endor,192.168.0.54,24h
# Любой другой запрос DHCP получает ip из этого диапазона
dhcp-range=eth1,192.168.0.100,192.168.0.120,12h
# Включить TFTP-сервер и установить корневой каталог для файлов, доступных посредством TFTP.
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=/pxelinux.0
После редактирования файла конфигурации нужно перезапустить (restart) сервис — перезагрузка (reload) поддерживается, но для других ресурсов.
root #
/etc/init.d/dnsmasq restart
Файл hosts
Приложение dnsmasq использует файл /etc/hosts в качестве одного из источников, предоставляющих сервисы DNS, если не указан параметр командной строки -h
(--no-hosts
).
После обновления /etc/hosts dnsmasq должен получить сигнал SIGHUP, чтобы перезагрузить настройки. Это также можно сделать с помощью команды reload из init-скрипта:
root #
/etc/init.d/dnsmasq reload
Это поведение можно отключить в файле конфигурации с помощью параметра no-hosts
.
Дополнительный файл hosts
Существует возможность обращения к (дополнительному) файлу hosts в качестве источника запросов DNS. Для этого нужно добавить параметр командной строки -H /path/to/hostsfile
(--addn-hosts=/path/to/hostsfile
). Также можно указать каталог; в этом случае, все файлы в этом каталоге будут рассматриваться, как дополнительные файлы hosts.
Так же как и со стандартным файлом hosts, сигнал SIGHUP перезагружает файл.
Это поведение также можно установить в файле конфигурации с помощью параметра addn-hosts
.
Upstream сервера имен
По умолчанию, dnsmasq использует сервера имен, указанные в /etc/resolv.conf, в качестве upstream серверов имен.
С помощью параметра командной строки -r
(--resolv-file
) можно задать другой файл.
Это поведение также можно установить в файле конфигурации с помощью параметра resolv-file
.
Возможности
Dnsmasq поддерживает DNS, TFTP, PXE, router advertisements и сервисы DHCP. Он является гибкой утилитой управления сетью для небольших и средних по размеру сетей.
Сервисы DNS
Для того, чтобы предоставить (только) сервисы DNS, сначала определите upstream nameserver. Если это тот же сервер, который указан в файле /etc/resolv.conf, то не требуется предпринимать никаких дополнительных шагов. В противном случае, укажите dnsmasq нужный файл resolv.conf с помощью параметра командной строки -r
(--resolv-file
). Синтаксис тот же, что и в файле /etc/resolv.conf, однако dnsmasq читает только определения nameserver.
Например:
root #
echo "nameserver 8.8.8.8" >> /etc/dnsmasq.conf.resolv
Затем укажите этот файл dnsmasq с помощью файла конфигурации:
resolv-file=/etc/dnsmasq.conf.resolv
Чтобы удостовериться, что сервис работает (после перезапуска, поскольку файл конфигурации был изменен), воспользуйтесь командой dig (она входит в пакет net-dns/bind-tools) для того, чтобы попросить сервер DNS (запущенный на localhost в следующем примере) разрешить локальный или удаленный адрес:
user $
dig @localhost +short www.gentoo.org
www-bytemark-v4v6.gentoo.org. 89.16.167.134
DNSSEC
Dnsmasq может проверять достоверность данных DNSSEC во время передачи данных. Это можно реализовать, добавив следующие строки в файл конфигурации (не забудьте включить USE-флаг dnssec):
# Uncomment these to enable DNSSEC validation and caching:
# (Requires dnsmasq to be built with DNSSEC option.)
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
# Replies which are not DNSSEC signed may be legitimate, because the domain
# is unsigned, or may be forgeries. Setting this option tells dnsmasq to
# check that an unsigned reply is OK, by finding a secure proof that a DS
# record somewhere between the root and the domain does not exist.
# The cost of setting this is that even queries in unsigned domains will need
# one or more extra DNS queries to verify.
dnssec-check-unsigned
После этих изменений, если проверка достоверности не удастся, dnsmasq вернет SERVFAIL и не вернет никаких данных DNS. Если проверка достоверности завершается успехом, dnsmasq устанавливает флаг ad («authenticated data»). В случае, если домен не поддерживает DNSSEC, dnsmasq ведет себя, как и раньше.
Сервисы DHCP
Для того, чтобы включить сервисы DHCP dnsmasq, используйте параметр настройки dhcp-range
.
Например, для того, чтобы включить настройку адреса IPv6 посредством router advertisement (RA) с бесконечной арендой, и настройку адреса IPv4 также с бесконечной арендой:
dhcp-range=2001:db8:81:e2::,ra-only,infinite
dhcp-range=192.168.100.100,192.168.100.149,infinite
Существует возможность использования статических определений для известных хостов. Это можно реализовать либо посредством основного файла конфигурации (параметр dhcp-host=
), либо посредством отдельного файла. Если используется отдельный файл, укажите его dnsmasq с помощью параметра командной строки --dhcp-hostsfile
. Преимущество последнего варианта в том, что для повторного считывания записей достаточно послать сигнал SIGHUP (или перезагрузить сервис), тогда как при использовании определений в файле конфигурации необходимо полностью перезапустить сервис.
Для получения более подробной информации о синтаксисе параметра dhcp-host
, обратитесь к странице руководства или к файлу конфигурации, поскольку синтаксис этого параметра весьма пространен.
Использование
Этот раздел содержит описание различных вариантов использования (обслуживания и практических задач) сервиса dnsmasq.
Сброс аренды
Клиенты, у которых был обновлен сетевой интерфейс, что привело к изменению MAC-адреса, могут не сразу получить нужный IP-адрес. Это происходит оттого, что сервис dnsmasq предоставил этот IP-адрес старому MAC-адресу и ожидает истечения аренды этого адреса, прежде чем присвоить новый.
Сервис dnsmasq хранит свои аренды в файле /var/lib/misc/dnsmasq.leases. Если требуется быстрее удалить аренду, остановите сервис dnsmasq, удалите аренду из файла dnsmasq.leases и снова запустите сервис.
root #
/etc/init.d/dnsmasq stop
root #
nano -w /var/lib/misc/dnsmasq.leases
root #
/etc/init.d/dnsmasq start
Перезагрузка неосновных настроек конфигурации
В дополнение к файлу dnsmasq.conf, сервис dnsmasq может использовать внешние определения для следующих сервисов:
- настройки конфигурации хостов DHCP (посредством параметра командной строки
--dhcp-hostsfile
) - параметры DHCP (посредством параметра командной строки
--dhcp-optsfile
)
После изменения этих файлов сигнал SIGHUP заставит dnsmasq перезагрузить эти настройки.
Файлы resolv.conf по умолчанию опрашиваются dnsmasq; изменения в этих файлах вступают в силу автоматически, если не указан параметр командной строки
-n
(--no-poll
) или параметр настройки no-poll
.