Авторизация pppoe сессий после отключения питания сервера

Radius related questions
fadxcom
Posts: 11
Joined: 31 Oct 2016, 15:52

Авторизация pppoe сессий после отключения питания сервера

Post by fadxcom »

Здравствуйте.

Имеется тестовая связка: сервер accel-ppp и freeradius. Freeradius хранит информация о подключенных пользователях в /var/log/freeradius/radutmp
После отключения сервера с accel-ppp по питанию radius отказывается авторизовывать пользователя, который был подключен до отключения питания.

"Reply-Message := "\r\nYou are already logged in - access denied\r\n\n""

После удаления или стирания информации в radutmp пользователь соединяется без проблем.
Вопрос. Возможно ли средствами accel-ppp при загрузки сервера сбросить эти подключения?
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: Авторизация pppoe сессий после отключения питания сервера

Post by dimka88 »

fadxcom wrote: После удаления или стирания информации в radutmp пользователь соединяется без проблем.
Вопрос. Возможно ли средствами accel-ppp при загрузки сервера сбросить эти подключения?
accel-ppp как и другие NAS(ы) могут все с точностью наоборот.
Мне кажется для решение вашей проблемы необходимы скрипты на стороне freeradius, которые будут анализировать аккаунтинг ответы от accel-ppp и видоизменять radutmp.
Почему бы не рассмотреть метод авторизации chapsecrets.
fadxcom
Posts: 11
Joined: 31 Oct 2016, 15:52

Re: Авторизация pppoe сессий после отключения питания сервера

Post by fadxcom »

Спасибо за ответ.
Можно поподробнее как NAS(ы) могут с точностью на оборот?
chapsecrets - вы имеете ввиду использовать файл типа /etc/ppp/chapsecrets?
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: Авторизация pppoe сессий после отключения питания сервера

Post by dimka88 »

fadxcom wrote:chapsecrets - вы имеете ввиду использовать файл типа /etc/ppp/chapsecrets?
Да.
fadxcom wrote: Можно поподробнее как NAS(ы) могут с точностью на оборот?
NAS шлет аккаунтинг информацию freeradius серверу.
acct-interim-interval=n
Specifies interval in seconds to send accounting information (may be overridden by Acct-Interim-Interval attribute).
И в случае, если freeradius не ответил на Interim-Update, то accel-ppp завершит сессию по таймауту.
acct-timeout=n
Specifies timeout to wait reply for Interim-Update packets.
If n is greater than zero then session will be terminated after timeout exceeds. If n is zero then don't retransmit Interim-Update packets and don't terminate session.
Вообще есть смысл использовать только freeradius, не проще Abills какой нибудь поставить?
fadxcom
Posts: 11
Joined: 31 Oct 2016, 15:52

Re: Авторизация pppoe сессий после отключения питания сервера

Post by fadxcom »

chapsecrets не подходит, т.к. уже все клиенты авторизуются через радиус+самописный биллинг и проблем нет в работе.
Проблема только в том, что после неожиданной перезагрузки сервера (выключение питания к примеру) радиус авторизовывать отказывается, т.к. в файле radutmp присутствуют пользователи, которые были авторизованны с данного сервера. Вот и интересует меня, возможно есть какой то параметр в accel-ppp, который, при следующей загрузки NASa, может сказать радиусу что все сессии, которые были подняты до аварийного отключения, не действительны и радиус их закроет. Если нет, то буду уже скрипт городить.
Как я понял, что acct-interim-interval=n и acct-timeout=n работают если уже присутствуют подключения на сервере (возможно ошибаюсь), но эти параметры пробовал, не помогает.
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: Авторизация pppoe сессий после отключения питания сервера

Post by dimka88 »

Покажите несколько строк из файла radutmp, может какой костыль придумаем.
fadxcom
Posts: 11
Joined: 31 Oct 2016, 15:52

Re: Авторизация pppoe сессий после отключения питания сервера

Post by fadxcom »

Сам radutmp немного в непонятном формате. Но если его прочитать с помощью radwho, то получается примерно:
Login Name What TTY When From Location
00003882-0 00003882-01 PPP S435 Mon 21:47 $nas_ip 10.39.1.34
00006448-0 00006448-01 PPP S54 Mon 22:00 $nas_ip 10.39.3.182
00004067-0 00004067-01 PPP S437 Mon 22:30 $nas_ip 10.39.1.87
00006806-0 00006806-01 PPP S85 Mon 22:42 $nas_ip 10.39.5.69

А если просто с консоли посмотреть файл (mcview):

00003882-01.....................Ё...d3d39a73[цл┐
'."P...ф▒.X................A...c4:6e:1f:5a:6b:.................00004044-01.....................;...d3d39d73[цл┐
'.JP...D║.X................A...f0:7d:68:9c:c1:.................00006448-01.....................6...67c00313[цл┌
'.╤P...г■.X................A...28:28:5d:d7:96:.................00004067-01.....................╣...d3d39c8f[цл┐
'.WP...ф⌡.X................A...00:01:6c:1e:88:.................00006806-01.....................U...67c0035a[цл┌
'.EP... ·.X................A...28:28:5d:87:55:.................
denk20
Posts: 3
Joined: 24 Aug 2015, 12:15

Re: Авторизация pppoe сессий после отключения питания сервера

Post by denk20 »

А почему бы тогда не перенаправить radutmp в какую-то таблицу БД, тем более что freeradius позволяет и в mysql и в postgresql?
Тогда при аварийной перезагрузке сервера просто delete from <tablename> where <...>. Т.е. одним запрососм вы удалите все несуществующие сессии.
Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: Авторизация pppoe сессий после отключения питания сервера

Post by Dmitry »

1. отключить в радиусе проверку на множественность сессий
2. передать эту функцию accel-ppp:
[common]
single-session=replace
fadxcom
Posts: 11
Joined: 31 Oct 2016, 15:52

Re: Авторизация pppoe сессий после отключения питания сервера

Post by fadxcom »

single-session=replace не получится сделать, т.к. хотим организовать работу сразу нескольких серверов доступа.
В итоге перевел в мускул аккаунтинг. Теперь после рестарта сервера доступа в радиус прилетает Acct-Status-Type = Accounting-On и проблем с реконнектом пользователей не возникает.
Теперь другой вопрос есть. Подскажите пожалуйста, возможно кто то сталкивался. Как организовать работу 2х RADIUS серверов и если упадет один RADIUS, то второй оставался работать? Есть тестовый стенд:
Абонент PPPoE -> 2 NAS Accel-ppp -> 2 Freeradius -> Mysql.

Какие настройки надо мне внести/поправить в секции [radius] что бы заработало правильно. Имею следующий конфиг:
[radius]
dictionary=/opt/accel-ppp/share/accel-ppp/radius/dictionary
nas-ip-address=192.168.40.2
gw-ip-address=10.10.10.1
server=ip1,xxx,fail-time=3,weight=1
server=ip2,xxx,fail-time=3,weight=1
dae-server=192.168.40.2:3799,xxx
dm_coa_secret=xxx
verbose=1
interim-verbose=1
timeout=3
max-try=3
acct-interim-interval=120
acct-timeout=0
acct-delay-time=10
acct-on=1

Это последний вариант конфигурации, но вариантов было много, разобраться не могу, по этому прошу помощи.
Post Reply