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-флаги:

Cannot load package information. Is the atom net-dns/dnsmasq correct?

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.