Jump to content

Разработка модуля Vpn (radius) для Stg 2.4


Recommended Posts

Появился некоторый баг, иногда когда отрубается NAS и массово отключается много пользователей, а потом быстро начинают подключатся stargazer вываливается с Ошибкой сегментирования:

 

   inetaccess.cpp > 19:22:15 > ALIVE_ACK_8 - OK
   inetaccess.cpp > 19:22:16 > Min8(sizeof(ALIVE_SYN)) = 368
   inetaccess.cpp > 19:22:16 > 384 bytes sent to 10.50.7.134 len=384
   inetaccess.cpp > 19:22:16 > Send_ALIVE_SYN_8
   inetaccess.cpp > 19:22:16 > recv from 10.50.7.134 len=64
   inetaccess.cpp > 19:22:16 > User colombo FOUND!
   inetaccess.cpp > 19:22:16 > ======================>   InitEncrypt dont needed
   inetaccess.cpp > 19:22:16 > ALIVE_ACK_8 - OK
 traffcounter.cpp > 19:22:17 > FlushAndRemove() packets: 550(rem 21) ip2packets: 1100(rem 42)
   inetaccess.cpp > 19:22:18 > Min8(sizeof(ALIVE_SYN)) = 368
   inetaccess.cpp > 19:22:18 > 384 bytes sent to 10.50.7.202 len=384
   inetaccess.cpp > 19:22:18 > Send_ALIVE_SYN_8
   inetaccess.cpp > 19:22:18 > recv from 10.50.7.202 len=64
   inetaccess.cpp > 19:22:18 > User artur FOUND!
   inetaccess.cpp > 19:22:18 > ======================>   InitEncrypt dont needed
   inetaccess.cpp > 19:22:18 > ALIVE_ACK_8 - OK
    radius_ia.cpp > 19:22:18 > AFTER select
    radius_ia.cpp > 19:22:18 > Auth process
    radius_ia.cpp > 19:22:18 > Recv packert - OK
    radius_ia.cpp > 19:22:18 > NASIPAddress: 3232261122
    radius_ia.cpp > 19:22:18 > CallingStationId: 00:14:22:BA:97:68
    radius_ia.cpp > 19:22:18 > Find CHAP password!!! attr
    radius_ia.cpp > 19:22:18 > Auth 6 acct 7
    radius_ia.cpp > 19:22:18 > AFTER select
    radius_ia.cpp > 19:22:18 > Acct process
    radius_ia.cpp > 19:22:18 > Recv packert - OK
Ошибка сегментирования

 

Какие то косяки в обработчике пакетов, постараюсь запустить с gdb и отследить core.

Link to post
Share on other sites
  • Replies 80
  • Created
  • Last Reply

Top Posters In This Topic

Упал сегодня без меня опять, лог падения не сохранился, есть корка, но почему-то gdb не хочет ее дебажить

 

"/var/stargazer/core.13385" is not a core dump: Value too large for defined data type

 

Корка весит 3Гб, судя по ошибке получается что корка создалась неправильно, правда почему - мне непонятно, кто значет в чем причина - напишите.

Link to post
Share on other sites

Так, core dump отдебажить так и не удалось, когда уменьшил размер отвечает просто что file format not recognised

 

Поковырялся в коде и обнаружил одну вещь, в авторизации при разборе пакетов используется try catch конструкция, и на этом месте падений нет

 

А вот в коде аккаунтинга такой конструкции нет и судя по логу падения именно в этом коде, переписал и добавил туда аналогичную конструкцию, посмотрим, если поможет - выложу патч.

 

П.С. Патч не помог, сегодня с утра опять упал, думаю дальше.

Link to post
Share on other sites
Так, core dump отдебажить так и не удалось, когда уменьшил размер отвечает просто что file format not recognised

 

Поковырялся в коде и обнаружил одну вещь, в авторизации при разборе пакетов используется try catch конструкция, и на этом месте падений нет

 

А вот в коде аккаунтинга такой конструкции нет и судя по логу падения именно в этом коде, переписал и добавил туда аналогичную конструкцию, посмотрим, если поможет - выложу патч.

 

П.С. Патч не помог, сегодня с утра опять упал, думаю дальше.

свяжитесь с нами по аське: 340846559

Link to post
Share on other sites
  • 2 weeks later...

Итак, после длительных тестов и выводов дополнительной отладочной информации могу довольно уверенно утверждать что баг связан с модулем netflow:

 

    radius_ia.cpp > 22:42:35 > Found IP (192.168.1.60) in request start-packet of user tushkanchik.
    radius_ia.cpp > 22:42:35 > Trying to authorize user:
    radius_ia.cpp > 22:42:35 > Login: tushkanchik
    radius_ia.cpp > 22:42:35 > IP: 192.168.1.60
    radius_ia.cpp > 22:42:35 > Interface: radius / MikroTik (192.168.100.2) / 3032 / 00:0A:E4:BE:AF:D6
         user.cpp > 22:42:35 > Authorize 1
         user.cpp > 22:42:35 > Authorize 2
         user.cpp > 22:42:35 > Authorize 8
         user.cpp > 22:42:35 > Authorize 9

 

else
   {
       printfd(__FILE__, "Authorize 8\n");
       if (sconnected){
           printfd(__FILE__, "Authorize 9\n");  <--------- Последняя выведенная запись
           pthread_cancel(delayThread);
           pthread_join(delayThread,NULL);
           ForceDelayCurrIP();
           printfd(__FILE__, "Authorize 10\n");
       }

 

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

 

Дальнейшее обсуждение данного бага переношу в тему про нетфлов.

Огромное спасибо разработчикам модуля radius за проявление стремление помочь, надеюсь что у разработчиков netflow оно тоже будет.

Link to post
Share on other sites

Что ж, еще лучше, тогда сегодня вечером представлю ему свои выводы, да и еще наверное к тому времени будет более подробно понятно место где происходит падение.

Link to post
Share on other sites
  • 3 months later...

radius_ia.cpp > 01:52:10 > AFTER select

radius_ia.cpp > 01:52:10 > Auth process

radius_ia.cpp > 01:52:10 > Recv packert - OK

radius_ia.cpp > 01:52:10 > Find CHAP password!!! attr

radius_ia.cpp > 01:52:10 > Auth 5 acct 6

 

как исправить ?

Link to post
Share on other sites
radius_ia.cpp > 01:52:10 > AFTER select

radius_ia.cpp > 01:52:10 > Auth process

radius_ia.cpp > 01:52:10 > Recv packert - OK

radius_ia.cpp > 01:52:10 > Find CHAP password!!! attr

radius_ia.cpp > 01:52:10 > Auth 5 acct 6

 

как исправить ?

А чего исправлять?

Link to post
Share on other sites
  • 5 weeks later...

Не знаю как у вас,но у меня он ваще не ставиться.

 

 

[root@portal-saratov usr]# cd stg-2.402.9.7

[root@portal-saratov stg-2.402.9.7]# dir

CVS include lib projects stglibs

[root@portal-saratov stg-2.402.9.7]# cd projects

[root@portal-saratov projects]# dir

CVS stargazer

[root@portal-saratov projects]# cd stargazer

[root@portal-saratov stargazer]# dir

admin.cpp build install plugin_runner.cpp script_executer.o stargazer.vpwhistu tariff2.o user.o user_traff.cpp

admin.h curr_ip.cpp install_bin plugin_runner.h settings.cpp startstg TODO user_property.cpp user_traff.h

admin.o curr_ip.h install_etc_var plugin_runner.o settings.h stg_timer.cpp traffcounter.cpp user_property.h

admins.cpp curr_ip.o main.cpp plugins settings.o stg_timer.h traffcounter.h user_property.o

admins.h CVS main.o README stargazer stg_timer.o traffcounter.o users.cpp

admins.o deps Makefile script_executer.cpp stargazer.vpj tariff2.cpp user.cpp users.h

BUGS inst modules script_executer.h stargazer.vpw tariff2.h user.h users.o

[root@portal-saratov stargazer]# cd plugins

[root@portal-saratov plugins]# dir

authorization capture configuration CVS other store

[root@portal-saratov plugins]# authorization

-bash: authorization: command not found

[root@portal-saratov plugins]# cd authorization

[root@portal-saratov authorization]# dir

ao CVS inetaccess radius

[root@portal-saratov authorization]# cd radius

[root@portal-saratov radius]# dir

deps eap.cpp eap.h Makefile radius.cpp radius.h radius_ia.cpp radius_ia.h radius.o

[root@portal-saratov radius]# make

g++ -c radius_ia.cpp -g3 -Wall -fPIC -Wno-non-virtual-dtor -I ../../../../../include -DLINUX

../../../user.h: In member function Б─≤int RADIUS_IA::AuthProcess()Б─≥:

../../../user.h:207: error: Б─≤bool USER::IsInetable()Б─≥ is private

radius_ia.cpp:348: error: within this context

../../../user.h:207: error: Б─≤bool USER::IsInetable()Б─≥ is private

radius_ia.cpp:371: error: within this context

radius_ia.cpp: In member function Б─≤int RADIUS_IA::AcctProcess()Б─≥:

radius_ia.cpp:430: error: no matching function for call to Б─≤USER::Authorize(const uint32_t&, std::string, unsigned int, RADIUS_IA* const)Б─≥

../../../user.h:174: note: candidates are: int USER::Authorize(uint32_t, const std::string&, const BASE_AUTH*)

../../../user.h: In member function Б─≤int RADIUS_IA::EAPAuthor(const RadiusPacket&, sockaddr_in)Б─≥:

../../../user.h:207: error: Б─≤bool USER::IsInetable()Б─≥ is private

radius_ia.cpp:627: error: within this context

make: *** [radius_ia.o] Error 1

[root@portal-saratov radius]#

 

 

11.png

 

Или я лох.. Расскажите

Link to post
Share on other sites
  • 2 months later...
Помогите плз, где можно скачать модуль radius для старгейзера?

если ссылка непублична, просьба выслать в личку

v-lan.ru/projects

Link to post
Share on other sites

Большая просьба добавить в мануал по инсталляции, что, к примеру, для убунту должен быть установлен пакет libssl-dev, без него не может при компиляции найти md5.h

Link to post
Share on other sites
  • 1 month later...

у меня не находит мд5 для модуля:

2008-06-17 00:58:09 -- ---------------------------------------------

2008-06-17 00:58:09 -- Stg stopped successfully.

2008-06-17 00:58:09 -- StgTimer: Stop successfull.

2008-06-17 00:58:09 -- Queue removed successfully.

2008-06-17 00:58:08 -- Users: Stop successfull.

2008-06-17 00:58:08 -- Traffcounter: Stop successfull.

2008-06-17 00:58:08 -- Error: Plugin loading failed. /usr/stg/lib/mod_radius_ia.so: Undefined symbol "MD5"

2008-06-17 00:58:08 -- Storage plugin: file_store v.1.02. Loading successfull.

2008-06-17 00:58:08 -- Timer thread started successfully.

2008-06-17 00:58:08 -- Message queue created successfully. msgKey=5555 msgID=3276800

2008-06-17 00:58:08 -- Stg v. Stg 2.404

 

подскажите, чего надо поставить?

Link to post
Share on other sites

кстати, для четвертой ветки фри не находит stdint.h, но его можно лекго сделать со следующим содержимым:

 

#ifndef _STDINT_H

#define _STDINT_H 1

 

#include <sys/types.h>

#include <wchar.h>

 

#endif /* stdint.h */

Link to post
Share on other sites

вот говорят для подобного случая что надо:

| following error during the link process :

| /usr/bin/ld: Undefined symbols:

| _MD5

| Indeed, in one of my classes, I call the C "MD5" function as defined in

| "openssl/md5.h".

| How do I solve this problem ?

You need to add the lib which contains the definition for MD5 to your

project. In this case, /usr/lib/libcrypto.dylib

 

но куда этот либ пихать я не пойму.

Link to post
Share on other sites

вот жеж ё!

чисто местодом подбора допустимых вариантов догадался что надо приписать в мейкфайле к либам надписи -lcrypto -lcrypt

 

запустилась сабака.

Link to post
Share on other sites

а еще подскажите, почему это старгез сам удаляет конфигарацию модуля radius из файла stargazer.conf во время убития и повторного запуска?

ну очень интересно

в первый раз я подумал что старгез просто переписывает конфиг тем что у него в пямяти, но после того как я его стартанул, он загрузил радиус, а потом перезапустил - конфиг модуля радиуса снова исчез

Link to post
Share on other sites
  • 2 months later...

Обнаружена трабла: старгейзер 2.401 с модулем радиуса mod_radius-0.81beta.

Путает исходящий и входящий трафик, данные о котором передаются через радиус. То бишь то, что пришял клиент записывается в upload, а что передал - в download. Вроде пустяк, но напрягает. Можно ли пофиксить?

сервер poptop 1.3.4.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...