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 он и так запишется, если вы не меняли дефолтный формат базы
Сделайте продолжение, пожалуйста 🙂 Очень ждем