Dnsmasq

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

Other languages:
English • ‎español • ‎italiano • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎


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. local
conntrack Add support for Linux conntrack connection marking. local
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) global
dhcp Enable support for acting as a DHCP server. local
dhcp-tools Install extra command line tools for manually managing DHCP leases. local
dnssec Enable support DNSSEC validation and caching. local
id Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead local
idn Enable support for Internationalized Domain Names global
inotify Enable inotify filesystem monitoring support global
ipv6 Add support for IP version 6 global
libidn2 Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn local
lua Enable Lua scripting support global
nls Add Native Language Support (using gettext - GNU locale utilities) global
script Enable support for calling scripts when leases change. local
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur global
static !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically global
tftp Enables built in TFTP server for netbooting. local

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 #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 во время передачи данных. Это можно реализовать, добавив следующие строки в файл конфигурации:

Файл /etc/dnsmasq.confВключение DNSSEC
# Настройка DNSSEC
dnssec
trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
dnssec-check-unsigned

Trusted anchor можно найти на сайте iana.org. После этих изменений, если проверка достоверности не удастся, dnsmasq вернет SERVFAIL и не вернет никаких данных DNS. Если проверка достоверности завершается успехом, dnsmasq устанавливает флаг ad. В случае, если домен не поддерживает 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.