Ключевые слова:radius, dialup, (найти похожие документы)
From: Oleg I. Petrov <[email protected]>
Newsgroup: [email protected]
Date: Mon, 25 Sep 2003 14:31:37 +0000 (UTC)
Subject: Radius и PortSlave
> Проблема в чем, что я хочу перейти с
> dialup-овских серверов построенных на mgetty
> (на каждом сервере одинаковая база юзеров)
> на radius сервер с одной базой, и у меня уже есть
> валом юзеров, которые имеют и uucp и online, то есть
> у них есть Uuser - с одним паролем и user с другим,
> обходить и всех перестраивать большой напряг, вот я и думаю
> как бы это заставить радиус проверять юзеров в базе
> с префиксом (а разбивать по префиксам надо, так как
> различный сервис).
Тогда могу посоветовать следующие варианты:
Вариант 1 (самый простой)
Рассылаешь всем пользователям с логином типа
Uuser письма о том, что, например, с 1 января 2000 г.
они должны заходить с логином UUuser, и вводишь
radius сервер с 1 января 2000 г.
Вариант 2
Не знаю как на остальных radius серверах, а на
xtradius у нас работает следующая конструкция:
DEFAULT Auth-Type = External, Prefix = "cb#"
Service-Type =Framed-User,
Exec-Program-Wait = "/usr/local/bin/cblogin %u %w",
Ascend-Callback = Callback-Yes,
Ascend-Data-Svc = Switched-modem,
Ascend-Send-Auth = Send-Auth-None,
Ascend-CBCP-Enable = CBCP-Enabled,
Ascend-CBCP-Mode = CBCP-User-Callback,
Framed-Protocol = PPP,
Fall-Through = Yes
DEFAULT Auth-Type = External
User-Service-Type = Framed-User,
Exec-Program-Wait = "/usr/local/bin/login %u %w",
Framed-Protocol=PPP,
Idle-Timeout = 900,
Ascend-Maximum-Channels=1 ,
Ascend-Assign-IP-Pool=1,
Framed-Routing = None
Здесь cblogin и login перловые скрипты, в которых происходит
аутификация через СУБД, а параметры %u и %w соответственно
логин и пароль. Если аутификация успешна, то скрипт выдает на
стандартный вывод:
print"Session-Timeout = ",$session_time,"\n";
print"Auth-Type = Accept\n";
exit(0);
а если не прошла, то:
print"Session-Timeout = ",$session_time,"\n";
print"Auth-Type = Reject\n";
exit(-1);
Фишка в том, что в скрипт передается весь логин
( в нашем случае например cb#test и нам приходится
скриптом обрезать первые три символа).
В твоем случае вместо обращения к базе данных
можно шифровать пароль (здесь как-то пробигало
как это делать), а затем сравнивать с данными из
файла passwd.
Однако есть нюанс - после аутификации для
системы твой Uuser бедет все равно user. И если
ты для учета используешь sac -p Uuser то получишь
0 часов, т.к. твой Uuser уже не Uuser, а user. Тоже
самое и для логов радиуса. Так что насчет биллинга
подумать надо.