Freeradius+Huawei

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
urm
Junior member
Сообщения: 1
Зарегистрирован: 07 сен 2010, 16:19
Откуда: Moskov

Freeradius+Huawei

Сообщение urm » 07 сен 2010, 16:22

Всем привет, кто сможет подскажите. Вообщем проблема такая! крутится у меня 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
++[sql] returns ok

and3008
Заслуженный сетевик
Сообщения: 1109
Зарегистрирован: 03 янв 2004, 23:30
Откуда: Н.Новгород

Re: Freeradius+Huawei

Сообщение and3008 » 03 окт 2010, 22:57

При начале сессии, должна прийти стартовая запись. При окончании сессии должна прийти стоповая запись. Есть вариант, что в процессе сессии через N-секунд приходит инфа о потребленном трафике. Как настроено, так и работает...

Китайские товарищи любят лажать со своим софтом, за что были не единожды возены мною по всяким разным багам в ихних железках и софте.
Как я понял, эта хуавеевская NE-шка неверно передает аккаутинговые параметры. Например перевидает идентификатор сессии. Либо передает его в поле, которое Freeradius не понимает (не настроен). В общем если у вас железяка на тех.суппорте, обращайтесь сперва туда. Больше толку будет.

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей