Hotspot для самых маленьких, часть 4: подключаем RADIUS
Доброго времени суток!
Предыдущие серии:
Hotspot для самых маленьких, часть 1
Hotspot для самых маленьких, часть 2: своя страница входа + социальные сети
Hotspot для самых маленьких, часть 3: https и shaping
Соскучились уже, наверное?
Сегодня часть будет короткой, а посвящена она будет хранению учетных записей пользователей. Не всегда удобно заводить пользователей хотспота на каждом устройстве. А если устройств много? А если пользователей? А если хочется еще и каждому пользователю набор атрибутов – скорость там, приоритет, баланс (если доступ платный) ну и так далее.
Для управления аутентификацией и авторизацией люди и придумали RADIUS – Remote Authentication in Dial-In User Service. Изначально он обслуживал dial-up подключения (отсюда и dial-in в названии), а сейчас же его возможности гораздо шире.
В Linux одна из самых популярных реализаций это FreeRADIUS. Её то мы и будем использовать.
Ставим
как обычно, я использую debian 7 или 8, в данном случае не принципиально):
#sudo apt-get install freeradius freeradius-mysql freeradius-utils mysql-server php5-mysql php5
Не буду заострять внимания на установке mysql (разберетесь, думаю).
Создаем БД и пользователя:
#mysql -u root -p
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "radiuspassword";
flush privileges;
exit
Теперь загружаем схему:
#mysql -uradius -p radius < /etc/freeradius/sql/mysql/schema.sql
Настраиваем
Настраиваем sql-параметры /etc/freeradius/sql.conf:
# Connection info:
server = "localhost"
port = 3306
login = "radius" # пользователь БД
password = "radiuspassword" # пароль к БД
radius_db = "radius" # название БД
В /etc/freeradius/radiusd.conf раскомментируем:
$INCLUDE sql.conf
Далее включаем авторизацию через sql. Для этого раскомментируем опцию sql в следующих файлах:
/etc/freeradius/sites-available/default (разделы authorize, accounting, session)
/etc/freeradius/sites-available/inner-tunnel (разделы authorize, session)
Теперь займемся клиентами. Клиенты для RADIUS-сервера - это устройства, которые отправляют ему информацию о подключениях (их еще называют NAS - Network Access Server).
/etc/freeradius/clients.conf:
client 192.168.0.1 {
secret = secret
nastype = other
}
Вместо 192.168.0.1 может быть и dns-имя (оно должно резолвиться сервером)
secret - это ключ, который сообщает клиент
nastype может быть, например, cisco, но почти всегда работает other, если не нужно поддержки специфических расширений
Делаем красиво
Теперь устанавливаем веб-админку. dialup admin, некогда "классическая" веб-админка для RADIUS ныне стара, как говно мамонта и страшна, как ядерная зима.
Мы воспользуемся daloRADIUS:
#sudo apt-get install php-pear php5-gd php5-mysql php-db php-dbg
#wget http://sourceforge.net/projects/daloradius/files/latest/download?source=files
#tar -zxvf daloradius-0.9-9.tar.gz
#mysql -uradius -p radius < daloradius-0.9-9/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
В файле конфигурации daloradius-0.9-9/library/daloradius.conf.php указываем параметры доступа к нашей БД
$configValues['CONFIG_DB_ENGINE'] = 'mysql';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radiuspassword';
$configValues['CONFIG_DB_NAME'] = 'radius';
Переносим папку в директорию веб-сервера
- попутно не забываем установить права.
- DNS-имя вида radius.example.net создаем по вкусу, но можно и так: http://example.com/radius
- папку daloradius-0.9-9 можно переименовать во что-нибудь более удобоваримое, сделать alias или vhost (по вкусу)
- удалить файлик update.php
Заходим в админку:
логин: administrator
пароль: radius
Добавить нового пользователя просто: Management -> New User. Заполняем имя, пароль (сейчас нас интересует Username Authentication). Можно оставить без шифрования или указать MD5 или Chap (зависит от того, в каком формате будет передавать пароль клиент). Группу можно на указывать. Нажимаем Apply - и вуаля!
На сегодня всё, а в следующем выпуске расскажу, что со всем этим счастьем делать
Замечательный материал! Он заставил меня купить VDS хостинг на месяц, кстати 190руб стоит.
Настроил радиус, далорадиус, осталось разобраться с подключением микротика к радиусу.
Жду продолжения!
У кого не подключается к радиусу, увеличивайте таймаут подключения.
Большое спасибо за отзыв
А что именно хотелось бы увидеть в продолжении?
Как работает авторизация (процесс изнутри) в какие таблицы радиус смотрим и чего своего мы можем добавить в запрос.
Классная серия статьей! Когда будут следующие статьи? Как это все можно реализовать в openWRT?
С OpenWRT не разбирался, но там точно есть своя версия хотспота (Coova вроде).
Логика работы будет та же, но есть нюансы
Насчёт продолжения пока не знаю, слишком много работы.
Где продолжение???
Как записать mac-адрес клиента в бд?
в какую? в radiusdb он и так запишется, если вы не меняли дефолтный формат базы
Сделайте продолжение, пожалуйста
Очень ждем