Время аренды DHCP в dnsmasq составляет всего 2 минуты.

Вопрос или проблема

Все DHCPOFFERы, которые я получаю от dnsmasq, имеют время аренды IP 2 минуты, и он игнорирует опции для его изменения.

Подробности:

У меня в сети два роутера:

  • AVM FritzBox 7390 (192.168.0.1)
    • VDSL2 модем
    • База для DECT телефонов
    • Реальная маршрутизация в интернет
  • Netgear R7000 (с прошивкой FreshTomato, 192.168.0.2)
    • Точка доступа WiFi
    • DHCP сервер

Внутренний DNS у меня – это Pi-Hole, работающий в Docker-контейнере на моем сервере. (192.168.0.100)

DHCP сервер, который предоставляет FreshTomato, это dnsmasq, и мне нужно, чтобы он предоставлял новым клиентам следующую конфигурацию:

  • IP в диапазоне 192.168.0.50 – …80
  • Время аренды IP ~1 день
  • Роутер – FritzBox (192.168.0.1)
  • DNS-сервера – это Pi-Hole (192.168.0.100) и, альтернативно, FritzBox (192.168.0.1)

Поэтому я ввел всю эту информацию в интерфейс R7000, и при сохранении конфигурации генерируется следующий конфигурационный файл для dnsmasq:

pid-file=/var/run/dnsmasq.pid
resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasq
dhcp-hostsfile=/etc/dnsmasq
expand-hosts
min-port=4096
interface=br0
dhcp-range=tag:br0,192.168.0.50,192.168.0.80,255.255.255.0,1440m
dhcp-option=tag:br0,3,192.168.0.1
dhcp-lease-max=255
dhcp-authoritative
log-queries
dhcp-option=6,192.168.0.100,192.168.0.1

Это выглядит правильно для меня, когда я тестирую DHCP конфиг с помощью этого удобного скрипта nmap:

nmap --script broadcast-dhcp-discover

Я получаю следующий ответ:

| broadcast-dhcp-discover:
|   Response 1 of 1:
|     IP Offered: 192.168.0.71
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.0.2
|     IP Address Lease Time: 2m00s
|     Renewal Time Value: 1m00s
|     Rebinding Time Value: 1m45s
|     Subnet Mask: 255.255.255.0
|     Broadcast Address: 192.168.0.255
|     Domain Name Server: 192.168.0.100, 192.168.0.1
|_    Router: 192.168.0.1

Всё верно, кроме того, что время аренды IP – всего 2 минуты. Некоторые устройства (3 смартфона и 2 Android планшета) в моей сети не любят такое короткое время аренды и теряют подключение к WiFi каждую минуту.

Кто-нибудь знает, в чем моя ошибка?

Забавный факт: я только что установил FreshTomato, до этого использовал DD-WRT, у которого была точно такая же проблема с dnsmasq.

Редактирование после нескольких тестов

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

  • Docker-контейнер, работающий с dnsmasq
  • второй контейнер, запускающий этот скрипт nmap в цикле

Что я выяснил:
Когда я указываю время аренды в строке dhcp-range, оно просто игнорируется.

Я обнаружил, что можно задать опции DHCP напрямую через их теги, назначенные IANA (https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xml)

Когда я установил время аренды DHCP с dhcp-option=51,48h, время аренды изменилось, но время обновления и перепривязки – нет.

Установка их с помощью тегов 58 и 59 с

dhcp-option=58,24h # Время обновления DHCP (T1)
dhcp-option=59,42h # Время перепривязки DHCP (T2)

не помогла, так как результат, который я получил, был:

IP Address Lease Time: 2d00h00m00s
Renewal Time Value: 1m00s
Rebinding Time Value: 1m45s

Вы уверены, что dnsmasq принял изменения? Я сталкивался с проблемами, когда демон не перезапускался должным образом. Попробуйте перезагрузить роутер, чтобы убедиться, что изменения конфигурации действительно приняты таким образом. Если не хотите перезапускаться, просто перезапустите dnsmasq и проверьте, имеет ли он новый PID после перезапуска.

Кстати, вы не рассматривали возможность того, что ваш DHCP сервер действительно отвечает корректно, но скрипт nmap содержит ошибки? Я только что выполнил эту команду в своей локальной сети и получил такой же ответ. Когда я проверил в syslog, я смог убедиться, что аренды действительно были гораздо дольше.

Ответ или решение

Разбор проблемы с кратким временем аренды IP-адресов в сети, управляемой Dnsmasq, требует тщательного анализа и понимания различных аспектов его конфигурации и работы. В представленной ситуации клиент упоминает, что все DHCPOFFER пакеты от Dnsmasq предлагают IP-аренду на 2 минуты, несмотря на настройку большего времени аренды в конфигурации сервера DHCP на Netgear R7000 с прошивкой FreshTomato.

Теория

Dnsmasq — это компактный и легковесный сервер DHCP и DNS, широко используемый в домашних и малых офисных сетях. Его задачи — назначать IP-адреса клиентам, которые запрашивают их, и управлять этими арендами в рамках настроенной политики. Ключевые параметры, которые влияют на поведение Dnsmasq, включают диапазон IP-адресов, время аренды, адреса маршрутизаторов и серверов DNS. Параметр dhcp-range задает диапазон доступных IP, маску подсети и предполагаемое время аренды. Существуют и другие опции, такие как определенные в Dnsmasq параметры (например, dhcp-option), которые можно настроить для более детального управления.

Пример

В данном сценарии клиента целью является определение времени аренды на уровень около одного дня. Однако, несмотря на выставленную конфигурацию:

dhcp-range=tag:br0,192.168.0.50,192.168.0.80,255.255.255.0,1440m
dhcp-option=tag:br0,3,192.168.0.1
dhcp-lease-max=255
dhcp-authoritative
log-queries
dhcp-option=6,192.168.0.100,192.168.0.1

Dnsmasq продолжает выдавать аренду на 2 минуты.

Применение

Для успешного решения проблемы необходимо рассмотреть несколько шагов:

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

  2. Проверка перезапуска Dnsmasq: Убедитесь, что Dnsmasq действительно перезапущен, и изменения применены, через проверку нового PID процесса. Если просто рестарт не помогает, попробуйте перезагрузить весь маршрутизатор, так как некоторые настройки могут быть применены только при полном перезапуске устройства.

  3. Проверка работы nmap script: Экспериментально было замечено, что некоторые скрипты диагностики DHCP могут выдавать некорректную информацию. Проверьте, являются ли другие инструменты диагностики DHCP, такие как Wireshark или syslog маршрутизатора, более надежными.

  4. Настройка через IANA теги: Потребуется настроить соответствующие параметры через теги IANA, если предыдущие шаги не помогут. Это может требовать настройки dhcp-option напрямую, но необходимо убедиться, что они корректно взаимодействуют с другими параметрами конфигурации.

  5. Логи и диагностика: Включите расширенный логинг, чтобы отследить, какие параметры применяются в момент выдачи DHCPOFFER. Это может пролить свет на проблемное место в конфигурации или в процессе применения настроек.


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

Оцените материал
Добавить комментарий

Капча загружается...