DHCP-сервер с использованием dnsmasq на точке доступа

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

С помощью hostadp я успешно создал точку доступа на своей системе Ubuntu 24.04. Она работает так, что я могу подключиться к WiFi с любого устройства и также использовать удаленный рабочий стол Windows через WiFi на машине. Для назначения IP-адресов внутри сети я хочу использовать функцию DHCP в dnsmasq. Но я не могу заставить это работать. Я нашел это руководство по настройке, которое, похоже, специфично для Ubuntu 24.04: https://www.server-world.info/en/note?os=Ubuntu_24.04&p=dnsmasq&f=2#google_vignette

Настройка кажется простой, я начал следовать ей. И попробовал кое-что здесь и там. Но я не могу заставить это работать.
Мой файл /etc/dnsmasq.conf выглядит так:

interface=wlan0
dhcp-range=192.168.1.50,192.168.1.150,24h
dhcp-option=option:dns-server,192.168.1.1

Мой журнал для dnsmasq в настоящее время выглядит так:

22:25:05 rdlver1 systemd[1]: Stopped dnsmasq.service - dnsmasa - A lightweight DHCP and caching DNS server.
22:25:05 rdlver1 systemd[1]: Starting dnsmasq. service - dnsmasq - A lightweight DHCP and caching DNS server...

22:25:05 rdlver1 dnsmasq[4852]: started, version 2.90 cachesize 150

22:25:05 rdlver1 dnsmasq[4852]: compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP contrack ipset P…

22:25:05 rdlver1 dnsmasq-dhcp[4852]: DHCP, IP range 192.168.1.50 - 192.168.1.150, lease time 1d

22:25:05 rdlver1 dnsmasq-dhcp[4852]: DHCP, sockets bound exclusively to interface wlan0
22:25:05 rdlver1 dnsmasq[4852]: read /etc/hosts - 8 names
22:25:05 rdlver1 resolvconf [4860]: Dropped protocol specifier 'dnsmasq' from 'lo.dnsmasq'. Using 'lo' (ifindex=1).
22:25:05 rdlver1 resolvconf [4860]: Failed to set DNS configuration: Link lo is loopback device.
22:25:05 rdlver1 systemd[1]: Started dnsmasq. service - dnsmasq - A lightweight DHCP and caching DNS server.

Я заметил, что когда я включаю resolved-systemd.service, я получаю следующее сообщение:

22:20:05 rdlver1 resolvconf [4810]: Failed to revert interface configuration: Unit dbus-org.freedesktop. resolvel.service not found.

Когда я затем подключаю устройство через WiFi, журнал показывает это несколько раз подряд:

21:59:28 rdlver1 dnsmasq-dhcp[4604]: DHCP packet received on wlan0 which has no address

21:59:37 rdlver1 dnsmasq-dhcp[4604]: DHCP packet received on wlan0 which has no address

Это то, что я получаю от ip a

1: 10: <LOOPBACK,UP ,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever 
   inet6 :: 1/128 scope host noprefixroute 
      valid_lft forever preferred_lft forever
2: etho: «NO-CARRIER, BROADCAST, MULTICAST, UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 
   link/ether 2c:cf:67:75:12:6d brd ff:ff:ff:ff:ff:ff
3: wlano: «BROADCAST, MULTICAST,UP, LOWER_UP> mtu 1500 qdisc fa_codel state UP group default qlen 1000 
   link/ether 2c:cf:67:75:12:6e brd ff:ff:ff:ff:ff:ff
   inet6 fe80:: 2ecf :67ff:fe75:126e/64 scope link
      valid_lft forever preferred_lft forever

Есть ли известные проблемы для такой конфигурации, которые мешают DHCP-серверу dnsmasq работать правильно, или я что-то делаю не так?

Вопрос в том, насколько точно вы следовали этому руководству, потому что вам нужно настроить IP-адреса в соответствии с вашей конкретной средой, особенно dhcp-option=option:{router,dns-server,netmask}. Адреса (диапазоны) должны соответствовать настройкам сетевого интерфейса, например, если ваша сеть находится в диапазоне 192.168.0.0/16, то вы будете отправлять неверную конфигурацию своим клиентам, или если у вас нет настроенной таблицы маршрутизации на точке доступа.

Пожалуйста, не обижайтесь, если такая тривиальность кажется вам неуместной. Целевая аудитория Ubuntu действительно включает очень неопытных пользователей, которые совершают подобные ошибки, и, поверьте мне, я сам когда-то был таким (и до сих пор остаюсь в некоторых аспектах) – хотя и не на Ubuntu, так как оно еще не существовало – и я делал много таких ошибок.

В любом случае, это все, что я могу придумать, учитывая, как мало деталей в вашем вопросе. Какова ваша сетевая конфигурация (например, реальный адрес роутера)? Что возвращают команды ip address и ip route, когда они выполняются на точке доступа и клиентах? Как вы определили, что hostapd настроен “успешно”? Потому что тот факт, что программа работает без сообщений об ошибках, не обязательно означает, что ошибок нет; семантические (конфигурационные) ошибки не могут быть выявлены, поскольку программа работает корректно, насколько это ей известно. Как проявляется неисправность (таймаут, ‘неизвестный хост’, ‘соединение отклонено’ и т. д.)?

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

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

Теория

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

Пример

Для начала, давайте рассмотрим настройки, которые вы применили. В конфигурации dnsmasq вы указали следующие параметры:

interface=wlan0
dhcp-range=192.168.1.50,192.168.1.150,24h
dhcp-option=option:dns-server,192.168.1.1
  • interface=wlan0: dnsmasq должен работать на интерфейсе wlan0, который отвечает за точку доступа.
  • dhcp-range=192.168.1.50,192.168.1.150,24h: диапазон IP-адресов, который будет раздаваться подключенным устройствам. Эти настройки соответствуют адресу в локальной сети.
  • dhcp-option=option:dns-server,192.168.1.1: указание адреса DNS-сервера, который будет использоваться клиентами. Здесь важно убедиться, что 192.168.1.1 корректно настроен как DNS сервер.

Проблема, которую вы наблюдаете, в частности, сообщение "DHCP packet received on wlan0 which has no address", свидетельствует о том, что интерфейс wlan0 не имеет назначенного IP-адреса. Это необходимо исправить, чтобы dnsmasq мог функционировать корректно.

Применение

  1. Настройка IP-адреса для wlan0: Прежде всего, убедитесь, что интерфейс wlan0 имеет статический IP-адрес. Это можно сделать вручную через командную строку или добавив следующую строку в файл /etc/network/interfaces или использовав netplan, если это актуально для вашей версии Ubuntu.
iface wlan0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
  1. Перезапуск сетевых сервисов: После внесения изменений в конфигурацию сетевых интерфейсов, перезапустите их:
sudo ifdown wlan0 && sudo ifup wlan0
  1. Проверка маршрутизации и IP-адресов: Используйте команды ip address и ip route для проверки текущих настроек интерфейсов и таблицы маршрутов. Убедитесь, что wlan0 имеет корректный сетевой адрес и что маршрутизация настроена правильно.

  2. Проверка работы hostapd: Важно убедиться, что ваш hostapd настроен правильно и работает. Это можно проверить командой sudo systemctl status hostapd. Выйдите из текущей сети и попробуйте подключиться заново к своей Wi-Fi сети, чтобы убедиться, что точка доступа функционирует без ошибок.

  3. Конфигурация systemd-resolved: Если systemd-resolved активен, это может создавать конфликты с dnsmasq. Попробуйте временно отключить systemd-resolved с помощью:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

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

Если проблема сохраняется, проверьте логи системных сообщений с помощью sudo journalctl -u dnsmasq для получения дополнительной информации о возможных ошибках конфигурации. Также убедитесь, что другие сетевые службы (например, Network Manager), не вызывают конфликтов в работе интерфейса wlan0.

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

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

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