Jump to content

Recommended Posts

Posted (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 by sonkilla
Posted (edited)

Насчет Mikrotikа и FreeBSD c mpd я в курсе но хотелось бы решить проблему с помощью линукса и ppp.Форум абиллса как я уже писал выше весь перерыл нашол темы с подобной проблемой но увы решения ненашол.Сегодня благодаря техподдержки абиллса мою учетку активировали и я задал там тот же вопрос но пока тишина.Если у когонибудь есть какие нибудь советы или соображения куда капать буду очень благодарен.

Edited by sonkilla
Posted

проблема-то, насколько я понимаю, в том, что у pppd (а точнее, даже в самом ядре) счетчики октетов - 32битные.

поэтому в самом pppd, когда он обновляет счетчики в своих внутренних структурах, надо вести учет того, что произошло переполнение разрядности и как только это происходит - увеличивать на 1 счетчики Gigawords. а потом еще надо "научить" плагин radius заполнять атрибуты Acct-Input-Gigawords и Acct-Output-Gigawords

 

Все это моё imho.

Posted
проблема-то, насколько я понимаю, в том, что у 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

сверху параметры обрез скорости каторые кстати работают.

Есть советы?

Posted

Смотреть radacct detail, приходят ли Gigawords в Interim-Update.

Лично у меня - приходят =). Дальше пробовать в Acct.pm в обработку Alive-пакетов всунуть логирование (очень удобно - Data::Dumper). Нужная переменная - $RAD (если что - я не виноват, пишу по памяти :)).

 

 

Да, ещё - патчей на Gigawords мелькало несколько. У меня заработал только один.

Posted
Есть советы?
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 мелькало несколько. У меня заработал только один.

 

какой именно если несложно выложите?попробывал все что нашол как писал выше а сейчас на готовой рпмке с офф сайта уже пропатченной.

Posted
щас стоит 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, остальное безвозвратно проепотеряно.

Posted

Спасибо за совет.Сделал как вы написали и запахало.Думал помогло да не тут то было.почемуто перестала появляться статистика.Тоесть в в мониторинге я вижу что юзер сидит,и в радакт логе тоже есть,и в радиусе вижу как заходит, а в журнале последние входы и использованно ничего нет.Слил все конфиги в бекап и перевесил все с нуля и ось в том числе.Решил с бекапов конфиги невостанавливать а заного по офф документации и форуму поставить.Все поставил вроде пашет но вышла странная проблема что если я меняю $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.

 

где я опять накасячил?

Posted
Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет.
... и поставить этот биллинг

Спасибо за советы.Микротик неочеь понравился,поставил оттестил все завелось но непонятно до конца как все работает,команды урезаны,а через винбокс тыкать галачками и получить результата непоняв как это все работает как то нехочеться.mpd думаю более верное решение тут будет.Насчет ссылки что вы дали покручу посмотрю.
  • 1 year later...
Posted
Наиболее правильный вариант будет вынести NAS на Mikrotik или Freebsd (mpd). Под ними такой проблемы - нет.
... и поставить <a href="http://stasoft.net/" target="_blank">этот</a> биллинг

 

а потом потом опять вернуться на abills )

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.