Гид по технологиям

Как создать Wi‑Fi хотспот с DD‑WRT, FreeRADIUS и Chillispot

7 min read Wi‑Fi Обновлено 19 Nov 2025
Wi‑Fi хотспот: DD‑WRT, FreeRADIUS, Chillispot
Wi‑Fi хотспот: DD‑WRT, FreeRADIUS, Chillispot

Коротко: пошаговое руководство по развёртыванию публичного Wi‑Fi хотспота на базе DD‑WRT, Chillispot и FreeRADIUS. Описаны настройки роутера WRT54G/WRT54GL, конфигурация FreeRADIUS, установка phpMyPrepaid и отладка. Включены чек‑листы, рекомендации по восстановлению и простая диаграмма отладки.

Краткое введение

Создание публичного Wi‑Fi хотспота с нуля может показаться сложной задачей. Это руководство описывает опыт развёртывания с DD‑WRT на Linksys WRT54G/WRT54GL, использованием Chillispot для управления доступом и FreeRADIUS для аутентификации. Также рассматривается интеграция с phpMyPrepaid для продажи пропусков/талонов.

Авторские замечания

Автор оригинальной инструкции: Sean Bracken. Я перевёл и адаптировал материал для русскоязычных инженеров, добавил подсказки по отладке, чек‑листы и рекомендации по безопасному хранению паролей.

Важное предупреждение

Важно: следование инструкциям может лишить вас гарантии на устройство Linksys. Действуйте на свой страх и риск. Инструкции предполагают знание Linux, PHP, MySQL и Apache. Если вы «окирпичите» (brick) точку доступа, попробуйте аппаратный сброс:

  1. Удерживайте кнопку Reset 20 секунд при включённом питании.
  2. Не отпуская, отключите питание и подождите ещё 20 секунд.
  3. Подключите питание снова и держите кнопку ещё 20 секунд.

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

Что понадобится

  • DD‑WRT: скачайте с http://dd-wrt.com
  • FreeRADIUS: скачайте с http://freeradius.org/
  • phpMyPrepaid: скачайте с http://sourceforge.net
  • Linksys WRT54GL (или WRT54G)
  • Сервер с PHP, Apache, MySQL и модулями разработки MySQL
  • Терпение и базовые навыки системного администратора

Этап 1 — подготовка DD‑WRT и включение Chillispot

  1. Установите стандартную Linksys прошивку и затем используйте “Upgrade Firmware” для установки dd‑wrt на точку доступа (AP). IMPORTANT: используйте проводное подключение (кабель) при прошивке, не по Wi‑Fi.

  2. Перезагрузите AP и зайдите в веб‑интерфейс новой прошивки.

  3. Сетевые базовые настройки:

  • Установите динамическую конфигурацию DHCP у клиента (если применимо).
  • Отключите встроенный DHCP сервера (Chillispot будет управлять DHCP для клиентов).
  • Измените локальный IP AP на 192.168.10.1.
  • Укажите шлюз и DNS.
  • Примените изменения и войдите по новому IP.
  1. На странице Administration (Администрирование) включите Chillispot и заполните поля:
  • IP адрес вашего RADIUS сервера (сервер аутентификации).

  • DNS (при необходимости).

  • Redirect URL — URL перенаправления для авторизации, например:

    https://123.123.123.123/cgi-bin/hotspotlogin.cgi/

    Важно: адрес должен заканчиваться слешем “/“ и использовать https.

  • Shared key — общий секрет для общения AP и RADIUS/Chilli (запомните его).

  • DHCP Interface — установите “lan+wlan” (или Lan+Wlan).

  • NAS id — имя/идентификатор вашей точки доступа.

  • UAM secret — пароль, который Chillispot будет использовать для связи с hotspotlogin.cgi.

Сохраните настройки и перезагрузите AP. Дайте 10 минут на инициализацию сервисов.

Этап 2 — установка и базовая конфигурация FreeRADIUS

  1. Распакуйте tarball FreeRADIUS и зайдите в каталог исходников.

  2. Соберите с экспериментальными модулями:

./configure --with-experimental-modules
make
sudo make install
  1. После установки скопируйте файл radiusd.conf (если у вас есть готовая конфигурация) в каталог:
/usr/local/etc/raddb/

Обычно редактировать radiusd.conf не требуется для базовой установки.

  1. Настройка SQL модуля: отредактируйте
/usr/local/etc/raddb/sql.conf

и в секции SQL задайте:

# Database type
# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,
# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds
driver = "rlm_sql_mysql"

# Connect info
server = "localhost"
login = "yourlogin"
password = "your password"

# Database table configuration
radius_db = "radius"

Оставьте реальные имя пользователя и пароль MySQL.

  1. Отредактируйте файл клиентов RADIUS:
/usr/local/etc/raddb/clients.conf

Добавьте запись для вашей точки доступа (NAS):

client xxx.xxx.xxx.xxx {
  secret = xxxxxxx
  shortname = private-network-9
  nastype = other
}
  • xxx.xxx.xxx.xxx — IP вашей AP (или 0.0.0.0/0, если хотите разрешить несколько AP с одним секретом).
  • secret — тот же секрет, что вы указали в настройках Chillispot.

Этап 3 — hotspotlogin.cgi (CGI/скрипт входа)

  1. Скопируйте hotspotlogin.cgi из http://chillispot.org в каталог CGI вашего веб‑сервера, например:
/var/www/cgi-bin
  1. Отредактируйте файл и замените секрет на UAM secret, который вы указали в настройках Chillispot на WRT54G.

Примечание: вместо CGI можно использовать PHP‑скрипт для авторизации. PHP проще для персонализации, но CGI обычно считается безопаснее. Если нужен PHP‑вариант, автор исходного гайда предложил отправить запрос на [email protected] для получения копии.

Этап 4 — phpMyPrepaid и MySQL

  1. Распакуйте phpMyPrepaid в директорию веб‑сервера, например:
/var/www/html/myprepaid
  1. Создайте в MySQL базу данных с именем radius и создайте пользователя с паролем для неё.

  2. Используйте файл db_mysql.db из архива phpMyPrepaid для создания таблиц в базе данных radius.

  3. Отредактируйте файл dbconnect.php в директории phpMyPrepaid и укажите имя пользователя и пароль от MySQL для базы radius.

ВАЖНО: сохраните dbconnect.php вне публичной папки веб‑сервера или используйте защиту доступа, иначе пароль будет легко украсть.

  1. В файле config.inc.php укажите путь к dbconnect.php (измените строку, указывающую на dbconnect).

  2. Откройте в браузере:

http://yoursite.com/whereveryouputphpmyprepaid/

и создайте несколько билетов/талонов. Проверьте, что записи пользователей появились в таблице radcheck вашей базы radius.

  1. Запустите FreeRADIUS в режиме отладки (под root):
radiusd -xxyx -l stdout
  1. Выберите пользователя и пароль в базе и попробуйте подключиться с беспроводного клиента. Если вход проходит — переходите к следующему шагу. Если нет — вернитесь к предыдущим пунктам и проверьте настройки.

Этап 5 — отдых

Если всё работает, можно выпить кофе и расслабиться. Если возникают проблемы — ниже приведены практические советы по отладке.

Практические советы по безопасности

  • Не храните пароли БД в публичных каталогах веб‑сервера.
  • Используйте сложные секреты для UAM и shared key.
  • По возможности применяйте HTTPS для страницы авторизации и логина.
  • Ограничьте доступ к панели управления маршрутизатора и серверу по IP и SSH‑ключам.

Чек‑лист перед запуском в прод

  • DD‑WRT успешно установлена на AP (проверить версию и веб‑интерфейс)
  • Chillispot включён и показывает состояние
  • IP AP — 192.168.10.1; DHCP отключён на AP
  • RADIUS‑сервер доступен по указанному IP
  • clients.conf содержит запись для AP с правильным secret
  • hotspotlogin.cgi доступен по HTTPS и использует правильный UAM secret
  • phpMyPrepaid может создавать билеты и записывать пользователей в radcheck
  • FreeRADIUS запускается в режиме отладки без ошибок

Отладка и распространённые проблемы

  1. Клиент получает IP, но не перенаправляется на страницу логина
  • Проверьте Redirect URL в настройках Chillispot (заканчивается на “/“ и использует https).
  • Убедитесь, что hotspotlogin.cgi доступен и имеет права исполнения (chmod +x).
  • Проверьте логи Chillispot и FreeRADIUS.
  1. FreeRADIUS не принимает запросы от AP
  • Убедитесь, что IP AP указан в clients.conf и secret совпадает с тем, что в Chillispot.
  • Проверьте сетевые правила (iptables, firewall), которые могут блокировать порт RADIUS (обычно 1812/1813).
  • Запустите FreeRADIUS в отладке: через вывод вы увидите ошибки аутентификации.
  1. phpMyPrepaid не добавляет пользователей в radcheck
  • Проверьте настройки подключения к базе в dbconnect.php.
  • Убедитесь, что скрипт имеет права на запись в базу.
  • Посмотрите SQL‑логи или включите general_log в MySQL для отладки.

Восстановление точки доступа при «кирпиче» (аппаратный сброс)

Если устройство перестало отвечать после прошивки или изменения настроек:

  1. Удерживайте Reset 20 секунд при включённом питании.
  2. Затем, не отпуская Reset, отключите питание на 20 секунд.
  3. Включите питание снова, удерживая Reset ещё 20 секунд.
  4. Попробуйте зайти на 192.168.1.1 и прошить устройство заново по проводному подключению.

Мини‑методология при внедрении

  1. Развёртывание в лаборатории: тестовая точка доступа и тестовый RADIUS.
  2. Проверка по шагам: AP → Chillispot → hotspotlogin → RADIUS → база пользователей.
  3. Автоматизация резервного копирования конфигураций и экспорт секретов.
  4. Постепенный выпуск: одна точка доступа → несколько точек → производство.

Диаграмма принятия решений при ошибках (Mermaid)

flowchart TD
  A[Проблема с подключением клиента] --> B{Клиент получает IP?}
  B -- Да --> C{Переадресация на логин происходит?}
  B -- Нет --> D[Проверить DHCP Chillispot и настройки интерфейсов]
  C -- Да --> E[Проверить FreeRADIUS и учётные записи]
  C -- Нет --> F[Проверить Redirect URL и hotspotlogin.cgi]
  D --> G[Проверить логи Chillispot и сетевые правила]
  F --> G
  E --> H[Запуск radiusd в режиме отладки]
  G --> H

Роль‑ориентированные чек‑листы

  • Сисадмин сервера

    • Установить FreeRADIUS, проверить sql.conf
    • Настроить users/radcheck
    • Включить режим отладки при ошибках
  • Веб‑админ

    • Установить phpMyPrepaid
    • Защитить dbconnect.php и настроить HTTPS
    • Проверить работу hotspotlogin.cgi
  • Сетевой инженер

    • Прошить DD‑WRT и настроить Chillispot
    • Проверить clients.conf и секреt
    • Проверить firewall и NAT правила

Критерии приёмки

  • Клиент подключается к Wi‑Fi, получает IP и перенаправляется на HTTPS страницу логина.
  • После корректного ввода учётных данных клиент получает доступ в интернет.
  • FreeRADIUS фиксирует успешную аутентификацию в логах.
  • Публичные параметры (пароли, секреты) хранятся за пределами публичной директории веб‑сервера.

Дополнительные советы и исключения

  • Если вы планируете масштабировать сеть на несколько AP, используйте уникальные NAS id для мониторинга и рассмотрите использование централизованной системы управления ключами.
  • Для малого бизнеса PHP‑реализация страницы логина может быть удобнее, но убедитесь в достаточном уровне защиты (ввод в HTTPS, фильтрация вводимых данных).
  • Chillispot давно не развивается; рассмотрите альтернативы (например CoovaChilli) при планах на долгосрочную поддержку.

Контакты и тестовая зона

Автор оригинала предлагал тестовую зону FreeRadius для испытаний конфигурации Chillispot:

http://swarmhotspots.com/Chilli-Test-Area

Обратная связь приветствуется по адресу: [email protected]

Краткое резюме

  • Следуйте шагам по порядку: прошивка AP → Chillispot → FreeRADIUS → hotspotlogin → phpMyPrepaid.
  • Защитите конфигурации и пароли, используйте HTTPS.
  • При ошибках используйте режим отладки FreeRADIUS и логи Chillispot.

Important: при первой проблемной диагностике делайте снимки конфигураций и бэкапы перед изменениями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка Eufy Lumos Wi‑Fi лампочки — без хаба
Умный дом

Настройка Eufy Lumos Wi‑Fi лампочки — без хаба

Игровой ноутбук для работы: как выбрать
Ноутбуки

Игровой ноутбук для работы: как выбрать

Как собрать первый умный дом — руководство для начинающих
Умный дом

Как собрать первый умный дом — руководство для начинающих

Запуск команд Linux в фоновом режиме — 6 методов
Linux

Запуск команд Linux в фоновом режиме — 6 методов

Проверка стабильности интернета через ping
Сеть

Проверка стабильности интернета через ping

Исправление ошибки TslGame.exe в PUBG
Игры

Исправление ошибки TslGame.exe в PUBG