Перейти к содержимому
Калькуляторы

Freeradius - проблема с Accounting-Request stop Freedraius

Всем привет, кто сможет подскажите. Вообщем проблема такая! крутится у меня Freradius + mysql, есть много сетевого оборудования разного и ни где не проблем с аккаунтиком кроме huawei ne16 Ну это короче магистральный маршрутизатор.

Ну так вот при разъединения сессии телнет железка посылает радиусу Acct-Status-Type = Stop и в базу она прописывается новой строкой а не обновляет ту что уже была при старте сессии и в результате в таблице аккаунтинка две записи.

Одна нормальная и одна сессия остается открытой пока ручками с базы не удалишь

 

ID HotSpot Username IP Address Start Time Stop Time Total Time Upload (Bytes) Download (Bytes)

 

197 c_rinat 10.1.0.123 2010-09-07 10:13:59 0 seconds 0

198 c_rinat 10.1.0.123 2010-09-07 10:14:00 2010-09-07 10:14:16 16 seconds 0 B 0 B User-Request

 

И как добиться что бы не зависали эти сессии я уже устал себе голову ломать, получается так что радиус первый раз обновляет (в дебаге выделено жырным) и потом еще раз почемуто вставляет аккаунтинк данные вот и поевляеться вторая запись и почему так происходит я не пойму.

К примеру если смотреть дебаг на дргой железке то UPDATE radacct SET и все ок, а тут же нет

 

Вот дебаг

 

rad_recv: Accounting-Request packet from host 10.50.1.1 port 1812, id=49, length=295

User-Name = "c_rinat"

NAS-Port = 0

Framed-IP-Address = 10.1.0.123

Filter-Id = "65535@255"

NAS-Identifier = "NE16_AUP"

Acct-Status-Type = Stop

Acct-Delay-Time = 0

Acct-Input-Octets = 0

Acct-Output-Octets = 0

Acct-Session-Id = "NE16

Acct-Authentic = RADIUS

Acct-Session-Time = 16

Acct-Input-Packets = 0

Acct-Output-Packets = 0

Acct-Terminate-Cause = User-Request

Acct-Input-Gigawords = 0

Acct-Output-Gigawords = 0

Event-Timestamp = "Sep 7 2010 16:15:50 YEKST"

NAS-Port-Type = Virtual

NAS-Port-Id = "slot=0;subslot=0;port=0;vlanid=0"

Huawei-IPHost-Addr = "10.1.0.123 ff:ff:ff:ff:ff:ff"

Huawei-Attr-1 = 0x00000000

Huawei-Input-Average-Rate = 0

Huawei-Attr-4 = 0x00000000

Huawei-Output-Average-Rate = 0

Huawei-Priority = 255

Huawei-Connect-ID = 6000

NAS-IP-Address = 10.50.1.1

+- entering group preacct

++[preprocess] returns ok

rlm_acct_unique: Hashing 'Framed-IP-Address = 10.1.0.123,NAS-Port = 0,Client-IP-Address = 10.50.1.1,NAS-IP-Address = 10.50.1.1,Acct-Session-Id = "NE16_A2010090710153400011ce0aae07c7b06000",User-Name = "c_rinat"'

rlm_acct_unique: Acct-Unique-Session-ID = "924de87a6d2db155".

++[acct_unique] returns ok

rlm_realm: No '@' in User-Name = "c_rinat", looking up realm NULL

rlm_realm: No such realm "NULL"

++[suffix] returns noop

++[files] returns noop

+- entering group accounting

++[unix] returns ok

expand: /var/log/freeradius/radutmp -> /var/log/freeradius/radutmp

expand: %{User-Name} -> c_rinat

++[radutmp] returns ok

expand: %{User-Name} -> c_rinat

rlm_sql (sql): sql_set_user escaped user --> 'c_rinat'

expand: %{Acct-Input-Gigawords} -> 0

expand: %{Acct-Input-Octets} -> 0

expand: %{Acct-Output-Gigawords} -> 0

expand: %{Acct-Output-Octets} -> 0

expand: %{Acct-Delay-Time} -> 0

expand: UPDATE radacct SET acctstoptime = '%S', acctsessiontime = '%{Acct-Session-Time}', acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', acctterminatecause = '%{Acct-Terminate-Cause}', acctstopdelay = '%{%{Acct-Delay-Time}:-0}', connectinfo_stop = '%{Connect-Info}' WHERE acctsessionid = '%{Acct-Session-Id}' AND username = '%{SQL-User-Name}' AND nasipaddress = '%{NAS-IP-Address}' -> UPDATE radacct SET acctstoptime = '2010-09-07 10:14:16', acctsessiontime = '16', acctinputoctets = '0' << 32 | '0', acctoutputoctets = '0' << 32 | '0', acctterminatecause = 'User-Request', acctstopdelay = '0', connectinfo_stop = '' WHERE acctsessionid = 'NE16_A2010090710153400011ce0aae07c7b06000' AND username = 'c_rinat' AND nasipaddress = '10.50.1.1'

rlm_sql (sql): Reserving sql socket id: 3

expand: %{Acct-Session-Time} -> 16

expand: %{Acct-Delay-Time} -> 0

expand: %{Acct-Input-Gigawords} -> 0

expand: %{Acct-Input-Octets} -> 0

expand: %{Acct-Output-Gigawords} -> 0

expand: %{Acct-Output-Octets} -> 0

expand: %{Acct-Delay-Time} -> 0

expand: INSERT INTO radacct (acctsessionid, acctuniqueid, username, realm, nasipaddress, nasportid, nasporttype, acctstarttime, acctstoptime, acctsessiontime, acctauthentic, connectinfo_start, connectinfo_stop, acctinputoctets, acctoutputoctets, calledstationid, callingstationid, acctterminatecause, servicetype, framedprotocol, framedipaddress, acctstartdelay, acctstopdelay) VALUES ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S', INTERVAL (%{%{Acct-Session-Time}:-0} + %{%{Acct-Delay-Time}:-0}) SECOND), '%S', '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Connect-Info}', '%{%{Acct-Input-Gigawords}:-0}' << 32 | '%{%{Acct-Input-Octets}:-0}', '%{%{Acct-Output-Gigawords}:-0}' << 32 | '%{%{Acct-Output-Octets}:-0}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Acct-Terminate-Cause}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0', '%{%{Acct-Delay-Time}:-0}') -> INSERT INTO radacct (acctsessionid, acctuniqueid, username, realm, nasipaddress, nasportid, nasporttype, acctstarttime, acctstoptime, acctsessiontime, acctauthentic, connectinfo_start, connectinfo_stop, acctinputoctets, acctoutputoctets, calledstationid, callingstationid, acctterminatecause, servicetype, framedprotocol, framedipaddress, acctstartdelay, acctstopdelay) VALUES ('NE16_A2010090710153400011ce0aae07c7b06000', '924de87a6d2db155', 'c_rinat', '', '10.50.1.1', '0', 'Virtual', DATE_SUB('2010-09-07 10:14:16', INTERVAL (16 + 0) SECOND), '2010-09-07 10:14:16', '16', 'RADIUS', '', '', '0' << 32 | '0', '0' << 32 | '0', '', '', 'User-Request', '', '', '10.1.0.123', '0', '0')

rlm_sql (sql): Released sql socket id: 3

++

 returns ok

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

sql/postgresql/dialup.conf

# accounting_stop_query         - query for Accounting stop packets
# accounting_stop_query_alt     - query for Accounting start packets
#                               (alternate in case first query doesn't
#                                affect any existing rows in the table)
accounting_stop_query = "UPDATE tablename SET...
accounting_stop_query_alt="INSERT ...

у вас наверное что то похожее, проверяйте acctsessionid, может ваша железка не считает его уникальным в рамках сесиии.

Изменено пользователем 2c2i

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.