Биллинговая система Nodeny

Главная категория => Nodeny 50 => Тема начата: Dimension от 11 Марта 2011, 10:37:49



Название: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 11 Марта 2011, 10:37:49
Есть абонент. На 1е число у него с услугами -70. Приходит он 4го числа. Ему меняем тариф в котором абонплата 30грн. Ложим 30ку на счет. с услугами получается 0. В этом тарифе 500 мегабайт бесплатного трафика. Затем судя по событиям ему 6го числа блокируется досту по задолжености -0.02
Код:
Событие Заблокирован по денежной задолженности 10.0.1.177: -0.02 < 0.00 06.03.11 21:45 Блокировка по задолженности   → 
  30   04.03.11 09:22  Запись отредактированаНаличный платеж adm →
  Событие История смен тарифных планов:

04.03.11 09:22  Базовый
01.01.11 00:01  Безлимитный 3 04.03.11 09:22 История смены тарифов   →
  Событие Изменены следующие данные:
Пакет: 'Безлимитный 3' -> 'Базовый' 04.03.11 09:22 Изменение данных клиента adm →
  Событие Заблокирован по денежной задолженности 10.0.1.177: -70.00 < 0.00 01.03.11 00:01 Блокировка по задолженности   →

НО сейчас у абонента На счете с учетом стоимости тарифного плана, грн. -14.18
Код:
Тип трафика Оплачено, Мб Использовано, Мб Превышение, Мб Стоимость превышения, грн. 
  интернет 500   972.65   472.65     0.030 грн./Мб * 472.65 Мб = 14.18

Как так ? разбираемся дальше. Смотрю его трафик посуточно:
Код:
8 209.403 6.321                             
7 240.492 7.052                            
6 101.710 3.627                            
5 363.355 14.430                            
4 23.480 2.777
Тоесть после 6го числа когда вродибы должен был бы заблокироваться доступ абонент еще 2 дня пользовался инетом. Детальная статистика к сожалению отключена, поэтому куда он ходил глянуть не могу. Смотрю более детально их трафик 8го числа по времени. Инет был! :
Код:
16:05 0.764 0.684 adm → 
16:04 1711.540 31.862 adm →
16:04 4005.234 86.603 adm →
16:03 0.048 0.088 adm →
16:02 0.128 0.552 adm →
16:02 0.642 0.040 adm →
15:59 0.040 0.168 adm →
15:59 0.040 0.040 adm →
15:58 1786.540 33.596 adm →
15:58 492.744 17.505 adm →
15:57 2121.364 39.427 adm →
15:57 325.785 15.459
Дальше смотрю сеансы работы юзера:
Код:
1   08.03.11   16:19:54 отключен   
2   08.03.11   15:01:09  Авторизатор
3   08.03.11   14:58:03 отключен  
4   08.03.11   14:50:50  Авторизатор
5   08.03.11   14:33:14 отключен  
6   08.03.11   12:27:18  Авторизатор
7   08.03.11   12:15:09 отключен  
8   08.03.11   12:11:16  Авторизатор
9   08.03.11   00:20:39 отключен  
Ему весь день 8го ключик нарисован красным (денежная задолженность). Внизу прикрепил скрин.

Вопрос, как так ? Куда смотреть и что копать ?
З.Ы. доступ в инет юзер получает l2 авторизатором


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 12 Марта 2011, 08:49:03
И абонент продолжает получать доступ в инет и по сей день при том, что на главной страничке биллинга ключ зеленый и доступ запрещен, а непосредственно в данных клиент пишет что доступ запрещен и ключ красный. Скрины прилагаю.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Efendy от 12 Марта 2011, 15:14:22
ipfw list
и т.д как во всех подобных сообщениях


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 13 Марта 2011, 00:48:25
биллинг на gentoo стоит, поэтому c ipfw проблемка.
Глюк данный прошел после ребута сервака.
видимо какой то баг...


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: 0xbad0c0d3 от 13 Марта 2011, 01:12:24
Биллинг пусть хоть под Plan9 стоит. Шлюз на чем?


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 13 Марта 2011, 11:04:03
он же и шлюз, всем рулит 1 машина


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Efendy от 13 Марта 2011, 12:51:13
ну так нужно iptables смареть


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: VitalVas от 13 Марта 2011, 13:18:11
iptables -L в студию


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 13 Марта 2011, 13:37:42
ну сейчас думаю смысла нет iptables смотреть? т.к. все работает ка положено. Но если снова повторится что то подобное - обязательно кину.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 26 Марта 2011, 17:27:03
Снова повторилась проблема, все симптомы теже. На 1е число у него с услугами -70. Приходит он позже. Ему меняем тариф в котором абонплата 30грн. Ложим 30ку на счет. с услугами получается 0. В этом тарифе 500 мегабайт бесплатного трафика. Затем судя по событиям ему 23го числа блокируется досту по задолжености -0.10, но доступ в инет продолжает получать по сей день. На счету большой минус.

iptables -t filter -nL | grep 10.0.1.40
ULOG       all  --  0.0.0.0/0            10.0.1.40           ULOG copy_range 0 nlgroup 15 queue_threshold 1
ULOG       all  --  10.0.1.40            0.0.0.0/0           ULOG copy_range 0 nlgroup 15 queue_threshold 1
ACCEPT     all  --  10.0.1.40           !10.0.0.0/8
ACCEPT     all  -- !10.0.0.0/8           10.0.1.40


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: VitalVas от 26 Марта 2011, 18:00:08
а с анлимщиками тоже-самое происходит?


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 26 Марта 2011, 18:41:24
ну пока замечено не было. Впринципе только 3 месяца как купили биллинг. Не замечал даже 2х "заглюченых" пользователей. Тогда 1 глюканул и сейчас тоже один. Подозрение что проявляется только у тех кому менялся пакет с безлима, на тариф по трафику...


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 26 Марта 2011, 19:17:39
Версия 49.32.5 ситуация та же была и с анлимщиками. При переходе на новый месяц у некоторых пользователей, не оплативших своевременно следующий месяц, инет оставался хотя баланс был отрицательный и был включен "всегда онлайн".


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 01 Августа 2011, 12:03:15
Доброго времени суток.
Проблема при переходе на месяц.
ftp://195.58.236.130/g.jpg (ftp://195.58.236.130/g.jpg)
и так все у кого закончились деньги
В итоге у все пользователи у которых деньги закончились инет есть, дисконект не срабатывает.
Nodeny 50.32.5
Gentoo Linux

iptables -t filter -nL | grep 10.0.1.9
ULOG       all  --  0.0.0.0/0            10.0.1.9           ULOG copy_range 0 nlgroup 15 queue_threshold 1
ULOG       all  --  10.0.1.9            0.0.0.0/0           ULOG copy_range 0 nlgroup 15 queue_threshold 1
ACCEPT     all  --  10.0.1.9           !10.0.0.0/8
ACCEPT     all  -- !10.0.0.0/8           10.0.1.9


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


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: goletsa от 01 Августа 2011, 12:42:59
А день блокировки какой? Обычно 2 числа блокирует, хотя кто как настроит.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 01 Августа 2011, 14:18:51
день блокировки по умолчанию 1 стоит


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: versus от 01 Августа 2011, 16:10:58
Посмотреть лог скрипта  перехода на след месяц, запустить ядро и сервер доступа в дебаг режиме с ключиком -v. Похоже проблема в линуксах только. Надо локализировать проблему.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: blackjack от 01 Августа 2011, 16:16:43
а noserver.pl запущен?


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 01 Августа 2011, 19:03:43
да, конечно


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Efendy от 01 Августа 2011, 19:18:43
Так, давайте уточним ситуацию, ответьте на вопросы:
1) баланс клиента минус стоимость услуг меньше границы отключения? (т.е. клиент должен быть заблокирован по отсутствию финансов)
2) учетная запись находится в состоянии заблокирован или нет? имеется ввиду перевело ли ядро состояние "доступ в интернет" в положение "заблокирован"?
3) клиент авторизуется и при этом какой статус в админке возле его ключика? (если подвести курсор к ключику, то напишет)
4) кто делал правила для iptables, к нему вопрос: в вышеприведенных правилах для 10.0.1.9 должен блокироваться инет или нет? Т.е. фаервол правильно отображает текущую ситуацию или нет?


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 01 Августа 2011, 20:19:56
1) совершенно верно, "с услугами" меньше границы отключения
2) Да, ядро пишет что доступ запрещен.
3) Статус авторизации подробно описал в этом посте http://forum.nodeny.com.ua/index.php?topic=1157.msg12467#msg12467
В общем списке пользователей ключ напротив человека зеленый и доступ пишет на нем разрешен. но если зайти непосредственно в сами настройки юзера, то вверху ключик горит красным и написано что доступ запрещен.
4) фаервол настраивал slava. Получается что фаервол не правильно отображает ситуацию, так как разрешает инет тогда, когда биллинг говорит, что нельзя

Может быть выложить содержимое каких то скриптов ? например nofire.pl


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: VitalVas от 01 Августа 2011, 20:31:22
дай скрин самого абонента и тарифа, на котором он сидит


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 01 Августа 2011, 22:04:14
Цитировать
4) кто делал правила для iptables, к нему вопрос: в вышеприведенных правилах для 10.0.1.9 должен блокироваться инет или нет? Т.е. фаервол правильно отображает текущую ситуацию или нет?

Инет должен блокироваться, и блокировался при отключении, что и происходило до перехода на новый месяц: при отключении клиент авторизатором или разрыве ppp соединения.

Из nofire.pl
Код:
sub Deny
{
my $p=$_[0];
my ($auth,$dop_param,$i,$id,$ip,$mid,$n,$num,$num1,$num2,$opt,$options,$chnl);
my ($paket,$pipe2,$pipe_in,$pipe_out,$speed2,$speed_in,$speed_out,$name,$chnl);

$ip=$p->{ip};
$id=$p->{id};                
$num=$p->{num};              
$mid=$p->{mid};            
$auth=$p->{auth};          
$paket=$p->{paket};
$pr=$p->{speed2};      
$options=$p->{options};      
$main_num=$p->{main_num};    
$speed_in=$p->{speed_in};    
$speed_out=$p->{speed_out};


&Add_Tbl_Rule(0,$ip);
#Удаляем правила добавленые в Allow
while (!system("$IPT -t filter -D FORWARD -s $ip -d ! 10.0.0.0/8 -j ACCEPT")) {};
while (!system("$IPT -t filter -D FORWARD -d $ip -s ! 10.0.0.0/8 -j ACCEPT")) {};
while (!system("iptables -D FORWARD -s $ip -j ULOG --ulog-nlgroup 15 ")) {};
while (!system("iptables -D FORWARD -d $ip -j ULOG --ulog-nlgroup 15 ")) {};

}


В Allow
Код:
........

 ###### контрольная подчистка перед добавлением
 while (!system("$IPT -t filter -D FORWARD -s $ip -d ! 10.0.0.0/8 -j ACCEPT")) {};
 while (!system("$IPT -t filter -D FORWARD -d $ip -s ! 10.0.0.0/8 -j ACCEPT")) {};
 while (!system("iptables -D FORWARD -s $ip -j ULOG --ulog-nlgroup 15 ")) {};
 while (!system("iptables -D FORWARD -d $ip -j ULOG --ulog-nlgroup 15 ")) {};
 ######
#добавляем правила разрешающие доступ в инет
 system("$IPT -t filter -A FORWARD -s $ip -d ! 10.0.0.0/8 -j ACCEPT");
 system("$IPT -t filter -A FORWARD -d $ip -s ! 10.0.0.0/8 -j ACCEPT");
 system("iptables -I FORWARD 1 -s $ip -j ULOG --ulog-nlgroup 15 ");
 system("iptables -I FORWARD 1 -d $ip -j ULOG --ulog-nlgroup 15 ");
.....

После перехода на новый месяц решил перезагрузить билинг. И вот что он выдал в логе
Цитировать
01.08.2011 12:24:57 kernel: ! Остановка ядра
01.08.2011 12:24:59 kernel: ! ====== -  СТАРТ ЯДРА NODENY - ======
01.08.2011 12:24:59 kernel:  783 записей в базе и 290 доступ в инет блокирован, 257 не нужна авторизация
01.08.2011 12:24:59 kernel:  Для 1 записей включен режим детального сохранения трафика.
DBI connect('database=bill;host=localhost;mysql_connect_timeout=6;','bill_kernel',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at /usr/local/nodeny/nodeny.pl line 1808
DBD::mysql::db do failed: MySQL server has gone away at /usr/local/nodeny/nodeny.pl line 512.
DBI connect('database=bill;host=localhost;mysql_connect_timeout=6;','bill_kernel',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at /usr/local/nodeny/nodeny.pl line 488
DBD::mysql::st execute failed: MySQL server has gone away at /usr/local/nodeny/nodeny.pl line 1308.
Can't call method "do" on an undefined value at /usr/local/nodeny/nodeny.pl line 1965.
После перезагрузки сервера все заработало.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 01 Августа 2011, 22:14:13
Похожая конфигурация работает с версией Nodeny 49.32.5 С тем же nofire.pl
Отличия только в версии iptables ядра Linux и верси perl и mysql

Система (64Bit) с Nodeny 49.32.5  работает без проблем
kernel-2.6.38-gentoo-r6
iptables v1.4.10
Mysql 5.1.51
perl 5.12.3

Система (32Bit) с Nodeny 50.32  С которой и есть проблемы
perl 5.8.8
Kernel-2.6.34-gentoo-r6
iptables v1.4.2
Mysql 5.0.54



Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Dimension от 01 Августа 2011, 22:19:51
 скрин самого абонента и тарифа, на котором он сидит


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: versus от 01 Августа 2011, 23:19:36
Код:
df -h


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Efendy от 02 Августа 2011, 01:54:36
Много информации, которая к делу не относится, а только путает. Насколько я понял, переход на новый месяц никакого отношения к проблеме не имеет, поскольку ядро блокирует клиента. Скорее всего, с новым месяцем вносятся какие-то изменения в логику/настройки биллинга, которые требуют перезагрузки noserver. Но данных мне недостаточно. Непонятно, имеет ли проблема массовый характер или связана конкретно с каким-то клиентом. Могут быть ситуации, когда Iptables при каких-то условиях может не создать правило? Например, ipfw в случае ошибочного правила, не выполняет остальные в потоке.
Также, я неоднократно об этом говорил: зачем приводить левую инфу? У клиента сейчас положительный баланс, зачем нам видеть его скриншоты? Нужна инфа по проблеме, а не просто побольше всего "авось поможет".


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 02 Августа 2011, 06:30:03
to: versus
места на диске хватает, на системном 4,1Гб, на разделе для баз 99Гб
to: Efendy
Проблема действительно имеет массовый характер. Такая же проблема со всеми пользователями.
В iptables в случае ошибочного правила не выполнится именно это одно или несколько ошибочных правил, все остальные, которые без ошибок выполнятся.

Привожу скрин одного из пользователей, который успел сделать до перезагрузки сервера.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: versus от 02 Августа 2011, 23:03:49
Что значит до перезагрузки сервера ?  После перезагрузки все нормализовалось ?


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 03 Августа 2011, 06:29:45
Да до перезагрузки сервера командой reboot так как рестарт Nodeny выдавал ошибку mysql о которой я писал выше.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: Efendy от 03 Августа 2011, 09:39:08
Да до перезагрузки сервера командой reboot так как рестарт Nodeny выдавал ошибку mysql о которой я писал выше.
Цитировать
Скорее всего, с новым месяцем вносятся какие-то изменения в логику/настройки биллинга, которые требуют перезагрузки noserver.


Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: versus от 03 Августа 2011, 17:05:25
А увеличить макимальный размер запроса в mysql не помагает ?



Название: Re: Абонент ушел в минус при заблокированном инете
Отправлено: slava от 03 Августа 2011, 19:04:55
Прописал max_allowed_packet = 16M
раньше был 1М. Пока полет нормальный Ждем 1-го числа.