Перейти до

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

Опубліковано:

решил вернуться к простому freeradius - у..всё сделал..но дальше столкнулся с бочиной -

есть ли деньги, нету ли денег, онлайн/всегда он лайн/не он лайн = старгазеру на это глубоко наплевать, трафик не считается, бабки не снимаются...подключаются и пользуются Инетом все кому не лень..

Проверь срабатывают ли скрипты OnConnect, OnDisconnect и обязательно используй коллектор трафика ipq_linux он хорошо считает трафик с впн, правила в форварде должны быть QUEUE, например

$IPTABLES -I FORWARD -s $IP -j QUEUE

$IPTABLES -I FORWARD -d $IP -j QUEUE

  • Відповіді 148
  • Створено
  • Остання відповідь

Top Posters In This Topic

Опубліковано:

Новый довесочек к этой сборке - шейпер входящего и исходящего трафика впн соединений реализованный следующим образом:

Создаем файл с произвольным именем в каталоге /etc/ppp/ip-up.d, например route с таким кодом

#!/bin/bash

INTERFACE=$1
LOCAL_IP=$4
REMOTE_IP=$5
IPPARAM=$6

LOGIN="stg_sql_user"
PASSWORD="stg_sql_password"
DB="stg_billing"

IPTABLES=/sbin/iptables

RES=`echo $REMOTE_IP | grep "^192\.168\.5.*" -c`
if [[ $RES = 1  ]]
then
   DOWN=`/usr/bin/mysql -u $LOGIN --password="$PASSWORD" -e "select Userdata1  from users where ip = '$REMOTE_IP'" $DB| /usr/bin/tail -n 1`
   UP=`/usr/bin/mysql -u $LOGIN --password="$PASSWORD" -e "select Userdata2  from users where ip = '$REMOTE_IP'" $DB| /usr/bin/tail -n 1`
   if [[ $DOWN = '' ]]
   then
       DOWN='2048'
   fi
   if [[ $UP = '' ]]
   then
       UP='128'
   fi
   DEVICE=$INTERFACE
   /sbin/tc qdisc del dev $DEVICE root
   /sbin/tc qdisc add dev $DEVICE root tbf rate ${DOWN}Kbit latency 50ms burst $[$DOWN*1024]
   /sbin/tc qdisc del dev $DEVICE handle ffff: ingress
   /sbin/tc qdisc add dev $DEVICE handle ffff: ingress
   /sbin/tc filter add dev $DEVICE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${UP}Kbit burst $[$DOWN*1024] drop flowid :1
fi

 

 

Где:

LOGIN="stg_sql_user"

PASSWORD="stg_sql_password"

DB="stg_billing"

логин, пароль и название базы SQL используемой stg сервером

 

Скорость загрузки у пользователя в конфигураторе пишем в поле Userdata1, а скорость аплоада у пользователя пишем в Userdata2 в килобитах. Если эти значения не указаны используются DOWN='2048', и UP='128' - загрузка 2Мбита и аплоад 128 Кбит соотв.

 

Строчка RES=`echo $REMOTE_IP | grep "^192\.168\.5.*" -c` определяет является ли это подключение впн соединением пользователя (в данном случае это сеть 192.168.5*, если у Вас другая, то необходимо сделать соотв. изменения.)

 

Жду критики.

Спасибо за внимание.

Адрес для связи: omega@ua.fm

 

Для удобства в веб админке 8 версии можно поля Userdata1 и Userdata2 можно назвать Download и Upload соотв. Это можно сделать в пункте Userdata раздела Настройки.

Опубліковано:
/sbin/tc qdisc del dev $DEVICE root

  /sbin/tc qdisc add dev $DEVICE root tbf rate ${DOWN}Kbit latency 50ms burst $[$DOWN*1024]

  /sbin/tc qdisc del dev $DEVICE handle ffff: ingress

  /sbin/tc qdisc add dev $DEVICE handle ffff: ingress

  /sbin/tc filter add dev $DEVICE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${UP}Kbit burst $[$DOWN*1024] drop flowid :1

а если использовать ето только не для интерфеса а для айпи.... то как бы выглядили ети строки?

Опубліковано:

Всем привет. Сталкнулся с такой проблемой. Настраивал всё как сказанно здесь и всё прекрассно работает за исключением одного но. Не хочeт правильно считать хоть ты тресни. Сначала не считало трафик вообще, после того как заменил в форварде ACCEPT на QUEUE считать начало но коряво. То есть есть подозрение что не учитывается тср. Мои конфиги

 

stargazer.conf

 

# Имя лог-файла куда пушутся события

LogFile = /var/log/stargazer.log

 

# Имя файла в котором определяются правила подсчета трафика

Rules = /etc/stargazer/rules

 

# Время через которое пишется d БД детальная статистика пользователя

# Значения: 1, 1/2, 1/4, 1/6.

# 1 - раз в чаc, 1/2 - раз в пол часа, 1/4 - раз в 15 мин, 1/6 - раз в 10 мин

DetailStatWritePeriod=1/6

 

# Периодичность записи записи в БД информации о стаитистке пользователя (минуты)

# При большом кол-ве пользователей эту величину стоит увеличить, т.к.

# запись в БД может занимать длительное время.

# Значения: 1...1440 (минуты)

StatWritePeriod = 10

 

# День снятия абонплаты

# Значения: 0...31. 0 - Последний день месяца

DayFee = 1

 

DayFeeIsLastDay=yes

WriteFreeMbTraffCost=no

 

# День сброса данных о трафике за месяц и день перехода пользователей на новые тарифы

# Значения: 0...31. 0 - Последний день месяца

DayResetTraff = 1

 

# "Размазанное" снятие абонплаты. Снятие АП не раз в месяц, а каждый

# день 1/30 или 1/31 части АП

# Значения: yes, no

SpreadFee = no

 

# Данная опция определяет может ли пользователь получить доступ в интерент

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

# Значения: yes, no

FreeMbAllowInet = no

 

# Названия направлений. Направления без названий не будут отображаться в

# авторизаторе и конфигураторе. Названия состоящие из нескольких слов должны

# быть взяты в кавычки

<DirNames>

DirName0 =

DirName1 = MediaServer

DirName2 = World

DirName3 =

DirName4 =

DirName5 =

DirName6 =

DirName7 =

DirName8 =

DirName9 =

</DirNames>

 

# Кол-во запускаемых процессов stg-exec.

# Эти процессы отвечают за выполнение скриптов OnConnect, OnDisconnect, ...

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

# Значения: 1...1024

ExecutersNum = 1

 

# Message Key для stg-exec.

# Идентификатор очереди сообщений для выполнятеля скриптов.

# Его изменение может понядобится если есть необходимость запустить несколько

# экземпляров stg. Если вы не понимаете, что это, не трогайте этот параметр!

# Значения: 0...2^32

# Значение по умолчанию: 5555

# ExecMsgKey = 5555

 

# Путь к директории, в которой находятся моудли сервера

ModulesPath = /usr/lib/stg/

 

################################################################################

# Store module

# Настройки плагина работающего с БД сервера

 

<StoreModule store_mysql>

# stg_billing - название базы с которой будет работать биллинг

# stg_sql_user - пользователь для этой базы

# stg_sql_password - пароль для этого пользователя

dbuser = stg

rootdbpass = aq1sw2de3

dbname = stg_base

dbhost = 127.0.0.1

</StoreModule>

 

 

 

 

################################################################################

# Прочие модули

 

<Modules>

 

# Настройки плагина авторизации Always Online "mod_auth_ao.so"

# Второй параметер - это имя модуля без mod_ в начале и .so в конце

# Т.е. полное имя модуля mod_auth_ao.so

<Module auth_ao>

</Module>

 

 

 

# Настройки плагина авторизации InetAccess "mod_auth_ia.so"

# Второй параметер - это имя модуля без mod_ в начале и .so в конце

# Т.е. полное имя модуля mod_auth_ia.so

<Module auth_ia>

 

# Порт на которм принимаются обращения от авторизатора

# Значения: 1...65534

Port = 5555

 

 

# Время между посылками запроса пользовател жив ли он

# и обновлением данных статистики (секунды)

# Значения: 5...600

UserDelay = 15

 

 

#Таймаут для пользователя. Если в течение этого времени авторизатор

#не отвечает, пользователь будет отключен

# Значения: 15...1200

UserTimeout = 65

 

 

# Этот параметр определяет что будет передаватся программе InetAccess от сервера

# как отстаток предоплаченного трафика

# Значения:

# FreeMb = 0 - кол-во бесплатных мегабайт в пресчете на цену нулевого направления

# FreeMb = 1 - кол-во бесплатных мегабайт в пресчете на цену первого направления

# FreeMb = 2 - кол-во бесплатных мегабайт в пресчете на цену второго направления

# FreeMb = 3 - кол-во бесплатных мегабайт в пресчете на цену третьего направления

# ........................

# FreeMb = 9 - кол-во бесплатных мегабайт в пресчете на цену девятого направления

# FreeMb = cash - кол-во денег на которые юзер может бесплатно качать

# FreeMb = none - ничего не передавать

FreeMb = cash

 

</Module>

 

 

 

# Модули можно использовать несколько раз с разными параметрами

#<Module auth_ia>

# Port = 7777

# UserDelay = 15

# UserTimeout = 65

# FreeMb = 0

#</Module>

 

 

 

# Настройки модуля конфигурации SgConfig "mod_conf_sg.so"

# Второй параметер - это имя модуля без mod_ в начале и .so в конце

<Module conf_sg>

 

# Порт по которому сервер взаимодействует с конфигуратором

# Значения: 1...65535

Port = 5555

</Module>

 

 

 

# Модуль захвата трафика "mod_cap_ether.so"

# Второй параметер - это имя модуля без mod_ в начале и .so в конце

# Без параметров. Только имя модуля.

<Module cap_ipq>

# Модуль без параметров

</Module>

 

 

 

# Настройки модуля пингующего пользователей "mod_ping.so"

# Второй параметер - это имя модуля без mod_ в начале и .so в конце

<Module ping>

 

# Время, в секундах, между пингами одного и тогоже пользователя

# Значения: 10...3600

PingDelay = 15

 

</Module>

 

</Modules>

################################################################################

 

 

правила iptables

 

 

LAN_IP="192.168.0.254"

LAN_IP_RANGE="192.168.0.0/24"

LAN_IFACE="eth0"

LO_IFACE="lo"

LO_IP="127.0.0.1"

INET_IP="192.168.3.3"

INET_IFACE="eth1"

IPTABLES="/sbin/iptables"

$IPTABLES -F

$IPTABLES -t nat -F

$IPTABLES -t mangle -F

$IPTABLES -X

$IPTABLES -t nat -X

$IPTABLES -t mangle -X

$IPTABLES -F FORWARD

/sbin/depmod -a

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_tables

/sbin/modprobe iptable_filter

/sbin/modprobe iptable_mangle

/sbin/modprobe iptable_nat

/sbin/modprobe ipt_LOG

echo "1" > /proc/sys/net/ipv4/ip_forward

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

$IPTABLES -N bad_tcp_packets

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \

--log-prefix "New not syn:"

$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

$IPTABLES -N icmp_packets

$IPTABLES -N tcp_packets

$IPTABLES -N udpincoming_packets

$IPTABLES -N allowed

$IPTABLES -A allowed -p TCP --syn -j ACCEPT

$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A allowed -p TCP -j DROP

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1723 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 5555 -j allowed

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets

$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \

-j ACCEPT

$IPTABLES -I INPUT 2 -p tcp --dport 3128 -s 192.168.0.0/24 -j REJECT

$IPTABLES -I INPUT 2 -p tcp --dport 2121 -s 192.168.0.0/24 -j REJECT

$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \

--log-level DEBUG --log-prefix "IPT INPUT packet died: "

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT

$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \

--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "

$IPTABLES -P FORWARD DROP

$IPTABLES -A FORWARD -i ppp+ -s 192.168.10.0/24 -o eth1 -j REJECT

$IPTABLES -A FORWARD -i eth1 -o ppp+ -j QUEUE

$IPTABLES -A FORWARD -i ppp+ -o eth1 -j QUEUE

 

 

 

onconnect

#!/bin/bash

# Login

LOGIN=$1

 

#user IP

IP=$2

 

#cash

CASH=$3

 

#user ID

ID=$4

 

#Selected dirs to connect

DIRS=$4

 

 

#echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

iptables -I FORWARD 2 -i ppp+ -s $IP -o eth1 -j QUEUE

iptables -A INPUT -i ppp+ -s $IP -j QUEUE

iptables -t nat -A PREROUTING -s $IP/255.255.255.255 -d ! 192.168.10.0/255.255.255.0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.3.3:3128

 

 

OnDisconnect

 

#!/bin/bash

# Login

LOGIN=$1

 

#user IP

IP=$2

 

#cash

CASH=$3

 

#user ID

ID=$4

 

#Selected dirs to disconnect

DIRS=$4

 

#echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log

iptables -D FORWARD -i ppp+ -s $IP -o eth1 -j QUEUE

iptables -D INPUT -ppp+ -s $IP -j QUEUE

iptables -t nat -D PREROUTING -s $IP/255.255.255.255 -d ! 192.168.10.0/255.255.255.0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.3.3:3128

 

 

 

Очень прошу вашей помощи, потому как сам не знаю в какую сторону думать

Опубліковано:

2 ar2r

Это необходимое условие - все пропускать через прокс ?

Мы тоже как то делали похожим образом, помню там была проблема в том, что все что заворачивалось на прокс не проходило, или както криво проходило через правила форварда QUEUE, подробностей уже не помню.

Попробуй локализовать проблему, убрав прокс (сделав просто маскарад) и проверить подсчет трафика проходящего просто через форвард.

Опубліковано:

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

Опубліковано:

Мое..

привязываем к ip-up.local

 

#!/bin/bash

 

 

echo "start shaper"

IF=$1

RATE=16kbit

ADDR=$2

BUFF=1600

USER=$3

 

usr="stg_usr"

pass="pass"

db="stg_db"

sql="SELECT \`Tariff\` FROM \`users\` WHERE (\`LOGIN\`= \"$USER\")"

 

sql_res=`mysql -e "$sql" --user="$usr" --password="$pass" "$db" `

ultima_res=`echo $sql_res|sed -e "s/Tariff //"`

 

 

 

 

 

 

 

if [ "x$ultima_res" = "x1024" ]; then

RATE=1024kbit

BUFF=102400

 

elif [ "x$ultima_res" = "x64" ]; then

RATE=64kbit

BUFF=6400

elif [ "x$ultima_res" = "x128" ]; then

RATE=128kbit

BUFF=12800

elif [ "x$ultima_res" = "x256" ]; then

RATE=256kbit

BUFF=25600

elif [ "x$ultima_res" = "x96" ]; then

RATE=96kbit

BUFF=9600

 

fi

 

echo "start USER= $USER logdev = $IF , RATE = $RATE, tariff= $ultima_res" >>/var/log/shaper.log

 

#exit

 

tc qdisc del dev $IF root tbf rate 16kbit latency 20ms buffer 1600

 

tc qdisc add dev $IF root tbf rate $RATE latency 20ms buffer $BUFF

 

exit 0

Опубліковано:
С проксом попробуй дополнителоно считать все что приходит на PREROUTING

а есть вообще рабочие примеры вышеназванной связки плю squid?

Опубліковано:

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

Опубліковано:
Подскажите в чём может быть проблема....когда чел лазиет в инете то его тек трафик отображется в консольном конфигураторе то есть сколько он скачал и так далее но через веб интерфейс в историе этого не видно до тех пор пока не перезапустишь старгейзер. В кокую сторону грешить? Кстати началось это после того ка произошёл сбой с электричеством.

телепаты в отпуске

Опубліковано:
Подскажите в чём может быть проблема....когда чел лазиет в инете то его тек трафик отображется в консольном конфигураторе то есть сколько он скачал и так далее но через веб интерфейс в историе этого не видно до тех пор пока не перезапустишь старгейзер. В кокую сторону грешить?

Это не проблема. Трафик активной сессии показывает с опозданием. Потому как эти данные берутся из БД, запись куда производится через определенный в конфиге СТГ промежуток времени.

  • 3 weeks later...
Опубліковано:
файла mysql.h в сиcтеме вообще нет

в инклудах ищи его

Пробегал поиском по всей системе с шаблоном *mysql.h Поиск ничего не дал...

Ниак не мог построить mod_store_mysql. Ось Fedora 7. Помогите новичку

Опубліковано:

вопрос таков....при попытке законектится авторизатором к вышеназванной версии старгейзера в логах выдаёт следующее Script /etc/stargazer//OnConnect cannot be executed. File not found. Вопрос: откуда взялся второй слэш //OnConnect и как это исправить?

Опубліковано:
вопрос таков....при попытке законектится авторизатором к вышеназванной версии старгейзера в логах выдаёт следующее Script /etc/stargazer//OnConnect cannot be executed. File not found. Вопрос: откуда взялся второй слэш //OnConnect и как это исправить?

Двойной слеш ничего не меняет. Проверь наличие файла по указанному пути и права на него.

Опубліковано:

Теперь такая беда

2008-02-06 21:52:23 -- Stg v. Stg 2.403b

2008-02-06 21:52:23 -- Message queue created successfully. msgKey=5555 msgID=32768

2008-02-06 21:52:23 -- Timer thread started successfully.

2008-02-06 21:52:23 -- Storage plugin: mysql_store v.0.67 (Alf). Loading successfull.

2008-02-06 21:52:23 -- Users started successfully.

2008-02-06 21:52:23 -- Traffcounter started successfully.

2008-02-06 21:52:23 -- Error: Cannot open socket!

2008-02-06 21:52:23 -- +++++++++++++++++++++++++++++++++++++++++++++

2008-02-06 21:52:23 -- Module: 'Stg configurator v.0.05'. Stop successfull.

2008-02-06 21:52:23 -- Module: 'Pinger v.1.01'. Stop successfull.

2008-02-06 21:52:23 -- Module: 'Always Online authorizator v.1.0'. Stop successfull.

2008-02-06 21:52:23 -- Module: 'InetAccess authorizator v.1.1'. Stop successfull.

2008-02-06 21:52:23 -- Module: 'ipq_cap v.1.1'. Stop successfull.

2008-02-06 21:52:24 -- Traffcounter: Stop successfull.

2008-02-06 21:52:24 -- Users: Stop successfull.

2008-02-06 21:52:27 -- Queue removed successfully.

2008-02-06 21:52:27 -- StgTimer: Stop successfull.

2008-02-06 21:52:27 -- Stg stopped successfully.

2008-02-06 21:52:27 -- ---------------------------------------------

  • 2 weeks later...
Опубліковано:

Подскажите в чем грабли ? собираюне патченую версию - собирается нормально а когда патченую версию пытаюсь собрать или накладываю патч на ту версию что без патча собиралась - перестает собираться :)

ось Ubuntu 7.10, Gutsy Gibbon

 

root@Win98:~/stg-2.4-2007.01.20-13.47.20/projects/stargazer# ./build

#############################################################################

Building STG 2.4 for Linux

#############################################################################

Makeing stg_logger.lib

cp stg_logger.h ../../include/

cp libstg_logger.a ../../lib/

Makeing crypto.lib

cp ag_md5.h blowfish.h ../../include/

cp libcrypto.a ../../lib/

Makeing common.lib

g++ -g -Wall -I ../../include/ -I ./ -DLINUX -c common.cpp

ar rc libstg_common.a debug.o stg_error.o common.o

ranlib libstg_common.a

cp debug.h stg_error.h common.h ../../include/

cp libstg_common.a ../../lib/

Makeing script_executer.lib

g++ -g -Wall -I ../../include/ -I ./ -DLINUX -DSTG_TIME -c script_executer.cpp

ar rc libscript_executer.a script_executer.o

ranlib libscript_executer.a

cp script_executer.h ../../include/

cp libscript_executer.a ../../lib/

Makeing conffiles.lib

cp conffiles.h ../../include/

cp libconffiles.a ../../lib/

Makeing hostallow.lib

cp hostallow.h ../../include/

cp libhostallow.a ../../lib/

Makeing pinger.lib

cp pinger.h ../../include/

cp libstg_pinger.a ../../lib/

Makeing dotconfpp.lib

cp dotconfpp.h mempool.h ../../include/

cp libdotconfpp.a ../../lib/

deps:11: *** пропущен разделитель. Останов.

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

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

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

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

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

Вхід

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

Войти сейчас
  • Зараз на сторінці   0 користувачів

    • Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...