pppoe+freeradius+abills проблема с трафиком больше 4х гигов

Установка, настройка, поддержка
Ответить
inthematrix
Сообщения: 6
Зарегистрирован: Пт июн 04, 2010 3:22 pm

pppoe+freeradius+abills проблема с трафиком больше 4х гигов

Сообщение inthematrix »

Доброго времени суток всем!
Поднял связку fedora10X64+pppoe+freeradius+abills 0.50b все заработало и вроде норм.Но встала проблема что если клиент качает файл больше 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/i ... 46225.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

Mon Jun 7 15:44:50 2010
Acct-Session-Id = "4C0CCDA00C7800"
User-Name = "tester1"
Acct-Status-Type = Stop
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
Acct-Session-Time = 2
Acct-Output-Octets = 0
Acct-Input-Octets = 569
Acct-Output-Gigawords = 0
Acct-Input-Gigawords = 0
Acct-Output-Packets = 0
Acct-Input-Packets = 4
NAS-Port-Type = Virtual
Acct-Terminate-Cause = User-Request
Framed-IP-Address = 172.16.0.254
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Acct-Delay-Time = 0
Timestamp = 1275907490
Request-Authenticator = Verified


вот лог с radiusd -X
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/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 36594, id=124, length=95
Service-Type = Framed-User
Framed-Protocol = PPP
User-Name = "tester1"
CHAP-Challenge = 0x561cab69eb7820e2c80838fc15b3c1aa5d5f24ad8a
CHAP-Password = 0x3659026e7d71241f4e16b8dcb64c661a57
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
Use of uninitialized value $in_prices{"0"} in numeric gt (>) at /usr/abills/libexec/../Abills/mysql/Auth.pm line 1326.
Use of uninitialized value $in_prices{"0"} in numeric gt (>) at /usr/abills/libexec/../Abills/mysql/Auth.pm line 1326.
Use of uninitialized value $in_prices{"0"} in numeric eq (==) at /usr/abills/libexec/../Abills/mysql/Auth.pm line 1326.
Use of uninitialized value $out_prices{"0"} in numeric gt (>) at /usr/abills/libexec/../Abills/mysql/Auth.pm line 1326.
Exec-Program output: Session-Timeout = 2016912, Filter-Id = 0, Octets-Direction = 0, Framed-IP-Address = 172.16.0.254, Session-Octets-Limit = 8589934592, Framed-IP-Netmask = 255.255.255.255,
Exec-Program-Wait: value-pairs: Session-Timeout = 2016912, Filter-Id = 0, Octets-Direction = 0, Framed-IP-Address = 172.16.0.254, Session-Octets-Limit = 8589934592, Framed-IP-Netmask = 255.255.255.255,
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 124 to 127.0.0.1 port 36594
Session-Timeout = 2016912
Filter-Id = "0"
Octets-Direction = Route-IP-No
Framed-IP-Address = 172.16.0.254
Session-Octets-Limit = 0
Framed-IP-Netmask = 255.255.255.255
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 46175, id=125, length=99
Acct-Session-Id = "4C0CCDA00C7800"
User-Name = "tester1"
Acct-Status-Type = Start
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
NAS-Port-Type = Virtual
Framed-IP-Address = 172.16.0.254
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
[suffix] No '@' in User-Name = "tester1", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
++[files] returns noop
+- entering group accounting {...}
[detail] expand: /usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /usr/local/var/log/radius/radacct/127.0.0.1/detail-20100607
[detail] /usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/local/var/log/radius/radacct/127.0.0.1/detail-20100607
[detail] expand: %t -> Mon Jun 7 15:44:48 2010
++[detail] returns ok
++[unix] returns ok
[radutmp] expand: /usr/local/var/log/radius/radutmp -> /usr/local/var/log/radius/radutmp
[radutmp] expand: %{User-Name} -> tester1
++[radutmp] returns ok
[attr_filter.accounting_response] expand: %{User-Name} -> tester1
attr_filter: Matched entry DEFAULT at line 12
++[attr_filter.accounting_response] returns updated
Sending Accounting-Response of id 125 to 127.0.0.1 port 46175
Finished request 1.
Cleaning up request 1 ID 125 with timestamp +13
Going to the next request
Waking up in 4.8 seconds.
rad_recv: Accounting-Request packet from host 127.0.0.1 port 56423, id=126, length=147
Acct-Session-Id = "4C0CCDA00C7800"
User-Name = "tester1"
Acct-Status-Type = Stop
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
Acct-Session-Time = 2
Acct-Output-Octets = 0
Acct-Input-Octets = 569
Acct-Output-Gigawords = 0
Acct-Input-Gigawords = 0
Acct-Output-Packets = 0
Acct-Input-Packets = 4
NAS-Port-Type = Virtual
Acct-Terminate-Cause = User-Request
Framed-IP-Address = 172.16.0.254
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
[suffix] No '@' in User-Name = "tester1", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
++[files] returns noop
+- entering group accounting {...}
[detail] expand: /usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d -> /usr/local/var/log/radius/radacct/127.0.0.1/detail-20100607
[detail] /usr/local/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d expands to /usr/local/var/log/radius/radacct/127.0.0.1/detail-20100607
[detail] expand: %t -> Mon Jun 7 15:44:50 2010
++[detail] returns ok
++[unix] returns ok
[radutmp] expand: /usr/local/var/log/radius/radutmp -> /usr/local/var/log/radius/radutmp
[radutmp] expand: %{User-Name} -> tester1
++[radutmp] returns ok
[attr_filter.accounting_response] expand: %{User-Name} -> tester1
attr_filter: Matched entry DEFAULT at line 12
++[attr_filter.accounting_response] returns updated
Sending Accounting-Response of id 126 to 127.0.0.1 port 56423
Finished request 2.
Cleaning up request 2 ID 126 with timestamp +15
Going to the next request
Waking up in 2.3 seconds.
Cleaning up request 0 ID 124 with timestamp +13
Ready to process requests.

Перерыл весь гугл и форум абиллса информации по моей проблеме очень мало и все неясно,поэтому пишу сюда.Кто сталкивался с таким подскажите в какую сторону капать чтоб абиллс считал любое колличество траффика скаченного клиентом.

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение NiTr0 »

inthematrix писал(а):Кто сталкивался с таким подскажите в какую сторону капать чтоб абиллс считал любое колличество траффика скаченного клиентом.
В сторону поиска по форуму. Вот к примеру.

inthematrix
Сообщения: 6
Зарегистрирован: Пт июн 04, 2010 3:22 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение inthematrix »

Был уже там.Каторые сутки пытаюсь запустить и непашет :(
в стоп пакете вот что

rad_recv: Accounting-Request packet from host 127.0.0.1 port 44914, id=42, length=149
Acct-Session-Id = "4C0E4681143F00"
User-Name = "robotest4"
Acct-Status-Type = Stop
Service-Type = Framed-User
Framed-Protocol = PPP
Acct-Authentic = RADIUS
Acct-Session-Time = 1088
Acct-Output-Octets = 2750911760
Acct-Output-Gigawords = 0
Acct-Input-Octets = 99459712
Acct-Input-Gigawords = 0
Acct-Output-Packets = 4808675
Acct-Input-Packets = 2476846
NAS-Port-Type = Virtual
Acct-Terminate-Cause = User-Request
Framed-IP-Address = 172.16.0.57
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
Acct-Delay-Time = 0
хотя скаченно 6.4 гига,поддержка как видите гигаводса есть но счетчики понулям.есть еще предложения?

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение NiTr0 »

пппд криво пропатчен.

inthematrix
Сообщения: 6
Зарегистрирован: Пт июн 04, 2010 3:22 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение inthematrix »

что я делаю нетак?
имею сарцы ппп скаченные с самбы
ppp-2.4.4.tar.gz
распоковал
в ppp-2.4.4/pppd/main.c изменил
Строки 1567-1572

if (errfd == 0 || errfd == 1)
errfd = dup(errfd);
closelog(); ## ДОБАВЛЯЕМ СТРОКУ!!!
/* dup the in, out, err fds to 0, 1, 2 */
if (infd != 0)
dup2(infd, 0);


Строки 1575-1581

if (errfd != 2)
dup2(errfd, 2);
## УДАЛЯЕМ СТРОКУ!!!!
if (log_to_fd > 2)
close(log_to_fd);
if (the_channel->close)

дальше накладываю патч с http://bugs.gentoo.org/156606 также пробывал отсюда http://forum.nag.ru/forum/lofiversion/i ... 46225.html
дальше
в случае первого патча
patch -p1 -l < radius-gigawords.patch
в случае второго
patch -p1 -l < gigawords-v3.patch
далее
./configure --prefix=/usr
make all
make install
насчет вмешания в main.c так без этого 2.4.4 версии непашут в федоре вот http://www.bazonblog.ru/articles/pppoe-server-pod-linux
все теже действия производились и с ppp-2.4.4b1.tar.gz и с ppp-2.4.5.tar.gz (хатя тут вмешательство в main.c непонадобилось он и так завелся) вроде ничего незабыл.
да кстати под 2.4.5 патча на гигавордс нету?мне кажеться что те каторые накладываю я неподходят.куда капать?

inthematrix
Сообщения: 6
Зарегистрирован: Пт июн 04, 2010 3:22 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение inthematrix »

Сегодня просидев всю ночь собрал еще один сервак на базе 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
сверху параметры обрез скорости каторые кстати работают.
Есть советы?

inthematrix
Сообщения: 6
Зарегистрирован: Пт июн 04, 2010 3:22 pm

Re: pppoe+freeradius+abills проблема с трафиком больше 4х ги

Сообщение inthematrix »

Подсказали на наге поставить Acct-Interim-Interval=60.Все запахало,через какоето время почемуто перестала появляться статистика.Тоесть в в мониторинге я вижу что юзер сидит,и в радакт логе тоже есть,и в радиусе вижу как заходит, а в журнале последние входы и использованно ничего нет.Слил все конфиги в бекап и перевесил все с нуля и ось в том числе.Решил с бекапов конфиги невостанавливать а заного по офф документации и форуму поставить.Все поставил вроде пашет но вышла странная проблема что если я меняю $conf{MAX_SESSION_TRAFFIC} = 2047; на любое число выше или вообще каменчу то при коннекте все проходит авторизацию и пускает в сеть но через секунду выкидывает и винда пишет Неудаёться связаться с Test(это имя подключения) Ожидаеться повторное подключение .Если нетрогать макслимит и оставить на 2047 или ниже поставить цифру то все пашет нормально.В логах все тишина.вот вывод 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.

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

Ответить