Перейти к содержимому

2.406-beta


Рекомендованные сообщения

Думаю, было б не очень сложно добавить в старгейзер выполнение OnDisconnect-OnConnect по клиенту, в момент изменения тарифа (в случае, когда данный клиент онлайн). Если такая функция не всех устраивает, то можно добавить в конфиг параметр.

 

Для этого предусматривается выполнение скрипта OnChange.

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

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Kucher2

у меня отдаленно похоже

...
SPEED=`/etc/stargazer/GetSpeed $LOGIN`
SCOUNT="Kbit/s"
...
${fwcmd} pipe `expr $ID + 101` config bw $SPEED$SCOUNT queue `expr $SPEED '/' 8`Kbytes
${fwcmd} pipe `expr $ID + 901` config bw $SPEED$SCOUNT queue `expr $SPEED '/' 8`Kbytes
...
${fwcmd} add `expr $ID '*' 10 + 10002` pipe `expr $ID + 101` ip from $IP to any via $IFACE in
${fwcmd} add `expr $ID '*' 10 + 10003` pipe `expr $ID + 901` ip from any to $IP via $IFACE out
...

но скорость привязываеться к тарифу

speedh.jpg

и при изменении тарифа перезаписываеться в юзердату

 

аналогичная проблема с заменой тарифного плана "в следущем месяце" пока что успешно решаеться костылем на пхп с проходом по крону но сие считаю не красивым решением.

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

Пропал инет. Смотрю на модем - лампочки не мигают. Жду сижу - авторизатор покраснел. Залез на сервер - пинги на яндекс проходят как с самого сервера, так и с клиентской машины (правила остались), а вот СТГ подключения не принимает. В логах пусто. Сам СТГ в памяти есть - по TOP'у двумя процессами, как положено, но похоже "висит" или курит. :/

 

Версия 2.406.rc1. До этого несколько месяцев всё пахало как часы. Полтергейст?

 

Только что опять - на этот раз лампочка DSL погасла на модеме, но когда модем установил связь - авторизатор по прежнему не коннектится, хотя с самого сервера пинги на яндекс идут. Похоже, провайдер шутит, а СТГ почему-то не "заводится".

Сделал killall stargazer и стартанул его заново. В Логах ничего кроме стандартных "остановлен/запущен".

 

Через несколько секунд он снова "свалился". В логах по прежнему пусто, правила остались, все процессы СТГ на месте, но авторизатор не коннектится. :rolleyes:

 

Что сделал: killall stargazer, скачал отсюда stg-2.4-2009.03.25-12.27.21.gz, распаковал, сделал ./buld, gmake, потом заменил /var/stargazer и /etc/stargazer на каталоги из резервных копий и запустил СТГ.

Пока работает. Что это было? О_о

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

А что показывает netstat?

А что говорит tcpdump в момент коннекта?

Еще можно включить в старгейзере мониторинг потоков и посмотреть не зависает ли поток атворизатора.

Еще можно собрать старгейзер в отладочном режиме и посмотреть - может он что-то в консоль пишет?

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

Чёрт, опять это случилось!

Небыло Инета у прова часа 3.

Авторизатор зелёного цвета, Скрипты не срабатывают. Когда вырубил и врубил авторизатор совсем - оказалось, что он просто не может законнектиться.

Конфигуратор тоже.

Если тупо стартануть стг по stargazer - заводится, но через несколько мину отваливается. В логах пусто.

 

Лихорадочно пытался запустить сервер, причём не помогала даже killall stargazer, только killall -9.

И только после этого СТГ запустился.

 

У меня тут ещё ipfw count работает параллельно, захватывает траф на внешнем ИФ, - может из-за этого?

 

post-3670-1256727816,0299_thumb.jpg

post-3670-1256727810,7853_thumb.jpg

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

Чёрт, опять это случилось!

Небыло Инета у прова часа 3.

Авторизатор зелёного цвета, Скрипты не срабатывают. Когда вырубил и врубил авторизатор совсем - оказалось, что он просто не может законнектиться.

Так может просто еще тайм-аут не прошел?

 

Конфигуратор тоже.

Если тупо стартануть стг по stargazer - заводится, но через несколько мину отваливается. В логах пусто.

Не понял. Так Stargazer заводился или нет?

 

Лихорадочно пытался запустить сервер, причём не помогала даже killall stargazer, только killall -9.

И только после этого СТГ запустился.

Запустить? Перезапустить?

 

У меня тут ещё ipfw count работает параллельно, захватывает траф на внешнем ИФ, - может из-за этого?

 

post-3670-1256727816,0299_thumb.jpg

post-3670-1256727810,7853_thumb.jpg

 

Я атк и не понял, stargazer упал или завис?

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

Прочитал предыдущее сообщение. Расставь по порядку: провайдер, stargazer, модем, авторизатор/конфигуратор. Кто куда подключен и что где пропадало?

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

Сервер берёт инет с АДСЛ, реальный IP, модем прозрачен.

У провайдера вырубили магистральный кабель в 7 утра и инета небыло до 12 дня.

Часов в 10 включил на своей Win-машине монитор и увидел, что авторизатор - красный.

Конфигуратор к серверу не коннектился.

Но правила IPFW на нём не сбросились.

Когда дали Инет и пинги с сервера начали ходить на Яндекс - ситуация не изменилась.

Прождал минут 10.

Затем зашёл на сервер и сделал killall stargazer, снова стартанул СТГ.

Авторизатор позеленел, правила на сервере обновились, т.е. СТГ заработал. На пару минут.

Потом всё отвалилось - все правила для юзеров сбросились, в процессах висит 2 stargazer, но ни авторизатором ни конфигуратором к серверу не подключиться.

Перезагрузил сервер. Снова вроде всё завелось на пару минут и снова картина та же: в процессах висит 2 stargazer, но ни авторизатором ни конфигуратором к серверу не подключиться.

Сделал killall stargazer. В памяти остался 1 процесс stargazer.

Подождал минуты 3 - без изменений.

Сделал killall -9 stargazer и потом запустил его снова.

Вот после этого всё заработало без сбоев. :)

 

СТГ падает в корку только если пытаться убить процесс по killall. В логах только сообщения о старте и останове СТГ и модулей.

 

Может надо было подождать минут 20 и всё б нормализовалось?

Я беспокоюсь, что такое случится когда меня не будет дома... ;)

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

в то время, когда подвисает старгейзер, что говорит команда:

netstat -n | grep 5556

 

где 5556 - порт, к которому конектится конфигуратор

 

собери старгейзер в дебаг режиме, покажи вывод консоли.

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

Увы, не могу: сервер реальный, рабочий. Для того чтобы это смоделировать нужно целенаправленно рубить Инет: народ не поймёт. Я думал может кто сталкивался уже. :)

 

В режиме дебага, я так понимаю, СТГ будет валить в лог всё подряд? Не очень хочется забивать мусором логи и ждать когда это снова случиться.

Кстати, как собрать его в дебаг-режиме?

 

За советы спасибо. В следующий раз не буду торопиться, попробую сделать как тут говорили.

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

Наличие/отсутствие инета для Stargazer'а безразлично. Он от этого ни падать ни вешаться не может...

То что отваливается авторизатор и перестает коннектиться конфигуратор - может файрвол?

После killall остается 1 процесс: stargazer или stg-exec? Может скрипт зависает?

Падает в корку при killall - это достоверно? Есть сообщение о SIGKILL или образовавшаяся кора?

 

В дебаг-режиме он будет не в лог все валить, а в консоль. Консоль можно перенаправить, при желании, в файл.

Для сборки в отладочном режиме нужно сделать

$ ./build debug
...
$ make

Ссылка на сообщение
Поделиться на других сайтах
То что отваливается авторизатор и перестает коннектиться конфигуратор - может файрвол?

Каким образом?

 

ipfw.sh:

#!/bin/sh
fwcmd="/sbin/ipfw"
natdcmd="/sbin/natd"
int_if="rl0"
ext_if="rl1"

#sbros ipfw
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush

#pipe dlya pomegabaytnikov
${fwcmd} pipe 1 config bw 1024Kbit/s
${fwcmd} pipe 2 config bw 400Kbit/s
${fwcmd} pipe 3 config bw 1024Kbit/s
${fwcmd} pipe 4 config bw 400Kbit/s
${fwcmd} pipe 5 config bw 544Kbit/s
${fwcmd} pipe 6 config bw 544Kbit/s
${fwcmd} pipe 7 config bw 160Kbit/s
${fwcmd} pipe 8 config bw 160Kbit/s
${fwcmd} queue 1 config pipe 1 weight 50 mask src-ip 0xffffffff gred 0.002/10/30/0.1
${fwcmd} queue 2 config pipe 2 weight 75 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
${fwcmd} queue 3 config pipe 3 weight 50 mask src-ip 0xffffffff gred 0.002/10/30/0.1
${fwcmd} queue 4 config pipe 4 weight 75 mask dst-ip 0xffffffff gred 0.002/10/30/0.1

${fwcmd} add 5 allow udp from any 123 to any 123
${fwcmd} add 10 fwd 127.0.0.1,3128 tcp from 10.0.0.0/24 to any 80 out xmit ${ext_if}

#zaxvat trafa dlya rrdtools
${fwcmd} -q add 6 count all from any  to any in via ${ext_if}
${fwcmd} -q add 7 count all from any to any out via ${ext_if}
${fwcmd} -q add 8 count all from any to any via ${ext_if}

#${fwcmd} add 15 allow udp from 127.0.0.1 53 to any
#${fwcmd} add 16 allow udp from any to 127.0.0.1 53

#pravila pipe dlya vxodyashix VPN
${fwcmd} add 20 pipe 5 all from any to 172.16.0.12
${fwcmd} add 21 pipe 6 all from 172.16.0.12 to any
${fwcmd} add 22 pipe 7 all from any to 172.16.0.11
${fwcmd} add 23 pipe 8 all from 172.16.0.11 to any

${fwcmd} add 40 allow icmp from 10.0.0.10/24 to any via rl0 icmptype 0,8

#NAT'im
${fwcmd} add 50 divert natd ip from any to any via ${ext_if}

#pravila dlya vxodyashix VPN
${fwcmd} add 51 pass tcp from any to me 1723 setup
${fwcmd} add 52 pass tcp from me to any 1723 setup
${fwcmd} add 53 pass gre from me to any
${fwcmd} add 54 pass gre from any to me
${fwcmd} add 55 pass tcp from any to any via ng*
${fwcmd} add 56 pass udp from any to any via ng*

#blokiruem fragmentirovanie icmp
${fwcmd} add 59 deny log icmp from any to any frag

#razreshaem icmp
${fwcmd} add 60 allow icmp from any to any via ${ext_if}

${fwcmd} add 70 deny log ip from any to 127.0.0.0/8
${fwcmd} add 80 deny log ip from 127.0.0.0/8 to any

${fwcmd} add 100 allow ip from any to any via lo0

#blokirovka protiv trafika virusov i t.d.
${fwcmd} add 00304 deny log ip from any to 192.168.0.0/24 out via ${ext_if}
${fwcmd} add 00305 deny log ip from any to 10.0.0.0/24 out via ${ext_if}
${fwcmd} add 00306 deny log ip from any to 172.16.0.0/12 out via ${ext_if}

# Sleduyushie pravila razreshayut konektit`sya klientam k serveru
# stargazer na port 8888 na kotorom on slushaet klientskie soedineniya
${fwcmd} add 00308 allow udp from any to 10.0.0.0/24 8888 via ${int_if}
${fwcmd} add 00309 allow udp from 10.0.0.0/24 to any via ${int_if}

#razreshaem connect konfiguratorom s 10.0.0.1 i 59
${fwcmd} add 00314 allow tcp from 10.0.0.10 5555 to 10.0.0.1 via ${int_if}
${fwcmd} add 00315 allow tcp from 10.0.0.1 to 10.0.0.10 5555 via ${int_if}
${fwcmd} add 00316 allow tcp from 10.0.0.10 5555 to 10.0.0.59 via ${int_if}
${fwcmd} add 00317 allow tcp from 10.0.0.59 to 10.0.0.10 5555 via ${int_if}

#pravila dlya kartochek

${fwcmd} add 400 allow tcp from me 80 to 10.0.0.0/24
${fwcmd} add 410 allow tcp from 10.0.0.0/24 to me 80

# Blokiruem vse ostal`nie klientskie zaprosi k routeru
${fwcmd} add 50020 deny log ip from 10.0.0.0/24 to 10.0.0.10 via ${int_if}
${fwcmd} add 50021 deny log ip from 192.168.10.0/24 to 192.168.20.1 via ${int_if}
${fwcmd} add 50022 deny log ip from 192.168.10.0/24 to 192.168.30.1 via ${int_if}

# Sleduyushie pravila razreshayut routeru soedinyat`sya s ispol`zovaniem 
# protokola tcp s vneshnimi setyami.
${fwcmd} add 50029 allow tcp from any to any out via ${ext_if} setup
${fwcmd} add 50030 allow tcp from any to any via ${ext_if} established

# Sleduyushie pravila razreshayut routeru soedinyat`sya s ispol`zovaniem 
# protokola udp s vneshnimi setyami, a takzhe razreshayut prohozhdenie 
# DNS trafika cherez router
${fwcmd} add 50031 allow udp from any to any out via ${ext_if}

${fwcmd} add 50032 allow udp from any to any in recv ${ext_if}

# Dalee idet zapreshayushee pravilo dlya vsego ostal`nogo 
# trafika (t.e. shema fayrvola – vse chto ne razresheno 
# yavno – to zapresheno)
$fwcmd add 65534 deny log ip from any to any

 

Кстати, перед тем как запустить СТГ, я предварительно делал

 

IPFW allow all from any to <LAN>

IPFW allow all from <LAN> to any

 

т.е. СТГ запустился и какое-то время работал "вхолостую" - правила разрешали ходить юзерам в Инет. Я подождал минут 10 и убрал эти правила.

 

После killall остается 1 процесс: stargazer или stg-exec? Может скрипт зависает?

Остаётся stargazer. На счёт скрипа мне тоже пришла такая мысль. Вот его фрагмент:

 

OnConnect

#!/bin/sh
fwcmd="/sbin/ipfw"
ip=$2
login=$1
id=$4
cash=$3
sgconf="/var/stargazer/cm/sgconf"
trf=`grep 'Tariff=' /var/stargazer/users/$login/conf | cut -d '=' -f2`
rest=`grep 'FreeMb=' /var/stargazer/users/$login/stat | cut -d '=' -f2`
grp=`grep 'Group=' /var/stargazer/users/$login/conf | cut -d '=' -f2`

${fwcmd} delete `expr $id '*' 10 + 29000`
${fwcmd} delete `expr $id '*' 10 + 29001`
${fwcmd} delete `expr $id '*' 10 + 29002`
${fwcmd} delete `expr $id '*' 10 + 29003`
${fwcmd} delete `expr $id '*' 10 + 29004`
${fwcmd} delete `expr $id '*' 10 + 29005`
${fwcmd} pipe delete `expr $id '*' 10 + 29001`
${fwcmd} pipe delete `expr $id '*' 10 + 29002`
${fwcmd} pipe delete `expr $id '*' 10 + 29003`
${fwcmd} pipe delete `expr $id '*' 10 + 29004`

if [ $ip = '10.0.0.1' ]
then
${fwcmd} add `expr $id '*' 10 + 29001` allow all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29002` allow all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
${sgconf} -s 10.0.0.10 -p 5555 -a admin -w <pass> -u $1 -m "Ваш логин: $1
Ваш IP-адрес: $2
Ваш тариф: $trf
Потрачено денег в этом месяце: $rest"
   exit 1
fi

if [ $trf = '512' ]
then
x${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} pipe `expr $id '*' 10 + 29001` config bw 144Kbit/s
${fwcmd} pipe `expr $id '*' 10 + 29002` config bw 144Kbit/s
${fwcmd} add `expr $id '*' 10 + 29003` pipe `expr $id '*' 10 + 29001` all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29004` pipe `expr $id '*' 10 + 29002` all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
${sgconf} -s 10.0.0.10 -p 5555 -a admin -w <pass> -u $1 -m "Ваш логин: $1
Ваш IP-адрес: $2
Ваш тариф: $trf
Потрачено денег в этом месяце: $rest"
   exit 1
fi

if [ $grp = '1' ]
then
${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} add `expr $id '*' 10 + 29001` queue 1 all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29002` queue 2 all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
${sgconf} -s 10.0.0.10 -p 5555 -a admin -w <pass> -u $1 -m "Ваш логин: $1
Ваш IP-адрес: $2
Ваш тариф: $trf
Потрачено денег в этом месяце: $rest"
   exit 1
fi

if [ $grp = '2' ]
then
${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} add `expr $id '*' 10 + 29001` queue 3 all from any to $ip
${fwcmd} add `expr $id '*' 10 + 29002` queue 4 all from $ip to any
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
${sgconf} -s 10.0.0.10 -p 5555 -a admin -w <pass> -u $1 -m "Ваш логин: $1
Ваш IP-адрес: $2
Ваш тариф: $trf
Потрачено денег в этом месяце: $rest"
   exit 1
fi

 

Падает в корку при killall - это достоверно? Есть сообщение о SIGKILL или образовавшаяся кора?

 

Да, кора есть. При этом по логам такое впечатление, что он корретконо завершает работу - сообщения об этом есть. Кору прикрепил.

 

За подсказку спасибо.

core.zip

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

А, вспомнил. После 2.406-beta я исправлял ошибку с падением при останове. Для beta это нормальное явление, данные при этом не теряются.

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

Есть ли какие-то скрипты на if-up/if-down для модема?

Нет, модем прозрачен, работает как свитч.

 

А, вспомнил. После 2.406-beta я исправлял ошибку с падением при останове. Для beta это нормальное явление, данные при этом не теряются.

Да у меня вроде не beta. :/

Ссылка на сообщение
Поделиться на других сайтах
в то время, когда подвисает старгейзер, что говорит команда:

netstat -n | grep 5556

 

где 5556 - порт, к которому конектится конфигуратор

 

tcp4       4      0  10.0.0.10.5555         10.0.0.1.56607         ESTABLISHED
tcp4     296      0  10.0.0.10.5555         10.0.0.10.50664        ESTABLISHED
tcp4       0      0  10.0.0.10.50664        10.0.0.10.5555         ESTABLISHED

 

10.0.0.10 -сервер, 10.0.0.1 - моя машина.

 

Убил его нафик, скачал всё отсюда: http://local.com.ua/forum/topic/18155-stg-2-406/

Собрал, поставил, запустил. Работает. :D

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

Опять! :)

madf был прав!

Собрал СТГ в отладочном режиме. Пустил юзеров в обход СТГ, щас сижу - в отчаянии смотрю на логи.

 

Вижу, что виснет скрипт OnConnect. Почему?!

Раньше ведь такого небыло! Причём стоит просто остановить СТГ по killall - капец, появляется этот затык.

 

inetaccess.cpp > 18:12:41 > User 100036 FOUND!
   inetaccess.cpp > 18:12:41 > User 100057 FOUND!
   inetaccess.cpp > 18:12:41 > User 10004 FOUND!
   inetaccess.cpp > 1829300 allow icmp from 10.0.0.71 to any icmptypes 0,3,4,11,12
29303 pipe 29301 ip from any to 10.0.0.71 via rl0
29304 pipe 29302 ip from 10.0.0.71 to any via rl0

 

И ППЦ! Т.е. на юзера создаются pipe, а дальше дело не идёт.

Скрипт виснет на попытке отправки сообщения юзеру. :)

Причём если подключаюсь я один - нормально всё.

Он-лайн сейчас 15 человек.

 

 

Вот фрагмент OnConnect:

 

if [ $trf = '1024' ]
then
${fwcmd} add `expr $id '*' 10 + 29000` allow icmp from $ip to any icmptype 0,3,4,11,12
${fwcmd} pipe `expr $id '*' 10 + 29001` config bw 1100Kbit/s
${fwcmd} pipe `expr $id '*' 10 + 29002` config bw 288Kbit/s
${fwcmd} add `expr $id '*' 10 + 29003` pipe `expr $id '*' 10 + 29001` all from any to $ip via rl0
${fwcmd} add `expr $id '*' 10 + 29004` pipe `expr $id '*' 10 + 29002` all from $ip to any via rl0
echo "C `date +%Y.%m.%d-%H.%M.%S``arp $ip` $cash" >> /var/stargazer/users/$login/connect.log
${sgconf} -s 10.0.0.10 -p 5555 -a admin -w <pass> -u $1 -m "Ваш логин: $1
Ваш IP-адрес: $2
Ваш тариф: $trf
Потрачено денег в этом месяце: $rest"
   exit 1
fi

 

Помогите пожалуйста! :D

 

В консоль время от времени лезет это:

ipfw: rule 29303: setsockopt(IP_DUMMYNET_DEL): No such file or directory

ipfw: rule 29301: setsockopt(IP_FW_DEL): Invalid argument

 

ps -ax | grep stargazer:

 3264  v2  I<+    0:06.01 stargazer
3265  v2  I+     0:00.01 stargazer: stg-exec (stargazer)
3417  v2  I+     0:00.00 /var/stargazer/cm/sgconf -s 10.0.0.10 -p 5555 -a admi
4178  v2  I+     0:00.00 sh -c /etc/stargazer/OnConnect "100071" "10.0.0.71" "
4179  v2  I+     0:00.01 /bin/sh /etc/stargazer/OnConnect 100071 10.0.0.71 10.
4224  v2  I+     0:00.00 /var/stargazer/cm/sgconf -s 10.0.0.10 -p 5555 -a admi
4637  v4  R+     0:00.00 grep stargazer

 

Удалил из скрипта строку посыла сообщения - всё ок. Жаль. ;)

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

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

По поводу этого:

ipfw: rule 29301: setsockopt(IP_FW_DEL): Invalid argument

Видимо не срабатывает OnConnect, но срабатывает OnDisconnect. Вот ipfw и ругается.

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.


×
×
  • Создать...