Как создать 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) точку доступа, попробуйте аппаратный сброс:
- Удерживайте кнопку Reset 20 секунд при включённом питании.
- Не отпуская, отключите питание и подождите ещё 20 секунд.
- Подключите питание снова и держите кнопку ещё 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
Установите стандартную Linksys прошивку и затем используйте “Upgrade Firmware” для установки dd‑wrt на точку доступа (AP). IMPORTANT: используйте проводное подключение (кабель) при прошивке, не по Wi‑Fi.
Перезагрузите AP и зайдите в веб‑интерфейс новой прошивки.
Сетевые базовые настройки:
- Установите динамическую конфигурацию DHCP у клиента (если применимо).
- Отключите встроенный DHCP сервера (Chillispot будет управлять DHCP для клиентов).
- Измените локальный IP AP на 192.168.10.1.
- Укажите шлюз и DNS.
- Примените изменения и войдите по новому IP.
- На странице 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
Распакуйте tarball FreeRADIUS и зайдите в каталог исходников.
Соберите с экспериментальными модулями:
./configure --with-experimental-modules
make
sudo make install- После установки скопируйте файл radiusd.conf (если у вас есть готовая конфигурация) в каталог:
/usr/local/etc/raddb/Обычно редактировать radiusd.conf не требуется для базовой установки.
- Настройка 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.
- Отредактируйте файл клиентов 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/скрипт входа)
- Скопируйте hotspotlogin.cgi из http://chillispot.org в каталог CGI вашего веб‑сервера, например:
/var/www/cgi-bin- Отредактируйте файл и замените секрет на UAM secret, который вы указали в настройках Chillispot на WRT54G.
Примечание: вместо CGI можно использовать PHP‑скрипт для авторизации. PHP проще для персонализации, но CGI обычно считается безопаснее. Если нужен PHP‑вариант, автор исходного гайда предложил отправить запрос на [email protected] для получения копии.
Этап 4 — phpMyPrepaid и MySQL
- Распакуйте phpMyPrepaid в директорию веб‑сервера, например:
/var/www/html/myprepaidСоздайте в MySQL базу данных с именем radius и создайте пользователя с паролем для неё.
Используйте файл db_mysql.db из архива phpMyPrepaid для создания таблиц в базе данных radius.
Отредактируйте файл dbconnect.php в директории phpMyPrepaid и укажите имя пользователя и пароль от MySQL для базы radius.
ВАЖНО: сохраните dbconnect.php вне публичной папки веб‑сервера или используйте защиту доступа, иначе пароль будет легко украсть.
В файле config.inc.php укажите путь к dbconnect.php (измените строку, указывающую на dbconnect).
Откройте в браузере:
http://yoursite.com/whereveryouputphpmyprepaid/
и создайте несколько билетов/талонов. Проверьте, что записи пользователей появились в таблице radcheck вашей базы radius.
- Запустите FreeRADIUS в режиме отладки (под root):
radiusd -xxyx -l stdout- Выберите пользователя и пароль в базе и попробуйте подключиться с беспроводного клиента. Если вход проходит — переходите к следующему шагу. Если нет — вернитесь к предыдущим пунктам и проверьте настройки.
Этап 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 запускается в режиме отладки без ошибок
Отладка и распространённые проблемы
- Клиент получает IP, но не перенаправляется на страницу логина
- Проверьте Redirect URL в настройках Chillispot (заканчивается на “/“ и использует https).
- Убедитесь, что hotspotlogin.cgi доступен и имеет права исполнения (chmod +x).
- Проверьте логи Chillispot и FreeRADIUS.
- FreeRADIUS не принимает запросы от AP
- Убедитесь, что IP AP указан в clients.conf и secret совпадает с тем, что в Chillispot.
- Проверьте сетевые правила (iptables, firewall), которые могут блокировать порт RADIUS (обычно 1812/1813).
- Запустите FreeRADIUS в отладке: через вывод вы увидите ошибки аутентификации.
- phpMyPrepaid не добавляет пользователей в radcheck
- Проверьте настройки подключения к базе в dbconnect.php.
- Убедитесь, что скрипт имеет права на запись в базу.
- Посмотрите SQL‑логи или включите general_log в MySQL для отладки.
Восстановление точки доступа при «кирпиче» (аппаратный сброс)
Если устройство перестало отвечать после прошивки или изменения настроек:
- Удерживайте Reset 20 секунд при включённом питании.
- Затем, не отпуская Reset, отключите питание на 20 секунд.
- Включите питание снова, удерживая Reset ещё 20 секунд.
- Попробуйте зайти на 192.168.1.1 и прошить устройство заново по проводному подключению.
Мини‑методология при внедрении
- Развёртывание в лаборатории: тестовая точка доступа и тестовый RADIUS.
- Проверка по шагам: AP → Chillispot → hotspotlogin → RADIUS → база пользователей.
- Автоматизация резервного копирования конфигураций и экспорт секретов.
- Постепенный выпуск: одна точка доступа → несколько точек → производство.
Диаграмма принятия решений при ошибках (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: при первой проблемной диагностике делайте снимки конфигураций и бэкапы перед изменениями.
Похожие материалы
Настройка Eufy Lumos Wi‑Fi лампочки — без хаба
Игровой ноутбук для работы: как выбрать
Как собрать первый умный дом — руководство для начинающих
Запуск команд Linux в фоновом режиме — 6 методов
Проверка стабильности интернета через ping