AllInfo
Main: Info Blog Temp Mail


unix 2015-01-16 09-39-03

Установка и настройка dnsmasq (DNS, DHCP, BOOTP/PXE, TFTP сервер)

Общую информацию о dnsmasq можно найти перейдя по этой ссылке.

1. Установка dnsmasq происходит достаточно легко (немного сложнее, если устанавливать из исходного кода)

- основанные на Debian дистрибутивы, такие как Ubuntu
$ sudo apt-get install dnsmasq

- основанные на Fedora дистрибутивы и Cent OS
$ su
# yum install dnsmasq

- семейство *BSD, если установлена Ports коллекция
$ cd /usr/ports/dns/dnsmasq/
$ su
# make install clean
или, если вы предпочитаете добавить пакет
$ su
# pkg_add -r dnsmasq

- OpenWrt/NSLU2 и Optware
$ ipkg install dnsmasq

dnsmasq скрипт устанавливается в /etc/init.d и создаются символьные ссылки с runlevel 2-5 и запускается автоматически в основанных на Debian дистрибутивах, таких как Ubuntu.
В основанных на Fedora дистрибутивах, требуется самостоятельно создать символьные ссылки на соответствующих уровнях запуска. Более простой путь выполнить эту задачу, это использовать команду chkconfig например, как показано ниже.
$ su
# chkconfig dnsmasq on
# /etc/init.d/dnsmasq start

в *BSD dnsmasq скрипт устанавливается в /usr/local/etc/rc.d для того, чтобы скрипт запускался во время загрузки нужно добавить следующую строку в /etc/rc.conf
dnsmasq_enable="YES"
затем запускаем dnsmasq
$ su
# /usr/local/etc/rc.d/dnsmasq start

в системах основанных на OpenWrt/NSLU2 и Optware
dnsmasq скрипт устанавливается в /opt/etc/init.d

для запуска скрипта при загрузке системы необходимо создать
символьную ссылку в /etc/init.d/
$ cd /etc/init.d/
$ ln -s /opt/etc/init.d/S52dnsmasq S52dnsmasq


2. Настройка dnsmasq также не представляет особых сложностей

Настройки можно изменять двумя путями, либо передать их через командную строку,
либо установить их в файле dnsmasq.conf. Наименование настроек(в не сокращенном варианте) передаваемых через командную строку и указываемых в файле dnsmasq.conf совпадают. Как правило выбирают второй вариант, поскольку он наиболее наглядный и позволяет добавлять комментарии к каждой настройке с помощью символа '#'.
Основные варианты расположения файла dnsmasq.conf
в зависимости от платформы, следующие:
- /etc/dnsmasq.conf
- /usr/local/etc/dnsmasq.conf
- /opt/etc/dnsmasq.conf

В случае малого количества настраиваемых параметров их можно разместить в одном файле, либо передать через командную строку, но если будет использоваться множество настроек, то для лучшей структуризации можно разделить их по группам в разные файлы, это можно выполнить используя следующие опции:

# добавить файл конфигурации myfile.conf
# к настройкам (строк может быть >1)
# если указать вместо имени файла "-" ,
# то настройки будут получены из устройства stdin
conf-file=/etc/dnsmasq/myfile.conf

# добавить настройки из всех файлов,
# находящихся по умолчанию в папке /etc/dnsmasq/conf.d,
# кроме файлов .bak, а также заканчивающихся символом ~,
# либо начинающиеся с ".", либо начинающиеся и
# заканчивающиеся символом "#" пропускаются всегда!
# общая форма: conf-dir=[,......]
conf-dir=/etc/dnsmasq/conf.d,bak

Общие настройки сервиса лучше начать со следующих строк

# чтобы изменить идентификаторы пользователя UID, GID
# для процесса dnsmasq укажите следующие опции
user=dnsmasq
group=dnsmasq

# укажите, где будет располагаться идентификатор процесса
pid-file=/var/run/dnsmasq.pid

# назначение приемника событий для dnsmasq
# по умолчанию события отправляются в
# syslog(DAEMON, и в LOCAL0)
# "/" - если начинается с этого символа,
# то запись логов будет вестись в файл
# "-" - то логи отправляются в стандартное устройство stderr
# сигнал SIGUSR2 используется для операции
# закрытия/открытия файла логов,
# что позволяет не перезапускать сервис dnsmasq при ротации логов
log-facility=/var/log/dnsmasq.log

# для целей отладки можно записывать каждый
# пересылаемый DNS запрос
log-queries

# асинхронная запись логов
log-async=25

Можно добавить следующие две опции, чтобы заставить dnsmasq фильтровать DNS запросы из локальной сети, чтобы они никогда не достигали публичных DNS серверов.

# никогда не пересылать простые текстовые запросы
# (без точки или без части домена)
domain-needed

# никогда не пересылать не маршрутизированные адреса
bogus-priv

# уберите комментарий, если требуется блокировать
# все SRV запросы. Не используйте эту настройку,
# если используете Kerberos, SIP, XMMP и Google-talk и т.п.
# SRV записи указанные в srv-host=
# не блокируются этим параметром
#filterwin2k

# по умолчанию dnsmasq пересылает запросы на любой DNS сервер
# из заданных в файле /etc/resolv.conf
# следующая опция заставляет dnsmasq выполнять запросы
# в строгом порядке который определяется порядком записей
# в файле /etc/resolv.conf
strict-order

# по умолчанию dnsmasq "слушает" DNS запросы со всех
# интерфейсов в системе, если в системе несколько интерфейсов
# (eth0,eth1,...и т.д.), но только один физически подключен к
# локальной сети, например только eth0
interface=eth0
# укажем номер порта (по умолчанию 53)
#port=53
# не предоставлять DHCP или TFTP сервисы на указанном
# интерфейсе, но это не отключает DNS сервис
no-dhcp-interface=lo

# позволять запускать более одной копии процесса
bind-interfaces

# позволяет получать разные имена из файла /etc/hosts
# при DNS запросах, в зависимости от интерфейса
# с которого принят этот запрос
localise-queries

# пересылать запрос сразу на все вышестоящие DNS серверы
all-servers

# отклонять ответы от вышестоящих DNS серверов
# с IP адресами локальной сети (блокировать DNS атаки)
stop-dns-rebind

# отключить проверки для 127.0.0.0/8
rebind-localhost-ok

# очищать DNS кэш
clear-on-reload

# чтобы отключить чтение /etc/resolv.conf
# или любого другого файла, то уберите комментарий
#no-resolv

# для указание альтернативного имени
# отличного от /etc/resolv.conf используйте
#resolv-file=/etc/myresolv.conf

# если вы не хотите, чтобы dnsmasq просматривал
# изменения файла /etc/resolv.conf или других подобных файлов
# и перечитывал их то уберите комментарий с опции
#no-poll

# чтобы отключить кэширование, ошибочных DNS запросов,
# т.е. неудачных запросов имя-адрес, удалите комментарий
#no-negcache

# установить размер кэша, по умолчанию 150
#cache-size=250

# настройки времени жизни кэша в секундах
# 7200=2h (два часа)
local-ttl=7200
neg-ttl=14400
max-ttl=86400

# уберите комментарий, если не требуется читать /etc/hosts
#no-hosts

# следующие две опции не обязательны, но если они
# используются, то dnsmasq будет добавлять имя
# заданного домена к именам определенным
# в dnsmasq.conf и /etc/hosts

# автоматически добавлять домен(home.net)
# к простым именам в hosts файле
expand-hosts

# настройка не обязательна, но если указана,
# то происходит следующее
# 1. позволяет DHCP хостам иметь FQDN имена,
# если часть домена совпадает
# 2. устанавливает DHCP опцию "domain" для всех
# систем настраиваемых по DHCP
# 3. устанавливает часть домена для настройки expand-hosts
domain=home.net

# добавим список вышестоящих DNS серверов

# разрешим приложениям на машине с установленным dnsmasq
# использовать этот DNS сервис
nameserver 127.0.0.1

# Список публичных DNS серверов тут

# google OpenDNS
server=8.8.8.8#53
server=8.8.4.4#53

# Dnsadvantage
server=156.154.70.1#53
server=156.154.71.1#53

# OpenDNS
server=208.67.222.222#53
server=208.67.220.220#53

# Norton
server=198.153.192.1#53
server=198.153.194.1#53

# GTEI DNS (теперь Verizon)
server=4.2.2.1#53
server=4.2.2.2#53
server=4.2.2.3#53
server=4.2.2.4#53
server=4.2.2.5#53
server=4.2.2.6#53

#cox.net
nameserver 68.105.28.11
nameserver 68.105.29.11
nameserver 68.105.28.12

# можно использовать запросы к шлюзу вашей сети,
# если включен DNS relay, и если адреса публичных серверов
# определены в вашем шлюзе
#nameserver 192.168.10.1

# включение режима: authoritative
dhcp-authoritative

# расположение файла аренды адресов
dhcp-leasefile=/var/lib/dnsmasq.leases

# максимальное количество назначений адресов
dhcp-lease-max=256

# записывать дополнительную отладочную информацию
log-dhcp

# игнорировать запросы от неизвестных хостов
# увеличивает безопасность подсети
dhcp-ignore=tag:!known

# читать информацию отображения MAC-адрес-имя
# из файла /etc/ethers
#read-ethers

# отключить динамическое назначение адресов
# для заданной подсети
#dhcp-range=192.168.10.0,static,infinite

# разрешить динамическую аренду адресов
dhcp-range=192.168.10.10,192.168.10.254,12h

# статическое назначение IP адреса, по MAC
# +назначение имя машине, а также времени жизни
dhcp-host=11:22:33:44:55:66,mypc,192.168.10.111,infinite

# сообщить маску подсети
dhcp-option=1,255.255.255.0

# сообщить адрес шлюза клиентским машинам
# по умолчанию шлюзом назначается машина с DHCP сервисом
dhcp-option=3,192.168.10.1


3. Заключительные шаги

Когда вы закончили изменение настроек в файлах
dnsmasq.conf, /etc/resolv.conf, и /etc/hosts
осталось перезапустить dnsmasq, с помощью следующих команд:

$ /etc/init.d/dnsmasq restart

если вы используете *BSD системы:

$ /usr/local/etc/rc.d/dnsmasq restart

На последнем этапе, можно использовать linux утилиту dig
для проверки работоспособности сервиса:

$ dig isaleksey.blogspot.com

Либо более простую и доступную на многих системах nslookup:

$ nslookup isaleksey.blogspot.com

ссылки:
1. thekelleys.org.uk
2. iceflatline.com
3. isaleksey.blogspot.com
4. remote-boot/bpbatch, how-to, DHCP-options, DHCP, download

Автор: Aleksey на 18:10

3 комментария:
Анонимный комментирует...
Всё хорошо разжёвано, спасибо!
Только, почему-то ругается на опцию "nameserver 127.0.0.1" в конфиге, не запускается. Закоментировал - заработало.
Хорошо, что есть опция --test - можно сначала протестировать конфиги на пригодность, без запуска самого dnsmasq.
17 декабря 2013 г., 22:17
Анонимный комментирует...
Подскажите, как с включенной опцией dhcp-ignore добавлять новых клиентов?
3 февраля 2014 г., 13:25
Aleksey комментирует...

[Подскажите, как с включенной опцией dhcp-ignore добавлять новых клиентов?]

вот так:
dhcp-host=01:02:03:04:05:06,TESTPC,10.0.1.100,infinite

или немного сложнее:
dhcp-host=set:mypc,TESTPC,00:01:02:03:04:05,06:07:08:09:10:11,10.0.1.100,infinite
TESTPC имеет 2 MAC адреса
3 февраля 2014 г., 19:47
Отправить комментарий


http://isaleksey.blogspot.com/2012/01/dnsmasq-dns-dhcp-bootppxe-tftp_08.html

3.140.198.173 / 2024-04-27_17-03-55 UTC.