Це стара версія документу!
Зміст
Установка и настройка GNU-Radius в связке с stargazer
Внимание
Данная реализация является устаревшей с релиза 0.4.6, и эта документация может быть использована только для общего развития. Используйте в своей практической деятельности новый и очень крутой КучаГен
Базовая конфигурация
1. Итак приступим к установке
# fetch ftp://ftp.gnu.org/gnu/radius/radius-1.6.1.tar.gz # tar zxvf radius-1.6.1.tar.gz # cd radius-1.6.1 # ./configure --enable-client --with-mysql # make # make install # cp -R raddb/* /usr/local/etc/raddb/
2. Настройка
# vim /usr/local/etc/raddb/sqlserver
вставляем настройки нашей базы
interface mysql
server localhost
port 3306
login root
password newpassword
keepopen yes
idle_timeout 14400
doauth yes
auth_db stg
auth_query SELECT encrypt(`password`) \
FROM users \
WHERE login='%u'
check_attr_query SELECT attr,value \
FROM radattr \
WHERE login='%u'
reply_attr_query SELECT attr,value \
FROM radattr \
WHERE login='%u'
doacct no
# vim /usr/local/etc/raddb/clients
Описываем место откуда будут приходить запросы на авторизацию
192.168.56.0/24 cisco
#vim /usr/local/etc/raddb/users
Описываем схему авторизации
DEFAULT Auth-Type = SQL,
Simultaneous-Use = 1
Service-Type = Framed-User,
Framed-Protocol = PPP
Прописываемся в rc.conf
# echo 'radiusd_enable="YES"' >> /etc/rc.conf
Создаем правильный view для нашей структуры (Допустим при помощи SQL-консоли Ubilling):
CREATE VIEW radattr (login,attr,value) AS SELECT users.login,'Framed-IP-Address',users.IP from `users`
Запускаемся
#/usr/local/etc/rc.d/radiusd start
Проверяем все ли хорошо
# radauth -v user_login user_password
... radtest: debug: client.c:326:grad_client_send0: sending request (timeout=3, retries=1) radtest: debug: client.c:140:grad_client_recv: received Access-Accept radtest: debug: radpdu.c:400:grad_decode_pdu: allocated radreq: 0x28423180 radtest: debug: radpdu.c:415:grad_decode_pdu: Access-Accept from 127.0.0.1, id=17, length=32 radtest: debug: recv: Service-Type = (INTEGER) Framed-User radtest: debug: recv: Framed-Protocol = (INTEGER) PPP Authentication passed.
Если требуется чтобы пользователи с отрицательным балансом вобще не могли пройти авторизацию auth_query должен иметь вид
auth_query SELECT encrypt(`password`) \
FROM users \
WHERE login='%u' AND `Cash`>=`Credit`

