Поиск по сайту:

Как запустить локальный сетевой DHCP-сервер с помощью Dnsmasq


Dnsmasq — это легкий сетевой сервер, предоставляющий функции DNS, DHCP, TFTP и PXE. В этом руководстве мы рассмотрим настройку новой установки Dnsmasq в качестве автономного DHCP-сервера.

DHCP (протокол динамической конфигурации хоста) — это процесс, с помощью которого сетевые устройства получают IP-адреса. DHCP-сервер вашей сети отвечает за назначение каждому новому устройству уникального адреса. Адреса могут быть статическими или динамическими, последнее означает, что они выдаются на основе краткосрочной аренды, поэтому IP-адрес каждого устройства может меняться со временем.

Маршрутизатор действует как DHCP-сервер в большинстве небольших сетей. Настройка Dnsmasq на компьютере с Linux дает вам контроль над процессом, а также улучшает видимость любых возникающих ошибок.

Подготовка DNSmasq

Dnsmasq входит в состав большинства дистрибутивов Linux. Обычно вы можете добавить пакет dnsmasq, если он отсутствует у вас. Стандартный файл конфигурации находится по адресу /etc/dnsmasq.conf; вы также можете добавить файлы в каталог /etc/dnsmasq.d, если хотите сохранить свои настройки отдельно от настроек по умолчанию.

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

# Only operate on eth0
interface=eth0

Функциональность DNS-сервера включена по умолчанию. Вы можете отключить его, изменив порт на 0:

port=0

Теперь Dnsmasq готов к работе только в режиме DCHP.

Настройка DHCP-сервера

DHCP-сервер активируется путем указания диапазона IP-адресов DHCP:

dhcp-range=192.168.0.101,192.168.0.150,255.255.255.0,6h

В этом примере Dnsmasq указывает предлагать IP-адреса в диапазоне от 192.168.0.101 до 192.168.0.150 в подсети 255.255.255.0. Срок аренды выданных IP-адресов составляет шесть часов, после чего клиентам необходимо будет запросить продление аренды.

Вы должны изменить вышеуказанные параметры в соответствии с требованиями вашей сети. Рекомендуется настроить диапазон DHCP так, чтобы он исключал любые IP-адреса, которые вы планируете статически назначать устройствам. Это гарантирует, что устройству, получающему динамическую аренду, никогда не будет выдан «зарезервированный» адрес.

При таком использовании ваш сервер Dnsmasq станет шлюзом по умолчанию на ваших устройствах, когда они получат IP-адрес. Если вы также не настраиваете DNS, вам следует изменить это, чтобы Dnsmasq перестал предлагать себя в качестве шлюза.

dhcp-option=3,192.168.0.50

Измените IP-адрес на адрес вашего маршрутизатора. Теперь ваши устройства смогут использовать маршрутизатор как обычно после того, как они получат IP-адрес от Dnsmasq.

Настройка статических IP-адресов

Вы можете настроить статические IP-адреса в файле конфигурации Dnsmasq. Это позволяет централизовать резервирование IP-адресов, а не разбрасывать их по сетевым файлам на отдельных устройствах.

Чтобы назначить статический IP-адрес, используйте инструкцию dhcp-host. Для этого требуется MAC-адрес, имя хоста и IP-адрес:

dhcp-host=ab:cd:ef:12:34:56,example-host,192.168.0.10,infinite

Здесь устройству с MAC-адресом ab:cd:ef:12:34:56 присваивается имя хоста example-host и фиксированный IP-адрес 192.168.0.10. Срок аренды установлен на бесконечный, чтобы гарантировать отсутствие необходимости продления и IP-адрес никогда не изменится.

Чтобы настроить дополнительные статические IP-адреса, просто повторите инструкцию dhcp-host столько раз, сколько вам нужно. Как минимум рассмотрите возможность добавления явного хоста DHCP для вашего маршрутизатора, чтобы вы могли надежно получить к нему доступ с фиксированным IP-адресом. Это должно совпадать со значением, которое вы указали в строке dhcp-option выше.

Вы можете загрузить информацию о хосте из отдельного файла или каталога с помощью параметров --dhcp-hostsfile и --dhcp-hostsdir. В случае каталога Dnsmasq автоматически загрузит новые изменения без необходимости перезапуска.

Использование вашего DHCP-сервера

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

dnsmasq --test

Затем перезапустите службу Dnsmasq, чтобы применить изменения:

sudo systemctl restart dnsmasq

Отключите встроенный DHCP-сервер вашего маршрутизатора. Затем настройте маршрутизатор или клиентские устройства на использование IP-адреса вашего сервера Dnsmasq для DHCP. Шаги зависят от производителя маршрутизатора, поэтому, если вы заблудились, обратитесь к документации вашего устройства.

Теперь ваш экземпляр работает как DHCP-сервер вашей сети, вы сможете принудительно обновить IP-адрес на своих устройствах, чтобы получить аренду от Dnsmasq. Либо перезапустите сетевую службу, systemctl перезапустите сеть, либо используйте ifdown и ifup, чтобы разорвать и восстановить соединение.

Dnsmasq записывает выданные IP-адреса в свой файл аренды. Вы можете проверить этот файл, чтобы увидеть активные устройства в вашей сети и проверить правильность аренды IP-адресов:

cat /var/lib/misc/dnsmasq.leases

Если вы столкнулись с ошибками, просмотрите журналы службы Dnsmasq, чтобы узнать, что не так:

sudo journalctl -u dnsmasq.service

Авторитетный режим

Проблема, с которой вы можете столкнуться при внедрении вашего сервера в существующую сеть, — время ожидания устройств при обновлении их IP-адресов. Каждый клиент отправит свой предыдущий IP-адрес на DHCP-сервер, что позволит выдать тот же IP-адрес, если он все еще доступен. В случае нового экземпляра Dnsmasq у него не будет записи о существующей паре клиент/IP, поэтому запрос будет проигнорирован.

Клиент в конечном итоге истечет время ожидания и отправит новый запрос, на этот раз запросив любой доступный IP-адрес. Второй запрос будет выполнен успешно, но время ожидания может быть довольно большим, что может привести к заметной задержке во время запуска или инициализации сетевого стека.

Добавление этой строки в ваш файл конфигурации решает эту проблему, если Dnsmasq будет единственным DHCP-сервером в вашей сети:

dhcp-authoritative

Полномочный режим предписывает Dnsmasq принимать запросы от клиентов, даже если они утверждают, что ранее владели IP-адресом, о котором он не знает. Клиент по-прежнему будет допущен к сети и ему будет предоставлен IP-адрес, что устраняет необходимость делать два запроса, разделенных длительным тайм-аутом.

Настройка других параметров

Стоит упомянуть еще несколько настроек:

dhcp-sequential-ip

Dnsmasq обычно хеширует MAC-адрес каждого клиента, чтобы определить IP-адрес, который они получают. Это означает, что клиенты обычно получают один и тот же IP-адрес при каждом подключении, даже если не настроен статический хост. Установка параметра dhcp-sequential-id означает, что Dnsmasq вместо этого будет выдавать IP-адреса в последовательном порядке, начиная с начала указанного вами диапазона IP-адресов.

dhcp-lease-max=100

Этот параметр определяет, сколько одновременных лизингов будет выдавать Dnsmasq. Значение по умолчанию — 1000. Если вы работаете в небольшой сети, рассмотрите возможность уменьшения этого значения, чтобы защитить Dnsmasq от атак типа «отказ в обслуживании». Скомпрометированные хосты могут отправлять вредоносные DHCP-запросы для создания тысяч избыточных аренд.

dhcp-alternate-port=8068,8068

Измените номера портов, используемые для DHCP-серверов и клиентов. Порты по умолчанию: 67 и 68; обычно их не следует изменять, если этого не требует ваша сетевая инфраструктура.

dhcp-leasefile=/dhcp-leases

Измените путь к файлу, используемому для хранения информации об аренде DHCP. По умолчанию это /var/lib/misc/dnsmasq.leases.

Краткое содержание

Dnsmasq легко настроить как простой DHCP-сервер для вашей локальной сети. Он может работать вместе или независимо от функций DNS программного обеспечения.

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