Radius и "зависшие сесии"
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Radius и "зависшие сесии"
стоит freeradius+mpd4+mysql
пишу под себя что-то вроде билинга. все отлично работает.
для просмота активных сесий vpn-клиентов. делаю выборку с таблицы radacct.
если поиле AcctStopTime='0000-00-00 00:00:00' то сесия активна
но возникает проблема, если рестартануть mpd. некоторые сесии не закрываються....
возникает несколько записей с одним и тем же логином и AcctStopTime='0000-00-00 00:00:00'
через конфиг эту проблемк решить можно. потомукак ничего нормального не нашел
может кто-то сталкивался?
пишу под себя что-то вроде билинга. все отлично работает.
для просмота активных сесий vpn-клиентов. делаю выборку с таблицы radacct.
если поиле AcctStopTime='0000-00-00 00:00:00' то сесия активна
но возникает проблема, если рестартануть mpd. некоторые сесии не закрываються....
возникает несколько записей с одним и тем же логином и AcctStopTime='0000-00-00 00:00:00'
через конфиг эту проблемк решить можно. потомукак ничего нормального не нашел
может кто-то сталкивался?
Помни о смерти, все суета сует....
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
- Контактная информация:
Re: Radius и "зависшие сесии"
у мну тоже самое. забил. не так часто у мну мпд рестартится
ядерный взрыв...смертельно красиво...жаль, что не вечно...
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
у меня тоже. но все же....
я уже даже написал скриптец на пхп, который убивает ненужные сесии.
теперь понял что так не пайдет, потому как трафик считаю радиусом, и удаление сесий внесет неточность...
я уже даже написал скриптец на пхп, который убивает ненужные сесии.
Код: Выделить всё
# удаляем зависшие сесии в БД(посре рестарта mpd не удаляеться почемуто...)
$query="select max(RadAcctId)as mymax,count(username) as mycount,username from radius.radacct where AcctStopTime='0000-00-00 00:00:00' group by username";
$res=mysql_query($query);
while ($row=mysql_fetch_assoc($res))
{
if ($row['mycount']>1)
{
# удаляем зависшие сессии
$query="delete from radius.radacct where username='".$row['username']."' and RadAcctId<>".$row['mymax']." and AcctStopTime='0000-00-00 00:00:00'";
mysql_query($query);
}
}
теперь понял что так не пайдет, потому как трафик считаю радиусом, и удаление сесий внесет неточность...
Помни о смерти, все суета сует....
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
кстати, а у тебя какой фрирадиус? v1 или v2? у меня первая версия. может во второй пофиксили, нада будет поставить попробовать...schizoid писал(а):у мну тоже самое. забил. не так часто у мну мпд рестартится
Помни о смерти, все суета сует....
- schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
- Контактная информация:
Re: Radius и "зависшие сесии"
Код: Выделить всё
freeradius-1.1.7_3
ядерный взрыв...смертельно красиво...жаль, что не вечно...
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
аналогично. выяснил следующее.
у меня mpd4 поднимает 200 ng интерфейсов. думал тупняк из-за етого. на тестовой машине когда конекчусь тока я сам и ребут mpd такой проблемы не наблюдаю.
а вот на рабочей когда конектов наблюдается хотя бы 15 и сделать ребут mpd то не закрытые сесии. получается что не успевает радиус выполнить запросы к mysql.
у меня mpd4 поднимает 200 ng интерфейсов. думал тупняк из-за етого. на тестовой машине когда конекчусь тока я сам и ребут mpd такой проблемы не наблюдаю.
а вот на рабочей когда конектов наблюдается хотя бы 15 и сделать ребут mpd то не закрытые сесии. получается что не успевает радиус выполнить запросы к mysql.
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
я чет так и не понял в чем проблема
вообще то этими ньюансами должен заниматься биллинг
закрывать незакрытые сессии
вообще то этими ньюансами должен заниматься биллинг
закрывать незакрытые сессии
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
объясняю.
при установке freeradius'а с поддержкой БД(MySql в моем случаи), создаются база данных с таблицами, одна из таблиц - radacct, в которой радиус записывает сессии, то есть кто(username), c какой айпишки подключился, трафик(in/out), какай айпишка была назначена vpn-соединению и так далее.
так вот, если vpn-соединение не закрыто, то соответственно AcctStopTime='0000-00-00 00:00:00'. Если клиент отключиться, то в поле AcctStopTime= запишется время отключения.
если пользователей несколько, и я перегружаю mpd - радиус нормально отрабатывает, и делает update поля AcctStopTime, а вот если клиентов было подключено человек 15, то не все закрывает. При повторном коннекте имеет уже две записи с AcctStopTime='0000-00-00 00:00:00' одного и того же юзера.
ух... вроде доступно объяснил ?
при установке freeradius'а с поддержкой БД(MySql в моем случаи), создаются база данных с таблицами, одна из таблиц - radacct, в которой радиус записывает сессии, то есть кто(username), c какой айпишки подключился, трафик(in/out), какай айпишка была назначена vpn-соединению и так далее.
так вот, если vpn-соединение не закрыто, то соответственно AcctStopTime='0000-00-00 00:00:00'. Если клиент отключиться, то в поле AcctStopTime= запишется время отключения.
если пользователей несколько, и я перегружаю mpd - радиус нормально отрабатывает, и делает update поля AcctStopTime, а вот если клиентов было подключено человек 15, то не все закрывает. При повторном коннекте имеет уже две записи с AcctStopTime='0000-00-00 00:00:00' одного и того же юзера.
ух... вроде доступно объяснил ?

Помни о смерти, все суета сует....
- schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
- Контактная информация:
Re: Radius и "зависшие сесии"
та оно собсна и с начала было понятно 
я просто не знаю сам как с таким бороться.
либо искать способы/методы как еще узнавать активные сессии от радиуса...

я просто не знаю сам как с таким бороться.
либо искать способы/методы как еще узнавать активные сессии от радиуса...
ядерный взрыв...смертельно красиво...жаль, что не вечно...
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
да я paradox'у расписал все это дело. пока на ум приходит идея вставить в скрипт /usr/local/etc/rc.d/mpd4 при вызове stop скрипт, который будет закрывать в базе сесии
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
все потяно
это скорее всего проблема радиуса
потому что это должен делать биллинг
но можно поробовать такой скрипт
и после перегрузки сервера
он будет посылать насу(радиусу) пакет о том что клиент изменил статус
радиус должен будет позакрывать открытые сесси от этого клиента
это скорее всего проблема радиуса
потому что это должен делать биллинг
но можно поробовать такой скрипт
Код: Выделить всё
#!/bin/sh
radclient="/usr/local/bin/radclient"
server=127.0.0.1
secrets=testing123
#usage () {
# echo "Usage: $0 radius-server secret" >&2
# exit 1
#}
#if [ $# -lt 2 ]
#then
# usage
#fi
case "$1" in
start)
echo -n ' NAS Accounting-On: '
(
echo "Acct-Status-Type = Accounting-On"
) | ${radclient} ${server} acct ${secrets}
;;
stop)
echo -n ' NAS Accounting-Off: '
(
echo "Acct-Status-Type = Accounting-Off"
) | ${radclient} ${server} acct ${secrets}
;;
-h)
echo "Usage: `basename $0` { start | stop }"
;;
*)
;;
esac
он будет посылать насу(радиусу) пакет о том что клиент изменил статус
радиус должен будет позакрывать открытые сесси от этого клиента
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
вообще конечно глупость
пытаться добиться отрадиуса возможностей биллинговой системы
лучше всетаки поставь какую нибудь билл систем
чем постоянно наталкиваться на подводные камни
пытаться добиться отрадиуса возможностей биллинговой системы
лучше всетаки поставь какую нибудь билл систем
чем постоянно наталкиваться на подводные камни
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
а помоему наилутший биллинг это свой(написаный самим админом)
но это чистомое мнение
но это чистомое мнение
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
ну или так
но не так как ты пытаешься из радиуса выжать невозможное
зы
секрет
и айпи наса незабудь поставить))точнее поправить
но не так как ты пытаешься из радиуса выжать невозможное
зы
секрет
и айпи наса незабудь поставить))точнее поправить
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
спасибо. вставил строку в /usr/local/etc/rc.d/mpd4
и все пашет!
Код: Выделить всё
echo "Acct-Status-Type = Accounting-Off" | ${radclient} ${server} acct ${secrets}
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
представь что у тебя сервер случайно ребутнулся
и нужно как раз таки Account-On послать
а у тебя не сработает
поэтому ставь скрипт
темболее он уже готовый
при старте сработает он
при стопе офф
и нужно как раз таки Account-On послать
а у тебя не сработает
поэтому ставь скрипт
темболее он уже готовый
при старте сработает он
при стопе офф
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
мой mpd4 файл запуска имеет щас такой вид
1) куда мне вставлять on/off?
2) выше приведенным файлом сделал restart. подключился по vpn. трафик считает в racacct.
или я чего то не в куриваю?
Код: Выделить всё
#!/bin/sh
#
# $FreeBSD: ports/net/mpd4/files/mpd4.sh.in,v 1.3 2007/07/06 07:35:54 sem Exp $
#
# PROVIDE: mpd
# REQUIRE: SERVERS
# BEFORE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable mpd4:
# mpd_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable mpd4.
# mpd_flags (string): Set to "-b" by default.
# Extra flags passed to start command.
#
# See mpd(8) for flags.
#
. /etc/rc.subr
name="mpd4"
rcvar=`set_rcvar mpd`
load_rc_config ${name}
: ${mpd_enable="NO"}
: ${mpd_flags="-b"}
pidfile="/var/run/${name}.pid"
command="/usr/local/sbin/${name}"
required_files="/usr/local/etc/${name}/mpd.conf /usr/local/etc/${name}/mpd.links"
case "${mpd_flags}" in
*-p\ *)
echo "ERROR: \$mpd_flags includes -p option." \
"PID file is already set to $pidfile."
exit 1
;;
*)
command_args="-p ${pidfile} ${mpd_flags}"
;;
esac
echo "Acct-Status-Type = Accounting-Off"| /usr/local/bin/radclient 127.0.0.1 acct testing123
run_rc_command "$1"
2) выше приведенным файлом сделал restart. подключился по vpn. трафик считает в racacct.
или я чего то не в куриваю?
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
http://forum.lissyara.su/viewtopic.php? ... 24#p106093
скрипт который по start посылает on
и который по stop посылает off
копи паст и нию файл сш нехочешь сделать?
зачем это все добавлять в mpd.sh я непонимаю
скрипт который по start посылает on
и который по stop посылает off
копи паст и нию файл сш нехочешь сделать?
зачем это все добавлять в mpd.sh я непонимаю
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
а........... затупил.....
наверное так.
Код: Выделить всё
....
*)
command_args="-p ${pidfile} ${mpd_flags}"
;;
esac
my_script.sh "$1"
run_rc_command "$1"
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
зачем это все добавлять в mpd.sh я непонимаю
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
ну а куда мне его прилепить чтоб закрывалась сессия?
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
а что просто создать файл с расширением sh и закинуть в rc.d нельзя?
- savio
- лейтенант
- Сообщения: 813
- Зарегистрирован: 2007-11-08 15:46:43
- Откуда: UA
Re: Radius и "зависшие сесии"
создал файл radacct.sh, закинул в rc.d
если сделаю mpd4 restart то что radacct.sh тоже отработает? думаю что нет.
а если да, то я вообше ничего не понимаю в этой жизни.................
если сделаю mpd4 restart то что radacct.sh тоже отработает? думаю что нет.
а если да, то я вообше ничего не понимаю в этой жизни.................
Помни о смерти, все суета сует....
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Radius и "зависшие сесии"
1 наскоко я помню restart отрабатываеться токо ручками
2 если нужно restart в новый sh то прописать несоставляет труда в restart): $ stop && $ start ну или в том дуже
3 когда сервер выключаеться - отрабытваються stop, когда включаеться - отрабатываються start
у тебя практические ситуации которые требуют restart для mpd?
тогда ручками будешь отдельно стартовать stop для radacct.sh
2 если нужно restart в новый sh то прописать несоставляет труда в restart): $ stop && $ start ну или в том дуже
3 когда сервер выключаеться - отрабытваються stop, когда включаеться - отрабатываються start
у тебя практические ситуации которые требуют restart для mpd?
тогда ручками будешь отдельно стартовать stop для radacct.sh