sonkilla Posted June 5, 2010 Posted June 5, 2010 (edited) Доброго времени суток всем! Поднял связку fedora10X64+pppoe+freeradius+abills все заработало и вроде норм.Но встала проблема что если клиент качает файл больше 2х гигов его автоматом скидывает абиллс.Поправил это дело так, в /usr/abills/libexec/config.pl закоментировал $conf{MAX_SESSION_TRAFFIC} = 2047;(в дальнеишем пробывал ставить значение 0 и на 8мь гигов) и скидывать пересталло но встала другая проблема абиллс перестал щитать траффик после 2х гигов.Стал гуглить нашол что pppd нужно патчить чтоб он обнулял счетчики и мог передавать параметры gigawords для нормального счета.скачал два патча первый официальный http://bugs.gentoo.org/attachment.cgi?id=102981 и второй взятый отсюда http://forum.nag.ru/forum/lofiversion/index.php?t46225.html , пробывал патчить 5ть версий pppd с официального сайта самбы это ppp-2.4.3.tar.gz,ppp-2.4.4.tar.gz,ppp-2.4.4b1.tar.gz,ppp-2.4.5.tar.gz.С первыми 2вумя еще правил main.c чтоб он вообще заработал а остальные просто патчил и ставил.Опытным путем было выяснено что если качать в один паток то до 4х гигов вроде все норм,но если качать в два потока файлы размером 3.2гига то абилс паказывает что скачано 2.65 гига,когда по факту 6.4 гига.Также нашол вот эту тему http://forum.bgbilling.ru/viewtopic.php?f=5&t=2803 тут человек написал даже что то вроде мини хауту но всеравно по ней непрошло.Также в словарях и радиус клиента прописал /etc/radiusclient/dictionary ATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer и в радиусе /usr/local/radiusd/etc/raddb/dictionary ATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer вот логи радиуса /usr/local/var/log/radius/radacct/127.0.0.1/detail-20100605 Sat Jun 5 01:06:50 2010 Acct-Session-Id = "4C095CB715DA00" User-Name = "testuser" Acct-Status-Type = Stop Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS Acct-Session-Time = 35 Acct-Output-Octets = 33 Acct-Input-Octets = 1822 Acct-Output-Gigawords = 0 Acct-Input-Gigawords = 0 Acct-Output-Packets = 2 Acct-Input-Packets = 22 NAS-Port-Type = Virtual Acct-Terminate-Cause = User-Request Framed-IP-Address = 172.0.0.107 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 Timestamp = 1275682010 Request-Authenticator = Verified Перерыл весь гугл и форум абиллса(на нем кстати зарегился два раза с интервалом в два дня но активацию так и неприсылает)информации по моей проблеме очень мало и все неясно,поэтому пишу сюда.Кто сталкивался с таким подскажите в какую сторону капать чтоб абиллс считал любое колличество траффика скаченного клиентом.Пробывал в сервере доступа вписать и Other Nas server и PPPD+Radius plugin(Linux).Может нужно в RADIUS Параметры (,) чтонибудь прописать? Edited June 5, 2010 by sonkilla Вставить ник Quote
Deytory Posted June 7, 2010 Posted June 7, 2010 Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет. Неоднократно эта проблема обсуждалась здесь Вставить ник Quote
sonkilla Posted June 7, 2010 Author Posted June 7, 2010 (edited) Насчет Mikrotikа и FreeBSD c mpd я в курсе но хотелось бы решить проблему с помощью линукса и ppp.Форум абиллса как я уже писал выше весь перерыл нашол темы с подобной проблемой но увы решения ненашол.Сегодня благодаря техподдержки абиллса мою учетку активировали и я задал там тот же вопрос но пока тишина.Если у когонибудь есть какие нибудь советы или соображения куда капать буду очень благодарен. Edited June 7, 2010 by sonkilla Вставить ник Quote
MagMike Posted June 9, 2010 Posted June 9, 2010 проблема-то, насколько я понимаю, в том, что у pppd (а точнее, даже в самом ядре) счетчики октетов - 32битные. поэтому в самом pppd, когда он обновляет счетчики в своих внутренних структурах, надо вести учет того, что произошло переполнение разрядности и как только это происходит - увеличивать на 1 счетчики Gigawords. а потом еще надо "научить" плагин radius заполнять атрибуты Acct-Input-Gigawords и Acct-Output-Gigawords Все это моё imho. Вставить ник Quote
nuclearcat Posted June 9, 2010 Posted June 9, 2010 http://forum.nag.ru/forum/index.php?showto...mp;hl=Gigawords Вставить ник Quote
sonkilla Posted June 10, 2010 Author Posted June 10, 2010 проблема-то, насколько я понимаю, в том, что у pppd (а точнее, даже в самом ядре) счетчики октетов - 32битные. поэтому в самом pppd, когда он обновляет счетчики в своих внутренних структурах, надо вести учет того, что произошло переполнение разрядности и как только это происходит - увеличивать на 1 счетчики Gigawords. а потом еще надо "научить" плагин radius заполнять атрибуты Acct-Input-Gigawords и Acct-Output-Gigawords Все это моё imho. неподскажите поточней как научить ? ведь я прописал в словарях радиусклиента и радиусаATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer Вчера просидев всю ночь собрал еще один сервак на базе Fedora Core 11 i386.Подключил его NAS сервером.Скачал и поставил отсюда http://koji.fedoraproject.org/koji/buil ... dID=172812 готовый пакет с пропатченным ppp gigawords.Первым пунктом тут написано * Mon May 10 2010 - Jiri Skala <jskala@redhat.com> 2.4.4-13 - removed ppp-2.4.3 from sources - fixes #521167 - RFE: Gigawords support in ppp Все завелось авторизация проходит и все работает,но картина отсталась таже,выкачеваю свои 6.4 гига но фрирадиус в стоп пакете получает в парах гигавордса понулям в итоге биллинг ничего непосчитал. Стоп пакет Wed Jun 9 04:47:45 2010 Acct-Session-Id = "4C0ED3360FA200" User-Name = "tester5" Acct-Status-Type = Stop Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS Acct-Session-Time = 803 Acct-Output-Octets = 3521443950 Acct-Output-Gigawords = 0 Acct-Input-Octets = 55787909 Acct-Input-Gigawords = 0 Acct-Output-Packets = 2402237 Acct-Input-Packets = 1357477 NAS-Port-Type = Virtual Acct-Terminate-Cause = User-Request Framed-IP-Address = 172.16.0.123 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 Timestamp = 1276040865 Request-Authenticator = Verified В /usr/abills/libexec/config.pl $conf{MAX_SESSION_TRAFFIC} = 0;(пробывал разное прописывать тут что нужно вообще чтоб стояло?) может еще чтонибудь сюда надо? в словарях попрежнему радиусклиента и фрирадиуса ATTRIBUTE Acct-Input-Gigawords 52 integer ATTRIBUTE Acct-Output-Gigawords 53 integer сверху параметры обрез скорости каторые кстати работают. Есть советы? Вставить ник Quote
nuclearcat Posted June 10, 2010 Posted June 10, 2010 Есть советы?Acct-Interim-Interval есть? попробовать 30 или 60 (второе если у юзера скорость ниже 500 Мбит) Вставить ник Quote
Abram Posted June 10, 2010 Posted June 10, 2010 Смотреть radacct detail, приходят ли Gigawords в Interim-Update. Лично у меня - приходят =). Дальше пробовать в Acct.pm в обработку Alive-пакетов всунуть логирование (очень удобно - Data::Dumper). Нужная переменная - $RAD (если что - я не виноват, пишу по памяти :)). Да, ещё - патчей на Gigawords мелькало несколько. У меня заработал только один. Вставить ник Quote
sonkilla Posted June 10, 2010 Author Posted June 10, 2010 Есть советы?Acct-Interim-Interval есть? попробовать 30 или 60 (второе если у юзера скорость ниже 500 Мбит) щас стоит ATTRIBUTE Acct-Interim-Interval 85 integerменяю на ATTRIBUTE Acct-Interim-Interval 30 integer а также на ATTRIBUTE Acct-Interim-Interval 60 integer при запуске радиуса с параметром -X вываливаеться вот такая ошибка тут инклюдит модули и т.д я это опущу а дальше including configuration file /usr/local/radiusd//etc/raddb/sites-enabled/inner-tunnel main { allow_core_dumps = no } including dictionary file /usr/local/radiusd//etc/raddb/dictionary Errors reading dictionary: dict_init: /usr/local/radiusd//etc/raddb/dictionary[50]: dict_addattr: Duplicate attribute name Acct-Interim-Interval хатя какой нафиг дубликат если параметр Acct-Interim-Interval только один там.Как только меняю назад как было на с 30 или 60 на 85 ATTRIBUTE Acct-Interim-Interval 85 integer все сразу жжужит и пашет как невчем небывало и про дубликат забывает. Да кстати фрирадиус версия 2.1.9 Смотреть radacct detail, приходят ли Gigawords в Interim-Update. вот что в радакте (тут скаченно было 6.4) Fri Jun 11 00:45:59 2010 Acct-Session-Id = "4C1140AA087E00" User-Name = "test3" Acct-Status-Type = Start Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS NAS-Port-Type = Virtual Framed-IP-Address = 172.16.1.188 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 Timestamp = 1276199159 Request-Authenticator = Verified Fri Jun 11 01:09:00 2010 Acct-Session-Id = "4C1140AA087E00" User-Name = "test3" Acct-Status-Type = Stop Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS Acct-Session-Time = 1381 Acct-Output-Octets = 2745633208 Acct-Output-Gigawords = 0 Acct-Input-Octets = 107733477 Acct-Input-Gigawords = 0 Acct-Output-Packets = 4757548 Acct-Input-Packets = 2612079 NAS-Port-Type = Virtual Acct-Terminate-Cause = User-Request Framed-IP-Address = 172.16.1.188 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 Timestamp = 1276200540 Request-Authenticator = Verified несовсем понял что это за параметр и откуда он береться что то нужно в словарь прописать? Лично у меня - приходят =). Дальше пробовать в Acct.pm в обработку Alive-пакетов всунуть логирование (очень удобно - Data::Dumper). Нужная переменная - $RAD (если что - я не виноват, пишу по памяти :)). тут пожалуйста поподробней если можно. Да, ещё - патчей на Gigawords мелькало несколько. У меня заработал только один. какой именно если несложно выложите?попробывал все что нашол как писал выше а сейчас на готовой рпмке с офф сайта уже пропатченной. Вставить ник Quote
Abram Posted June 11, 2010 Posted June 11, 2010 щас стоит ATTRIBUTE Acct-Interim-Interval 85 integerменяю... Зачем? О_овот что в радакте(тут скаченно было 6.4) ... У вас Alive не ходят (они же - Interim-Update). Насколько я понимаю, пересчет Gigawords происходит как раз во время отправки Alive.Лезем в свойства сервера доступа в abills, пишем в RADIUS параметры: Acct-Interim-Interval=60 Остальное пока не трогаем. Передергиваем соединение, смотрим, появятся ли Alive. Выглядят примерно так: ... Acct-Status-Type = Interim-Update ... Насчет патчей не подскажу - у меня это уже крутится в mpd5, остальное безвозвратно проепотеряно. Вставить ник Quote
Abram Posted June 11, 2010 Posted June 11, 2010 ВНЕЗАПНО, документация! http://abills.net.ua/wiki/doku.php/abills:..._приходят_alive Вставить ник Quote
sonkilla Posted June 11, 2010 Author Posted June 11, 2010 Спасибо за совет.Сделал как вы написали и запахало.Думал помогло да не тут то было.почемуто перестала появляться статистика.Тоесть в в мониторинге я вижу что юзер сидит,и в радакт логе тоже есть,и в радиусе вижу как заходит, а в журнале последние входы и использованно ничего нет.Слил все конфиги в бекап и перевесил все с нуля и ось в том числе.Решил с бекапов конфиги невостанавливать а заного по офф документации и форуму поставить.Все поставил вроде пашет но вышла странная проблема что если я меняю $conf{MAX_SESSION_TRAFFIC} = 2047; на любое число выше или вообще каменчу то при коннекте все проходит авторизацию и пускает в сеть но через секунду выкидывает и винда пишет Неудаёться связаться с Test(это имя подключения) Ожидаеться повторное подключение .Ни ошибки ни фига больше непишет.В логах все тишина.вот вывод radiusd -X Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on command file /usr/local/radiusd//var/run/radiusd/radiusd.sock Listening on proxy address * port 1814 Ready to process requests. rad_recv: Access-Request packet from host 127.0.0.1 port 45523, id=229, length=94 Service-Type = Framed-User Framed-Protocol = PPP User-Name = "tester3" CHAP-Challenge = 0x29d13e87db34ced250264c36f87643c2a5ea6458 CHAP-Password = 0x0a4498cf47ac8b010b4b2aab46e0e5ae4d NAS-IP-Address = 127.0.0.1 NAS-Port = 0 +- entering group authorize {...} ++[preprocess] returns ok Exec-Program output: Auth-Type := Accept Exec-Program-Wait: value-pairs: Auth-Type := Accept Exec-Program: returned: 0 ++[abills_preauth] returns ok ++[mschap] returns noop [files] users: Matched entry DEFAULT at line 1 ++[files] returns ok Exec-Program output: Acct-Interim-Interval = 60, Session-Timeout = 1627513, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 0, Framed-IP-Address = 172.16.0.156, Session-Octets-Limit = 2148532224, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0, Exec-Program-Wait: value-pairs: Acct-Interim-Interval = 60, Session-Timeout = 1627513, PPPD-Upstream-Speed-Limit = 0, Octets-Direction = 0, Framed-IP-Address = 172.16.0.156, Session-Octets-Limit = 2148532224, Framed-IP-Netmask = 255.255.255.255, PPPD-Downstream-Speed-Limit = 0, Exec-Program: returned: 0 ++[abills_auth] returns ok Found Auth-Type = Accept Auth-Type = Accept, accepting the user WARNING: Empty post-auth section. Using default return values. Sending Access-Accept of id 229 to 127.0.0.1 port 45523 Acct-Interim-Interval = 60 Session-Timeout = 1627513 PPPD-Upstream-Speed-Limit = Bridge-No Octets-Direction = Route-IP-No Framed-IP-Address = 172.16.0.156 Session-Octets-Limit = 2148532224 Framed-IP-Netmask = 255.255.255.255 PPPD-Downstream-Speed-Limit = Send-Auth-None Finished request 0. Going to the next request Waking up in 4.9 seconds. rad_recv: Accounting-Request packet from host 127.0.0.1 port 45067, id=230, length=99 Acct-Session-Id = "4C12BEB70FBC00" User-Name = "tester3" Acct-Status-Type = Start Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS NAS-Port-Type = Virtual Framed-IP-Address = 172.16.0.156 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 +- entering group preacct {...} ++[preprocess] returns ok Exec-Program output: Exec-Program: returned: 0 ++[abills_acc] returns ok +- entering group accounting {...} [detail] expand: /usr/local/radiusd//var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /usr/local/radiusd//var/log/radius/radacct/127.0.0.1/detail-20100612 [detail] /usr/local/radiusd//var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/local/radiusd//var/log/radius/radacct/127.0.0.1/detail-20100612 [detail] expand: %t -> Sat Jun 12 03:54:47 2010 ++[detail] returns ok ++[unix] returns ok [radutmp] expand: /usr/local/radiusd//var/log/radius/radutmp -> /usr/local/radiusd//var/log/radius/radutmp [radutmp] expand: %{User-Name} -> tester3 ++[radutmp] returns ok [attr_filter.accounting_response] expand: %{User-Name} -> tester3 attr_filter: Matched entry DEFAULT at line 12 ++[attr_filter.accounting_response] returns updated Sending Accounting-Response of id 230 to 127.0.0.1 port 45067 Finished request 1. Cleaning up request 1 ID 230 with timestamp +4 Going to the next request Waking up in 4.8 seconds. rad_recv: Accounting-Request packet from host 127.0.0.1 port 56603, id=231, length=147 Acct-Session-Id = "4C12BEB70FBC00" User-Name = "tester3" Acct-Status-Type = Stop Service-Type = Framed-User Framed-Protocol = PPP Acct-Authentic = RADIUS Acct-Session-Time = 1 Acct-Output-Octets = 0 Acct-Output-Gigawords = 0 Acct-Input-Octets = 529 Acct-Input-Gigawords = 0 Acct-Output-Packets = 0 Acct-Input-Packets = 3 NAS-Port-Type = Virtual Acct-Terminate-Cause = NAS-Request Framed-IP-Address = 172.16.0.156 NAS-IP-Address = 127.0.0.1 NAS-Port = 0 Acct-Delay-Time = 0 +- entering group preacct {...} ++[preprocess] returns ok Exec-Program output: Exec-Program: returned: 0 ++[abills_acc] returns ok +- entering group accounting {...} [detail] expand: /usr/local/radiusd//var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /usr/local/radiusd//var/log/radius/radacct/127.0.0.1/detail-20100612 [detail] /usr/local/radiusd//var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/local/radiusd//var/log/radius/radacct/127.0.0.1/detail-20100612 [detail] expand: %t -> Sat Jun 12 03:54:48 2010 ++[detail] returns ok ++[unix] returns ok [radutmp] expand: /usr/local/radiusd//var/log/radius/radutmp -> /usr/local/radiusd//var/log/radius/radutmp [radutmp] expand: %{User-Name} -> tester3 ++[radutmp] returns ok [attr_filter.accounting_response] expand: %{User-Name} -> tester3 attr_filter: Matched entry DEFAULT at line 12 ++[attr_filter.accounting_response] returns updated Sending Accounting-Response of id 231 to 127.0.0.1 port 56603 Finished request 2. Cleaning up request 2 ID 231 with timestamp +5 Going to the next request Waking up in 3.7 seconds. Cleaning up request 0 ID 229 with timestamp +4 Ready to process requests. где я опять накасячил? Вставить ник Quote
snark Posted June 12, 2010 Posted June 12, 2010 Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет. ... и поставить этот биллинг Вставить ник Quote
sonkilla Posted June 12, 2010 Author Posted June 12, 2010 Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет.... и поставить этот биллинг Спасибо за советы.Микротик неочеь понравился,поставил оттестил все завелось но непонятно до конца как все работает,команды урезаны,а через винбокс тыкать галачками и получить результата непоняв как это все работает как то нехочеться.mpd думаю более верное решение тут будет.Насчет ссылки что вы дали покручу посмотрю. Вставить ник Quote
~AsmodeuS~ Posted September 12, 2011 Posted September 12, 2011 Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет.... и поставить <a href="http://stasoft.net/" target="_blank">этот</a> биллинг а потом потом опять вернуться на abills ) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.