Radius и "зависшие сесии"

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-15 13:46:26

стоит freeradius+mpd4+mysql
пишу под себя что-то вроде билинга. все отлично работает.
для просмота активных сесий vpn-клиентов. делаю выборку с таблицы radacct.
если поиле AcctStopTime='0000-00-00 00:00:00' то сесия активна
но возникает проблема, если рестартануть mpd. некоторые сесии не закрываються....
возникает несколько записей с одним и тем же логином и AcctStopTime='0000-00-00 00:00:00'

через конфиг эту проблемк решить можно. потомукак ничего нормального не нашел
может кто-то сталкивался?
Помни о смерти, все суета сует....

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Radius и "зависшие сесии"

Непрочитанное сообщение schizoid » 2008-10-15 14:21:28

у мну тоже самое. забил. не так часто у мну мпд рестартится
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-15 14:25:59

у меня тоже. но все же....
я уже даже написал скриптец на пхп, который убивает ненужные сесии.

Код: Выделить всё

# удаляем зависшие сесии в БД(посре рестарта 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 и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-15 14:31:26

schizoid писал(а):у мну тоже самое. забил. не так часто у мну мпд рестартится
кстати, а у тебя какой фрирадиус? v1 или v2? у меня первая версия. может во второй пофиксили, нада будет поставить попробовать...
Помни о смерти, все суета сует....

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Radius и "зависшие сесии"

Непрочитанное сообщение schizoid » 2008-10-15 16:49:00

Код: Выделить всё

freeradius-1.1.7_3
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-15 16:55:18

аналогично. выяснил следующее.
у меня mpd4 поднимает 200 ng интерфейсов. думал тупняк из-за етого. на тестовой машине когда конекчусь тока я сам и ребут mpd такой проблемы не наблюдаю.
а вот на рабочей когда конектов наблюдается хотя бы 15 и сделать ребут mpd то не закрытые сесии. получается что не успевает радиус выполнить запросы к mysql.
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-15 20:21:47

я чет так и не понял в чем проблема

вообще то этими ньюансами должен заниматься биллинг

закрывать незакрытые сессии

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-16 10:31:08

объясняю.

при установке 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 и "зависшие сесии"

Непрочитанное сообщение schizoid » 2008-10-16 10:50:12

та оно собсна и с начала было понятно :)
я просто не знаю сам как с таким бороться.
либо искать способы/методы как еще узнавать активные сессии от радиуса...
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-16 13:37:42

да я paradox'у расписал все это дело. пока на ум приходит идея вставить в скрипт /usr/local/etc/rc.d/mpd4 при вызове stop скрипт, который будет закрывать в базе сесии
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-16 13:50:04

все потяно
это скорее всего проблема радиуса
потому что это должен делать биллинг
но можно поробовать такой скрипт

Код: Выделить всё

#!/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
и после перегрузки сервера
он будет посылать насу(радиусу) пакет о том что клиент изменил статус
радиус должен будет позакрывать открытые сесси от этого клиента

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-16 14:23:17

вообще конечно глупость
пытаться добиться отрадиуса возможностей биллинговой системы

лучше всетаки поставь какую нибудь билл систем
чем постоянно наталкиваться на подводные камни

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-16 14:30:56

а помоему наилутший биллинг это свой(написаный самим админом)
но это чистомое мнение
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-16 14:33:00

ну или так
но не так как ты пытаешься из радиуса выжать невозможное

зы
секрет
и айпи наса незабудь поставить))точнее поправить

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-20 10:54:06

спасибо. вставил строку в /usr/local/etc/rc.d/mpd4

Код: Выделить всё

echo "Acct-Status-Type = Accounting-Off" | ${radclient} ${server} acct ${secrets}
и все пашет!
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-20 10:57:05

представь что у тебя сервер случайно ребутнулся
и нужно как раз таки Account-On послать
а у тебя не сработает
поэтому ставь скрипт
темболее он уже готовый
при старте сработает он
при стопе офф

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-20 11:06:35

мой mpd4 файл запуска имеет щас такой вид

Код: Выделить всё

#!/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"
1) куда мне вставлять on/off?
2) выше приведенным файлом сделал restart. подключился по vpn. трафик считает в racacct.
или я чего то не в куриваю?
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-20 11:11:35

http://forum.lissyara.su/viewtopic.php? ... 24#p106093
скрипт который по start посылает on
и который по stop посылает off
копи паст и нию файл сш нехочешь сделать?

зачем это все добавлять в mpd.sh я непонимаю

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-20 11:27:55

а........... затупил.....

Код: Выделить всё

....
*)
        command_args="-p ${pidfile} ${mpd_flags}"
        ;;
esac
my_script.sh "$1"
run_rc_command "$1"
наверное так.
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-20 11:30:32

зачем это все добавлять в mpd.sh я непонимаю

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-20 11:33:44

ну а куда мне его прилепить чтоб закрывалась сессия?
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-20 11:39:45

а что просто создать файл с расширением sh и закинуть в rc.d нельзя?

Аватара пользователя
savio
лейтенант
Сообщения: 813
Зарегистрирован: 2007-11-08 15:46:43
Откуда: UA

Re: Radius и "зависшие сесии"

Непрочитанное сообщение savio » 2008-10-20 11:43:23

создал файл radacct.sh, закинул в rc.d
если сделаю mpd4 restart то что radacct.sh тоже отработает? думаю что нет.
а если да, то я вообше ничего не понимаю в этой жизни.................
Помни о смерти, все суета сует....

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Radius и "зависшие сесии"

Непрочитанное сообщение paradox » 2008-10-20 11:51:54

1 наскоко я помню restart отрабатываеться токо ручками
2 если нужно restart в новый sh то прописать несоставляет труда в restart): $ stop && $ start ну или в том дуже
3 когда сервер выключаеться - отрабытваються stop, когда включаеться - отрабатываються start

у тебя практические ситуации которые требуют restart для mpd?
тогда ручками будешь отдельно стартовать stop для radacct.sh