Dnsmasq

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Dnsmasq and the translation is 100% complete.
Resources

dnsmasq — это простой DHCP/DNS сервер, который можно использовать в локальной сети до 1000 клиентов. Его основные особенности — простота настройки и небольшой расход системных ресурсов. Он также поддерживает IPv6.

Установка

USE-флаги

Выберите нужные USE-флаги:

USE flags for net-dns/dnsmasq Small forwarding DNS server

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 Enable support for acting as a DHCP server.
dhcp-tools Install extra command line tools for manually managing DHCP leases.
dnssec Enable support DNSSEC validation and caching.
dumpfile Include code to dump packets to a libpcap-format file for debugging
id Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead
idn Enable support for Internationalized Domain Names
inotify Enable inotify filesystem monitoring support
ipv6 Add support for IP version 6
libidn2 Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn
loop Include functionality to probe for and remove DNS forwarding loops
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 при его запуске.

ФАЙЛ /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).

Пример файла конфигурации:

ФАЙЛ /etc/dnsmasq.conf
# Принимать соединения только на этом интерфейсе
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 с помощью файла конфигурации:

ФАЙЛ /etc/dnsmasq.confНастройка пользовательского файла resolv
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):

ФАЙЛ /etc/dnsmasq.confВключение 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 также с бесконечной арендой:

ФАЙЛ /etc/dnsmasq.confВключение аренды IPv6 и 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.