InterPol 0 Опубликовано: 2006-10-03 21:35:40 Share Опубликовано: 2006-10-03 21:35:40 Люди добрые! Я вроде не полный дурак, так чуть-чуть... :loop: Ситуация в следующем. Поставил STG 2.4 и нарвался на такие грабли. Пока пользователи ходят просто по нету, ася и тд., все нормально. Как только что-то качают начинаються следующие чудеса: Чем быстрее скорость и больше размер файла тем больше СТГ врет. Пример: Файл 2Мб (скорость 80к/с) = 4Мб. Файл 5Мб (скорость 170к/с) = 11.5Мб. Файл 27Мб (скорость 110к/с) = 62Мб. И деньги ЖРЕТ! Переустановил СТГ (самый последний). EXPAT. НЕ ФИГА!!! Мой конфиг: AMD 2000+ / 512 / 3 net card + ppp0 / SLES 9 1 карта - локаль (192.168.128.0/17) 2 карта - соседняя сеть (192.168.0.0/24) 3 карта - ADSL с NAT и алиасы для серверов (192.168.100.0/24) ppp0 - медленный анлим Адреса динамические. Конфиг файервола #!/bin/bash # Path IPT=/usr/sbin/iptables IP=/sbin/ip # Admin IP INTERPOL_IP="192.168.128.1" MAX_IP="192.168.128.2" # World net IP SIRIUS_IP="213.179.251.48" ADSL_IP="192.168.100.254" # Nets SKYNET_NET="192.168.0.0/24" SERVER_NET="192.168.100.0/24" CLIENT_NET="192.168.128.0/17" # Router IP SKYNET_IP="192.168.0.254" SERVER_IP="192.168.100.1" CLIENT_IP="192.168.255.254" # Interfaces SERVER_IFACE="eth0" CLIENT_IFACE="eth1" SKYNET_IFACE="eth2" SIRIUS_IFACE="ppp0" #Ports STG USER_PORT="5555" ADMIN_PORT="7777" # Services WWW="192.168.100.4" # Enable forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # Clear farewall $IPT -F $IPT -t nat -F $IPT -t mangle -F $IPT -X $IPT -t nat -X $IPT -t mangle -X # Default police $IPT -t filter -P INPUT DROP $IPT -t filter -P FORWARD DROP $IPT -t filter -P OUTPUT DROP # Enable ping $IPT -t filter -A INPUT -p icmp -j ACCEPT $IPT -t filter -A FORWARD -p icmp -j ACCEPT $IPT -t filter -A OUTPUT -p icmp -j ACCEPT # Enable full on local interface $IPT -t filter -A INPUT -s 127.0.0.1 -j ACCEPT $IPT -t filter -A INPUT -d 127.0.0.1 -j ACCEPT $IPT -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT $IPT -t filter -A OUTPUT -d 127.0.0.1 -j ACCEPT # Enable DNS $IPT -t filter -A INPUT -p udp --sport 53 -j ACCEPT $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT $IPT -t filter -A FORWARD -p udp --sport 53 -j ACCEPT $IPT -t filter -A FORWARD -p udp --dport 53 -j ACCEPT $IPT -t filter -A OUTPUT -p udp --sport 53 -j ACCEPT $IPT -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT $IPT -t filter -A INPUT -p tcp --sport 53 -j ACCEPT $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT $IPT -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT $IPT -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --sport 53 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT # Enable SSH $IPT -t filter -A INPUT -p tcp -s $INTERPOL_IP -d $SERVER_IP --dport 22 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp -d $INTERPOL_IP -s $SERVER_IP --sport 22 -j ACCEPT $IPT -t filter -A INPUT -p tcp -s $MAX_IP -d $SERVER_IP --dport 22 -j ACCEPT $IPT -t filter -A OUTPUT -p tcp -d $MAX_IP -s $SERVER_IP --sport 22 -j ACCEPT # Enable STG Access $IPT -t filter -A INPUT -p tcp -s $INTERPOL_IP --dport $ADMIN_PORT -j ACCEPT $IPT -t filter -A OUTPUT -p tcp -d $INTERPOL_IP --sport $ADMIN_PORT -j ACCEPT $IPT -t filter -A INPUT -p tcp -s $MAX_IP --dport $ADMIN_PORT -j ACCEPT $IPT -t filter -A OUTPUT -p tcp -d $MAX_IP --sport $ADMIN_PORT -j ACCEPT $IPT -t filter -A INPUT -p udp -s $CLIENT_NET --dport $USER_PORT -j ACCEPT $IPT -t filter -A OUTPUT -p udp -d $CLIENT_NET --sport $USER_PORT -j ACCEPT # Enable DHCP $IPT -t filter -A INPUT -p udp -s $CLIENT_NET --dport 67 -j ACCEPT $IPT -t filter -A OUTPUT -p udp -d $CLIENT_NET --sport 67 -j ACCEPT # Enable SERVER to world # Enable NAT $IPT -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source $SIRIUS_IP # Enable local site for nologin $IPT -t filter -A INPUT -p tcp --dport 80 -s $CLIENT_NET -j ACCEPT $IPT -t filter -A OUTPUT -p tcp --sport 80 -d $CLIENT_NET -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 80 -s $CLIENT_NET -j DNAT --to-destination $WWW # Enable ADSL route for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i done $IP rule del fwmark 1 table adsl $IP rule add fwmark 1 table adsl $IP route del default via $ADSL_IP dev $SERVER_IFACE table adsl $IP route add default via $ADSL_IP dev $SERVER_IFACE table adsl $IP route flush cache Конфиг СТГ ################################################################################ # Файл настроек сервера stargazer # ################################################################################ # Имя лог-файла куда пушутся события LogFile = /var/log/stargazer.log # Имя файла в котором определяются правила подсчета трафика Rules = /server/stargazer/etc/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 # День сброса данных о трафике за месяц и день перехода пользователей на новые тарифы # Значения: 0...31. 0 - Последний день месяца DayResetTraff = 1 # "Размазанное" снятие абонплаты. Снятие АП не раз в месяц, а каждый # день 1/30 или 1/31 части АП # Значения: yes, no SpreadFee = yes # Данная опция определяет может ли пользователь получить доступ в интерент # если у него на счету нет денег, но остался предоплаченный трафик # Значения: yes, no FreeMbAllowInet = no # Названия направлений. Направления без названий не будут отображаться в # авторизаторе и конфигураторе. Названия состоящие из нескольких слов должны # быть взяты в кавычки <DirNames> DirName0 = "File Server" DirName1 = "Local Net" DirName2 = "Mail" DirName3 = "SkyNet" DirName4 = "World" 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 = /server/stargazer/lib ################################################################################ # Store module # Настройки плагина работающего с БД сервера # Второй параметер - это имя модуля без mod_ в начале и .so в конце # Т.е. полное имя модуля mod_store_files.so <StoreModule store_files> # Рабочая директория сервера, тут содержатся данные о тарифах, пользователях, # администраторах и т.д. WorkDir = /server/stargazer/var # Владелец, группа и права доступа на файлы статистики (stat) пользователя ConfOwner = root ConfGroup = root ConfMode = 600 # Владелец, группа и права доступа на файлы конфигурации (conf) пользователя StatOwner = root StatGroup = root StatMode = 640 # Владелец, группа и права доступа на лог-файлы (log) пользователя UserLogOwner = root UserLogGroup = root UserLogMode = 640 </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 = 7777 </Module> # Модуль захвата трафика "mod_cap_ether.so" # Второй параметер - это имя модуля без mod_ в начале и .so в конце # Без параметров. Только имя модуля. <Module cap_ether> # Модуль без параметров </Module> # Настройки модуля пингующего пользователей "mod_ping.so" # Второй параметер - это имя модуля без mod_ в начале и .so в конце <Module ping> # Время, в секундах, между пингами одного и тогоже пользователя # Значения: 10...3600 PingDelay = 15 </Module> </Modules> ################################################################################ Rules # Ping ICMP 0.0.0.0/0 NULL # File server ALL 192.168.100.6 DIR0 # Local net ALL 192.168.128.0/17 DIR1 ALL 192.168.100.1 DIR1 ALL 192.168.100.4 DIR1 ALL 192.168.100.5 DIR1 ALL 192.168.100.6 DIR1 ALL 192.168.100.7 DIR1 ALL 192.168.100.254 DIR1 # Mail ALL 192.168.100.3 DIR2 ALL 192.168.100.3 DIR2 # Resources SkyNet ALL 192.168.0.0/24 DIR3 ALL 192.168.1.0/24 DIR3 # DNS ALL 192.168.100.2 DIR4 # World ALL 0.0.0.0/0 DIR4 OnConnect #!/bin/bash # Path IPT=/usr/sbin/iptables ADMINS=/server/stargazer/var/admins # User IF IF="eth1" # Login LOGIN=$1 # User IP IP=$2 # Cash CASH=$3 # User ID ID=$4 # For all users ########################################################################################################### # All traffic $IPT -t filter -A INPUT -s $IP -j ACCEPT $IPT -t filter -A FORWARD -s $IP -j ACCEPT $IPT -t filter -A FORWARD -d $IP -j ACCEPT $IPT -t filter -A OUTPUT -d $IP -j ACCEPT # Disable DNAT $IPT -t nat -I PREROUTING 1 -i $IF -s $IP -j ACCEPT # For no admins ########################################################################################################### for a in $ADMINS/* do NAME=`basename $a .adm` if [ $LOGIN != $NAME ]; then # WWW $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 80 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 8080 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 443 -j MARK --set-mark 1 # FTP #$IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 20 -j MARK --set-mark 1 #$IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 21 -j MARK --set-mark 1 # Mail $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 25 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 110 -j MARK --set-mark 1 # For L2_C4 TheAbuss #$IPT -t mangle -A PREROUTING -i $IF -s $IP -d 85.21.79.41 -j MARK --set-mark 1 break else break fi done ########################################################################################################### echo "C `date +%Y.%m.%d-%H.%M.%S` IP:$IP Cash:$CASH" >> /server/stargazer/var/users/$LOGIN/connect.log OnDisconnect #!/bin/bash # Path IPT=/usr/sbin/iptables ADMINS=/server/stargazer/var/admins # User IF IF="eth1" # Login LOGIN=$1 # User IP IP=$2 # Cash CASH=$3 # User ID ID=$4 # For all users ########################################################################################################### # All traffic $IPT -t filter -A INPUT -s $IP -j ACCEPT $IPT -t filter -A FORWARD -s $IP -j ACCEPT $IPT -t filter -A FORWARD -d $IP -j ACCEPT $IPT -t filter -A OUTPUT -d $IP -j ACCEPT # Disable DNAT $IPT -t nat -I PREROUTING 1 -i $IF -s $IP -j ACCEPT # For no admins ########################################################################################################### for a in $ADMINS/* do NAME=`basename $a .adm` if [ $LOGIN != $NAME ]; then # WWW $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 80 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 8080 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 443 -j MARK --set-mark 1 # FTP #$IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 20 -j MARK --set-mark 1 #$IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 21 -j MARK --set-mark 1 # Mail $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 25 -j MARK --set-mark 1 $IPT -t mangle -A PREROUTING -i $IF -s $IP -p tcp --dport 110 -j MARK --set-mark 1 # For L2_C4 TheAbuss #$IPT -t mangle -A PREROUTING -i $IF -s $IP -d 85.21.79.41 -j MARK --set-mark 1 break else break fi done ########################################################################################################### echo "C `date +%Y.%m.%d-%H.%M.%S` IP:$IP Cash:$CASH" >> /server/stargazer/var/users/$LOGIN/connect.log PS. Просидел пол дня читая всю ветку форума, похожего не нашел! Если кто наступал на грабли подскажите. Может попробовать на QUEUE перейти. Говорят чеснее считает. Правда пока не знаю как ее настроить. ЗАРАНЕЕ ВСЕМ СЕНК!!! Ссылка на сообщение Поделиться на других сайтах
uzver 0 Опубліковано: 2006-10-04 00:57:00 Share Опубліковано: 2006-10-04 00:57:00 мона было все это не писать ключевое это: <Module cap_ether> # Модуль без параметров </Module> правь на: <Module cap_ipq> # Модуль без параметров </Module> потом перед запуском делаешь modprobe ip_queue(вроде так) и все трафик нужный для подсчета заворачиваешь в очередь QUEUE потипу iptables -I FOWARD -s $ip -j QUEUE iptables -I FOWARD -d $ip -j QUEUE а вообще есть такое, стандартный коллектор и счетчик как то криво считают траф, я сначало тестил паралельно СТГ и UTM3, врет хорошо... а вот когда на очереди заворачиваешь, считает вроде четко. пс маркировки админов для шейпера делаешь?шейпер на чем?HTB? да и вот еще если модуля ip_queue не будет, не торопись пересобирать ядро, во всех последних шапкоподобных этот модуль идет в поставке стандартного ядра.А еще может быть оно у тебя собрано прям в ядро. У меня были обе ситуации, первая на центосе а вторая на генту. Ссылка на сообщение Поделиться на других сайтах
InterPol 0 Опубліковано: 2006-10-04 01:26:28 Автор Share Опубліковано: 2006-10-04 01:26:28 Спасибо попробую. Маркировка не для шейпера. По умолчанию деф.роут на медленный анлим. А по маркеровке меняю роут трафика от юзверей на АДСЛ. Ссылка на сообщение Поделиться на других сайтах
InterPol 0 Опубліковано: 2006-10-04 04:24:24 Автор Share Опубліковано: 2006-10-04 04:24:24 Вроде как помогло! Но все таки интерестно, ПОЧЕМУ! :loop: Ссылка на сообщение Поделиться на других сайтах
uzver 0 Опубліковано: 2006-10-04 09:41:50 Share Опубліковано: 2006-10-04 09:41:50 скорей всего кривонаписаный неоткалиброваный коллектор, либо то что анализирует траф с устройств. да и вообще имхо нужно вообще забить самим считать траф с устройств, достаточно его снимать с уже готовых счетчиков, там уже не надо парится так считают они 100% точно вон у Max'a вроде как модуль коллектора под нетфло есть, ваще тема, мона трафик прям с циски заворачивать =) Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-10-04 10:32:17 Share Опубліковано: 2006-10-04 10:32:17 вон у Max'a вроде как модуль коллектора под нетфло есть, ваще тема, мона трафик прям с циски заворачивать =) да под цыски и писали, плюс есть куча nix* коллекторов которые позволяют с PC-роутеров сливать стату, тем самым централизуя базу юзеров, а то приходилось держать десять биллингов, в десяти местах. Скоро кстати будем VPN и Mysql модули писать. Ссылка на сообщение Поделиться на других сайтах
uzver 0 Опубліковано: 2006-10-04 11:54:36 Share Опубліковано: 2006-10-04 11:54:36 меня интересует как вы сформировали базу? просто сам тоже хочу переписать готовый модуль на мускул тока пока с базой не определился. Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-10-04 12:26:52 Share Опубліковано: 2006-10-04 12:26:52 меня интересует как вы сформировали базу? Ключевое слово: будем писать примерно с 1 ноября. просто сам тоже хочу переписать готовый модуль на мускул тока пока с базой не определился. Скорее всего за основу ляжет модуль firebert, он почти готов помоему. ВПН будем писать с 1 декабря. Ссылка на сообщение Поделиться на других сайтах
uzver 0 Опубліковано: 2006-10-04 13:21:53 Share Опубліковано: 2006-10-04 13:21:53 базу уже щас можно написать, чем вас не устраивает написаный модуль mod_store_files? там все понятно, я думаю его просто заменить своим. Основная проблема для меня щас это структура бд еще бы хоть краешком представлять как будет у разработчиков чтобы потом не так болезнено было переходить на их вариант(если конечно понадобится). Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2006-10-04 16:18:12 Share Опубліковано: 2006-10-04 16:18:12 базу уже щас можно написать, чем вас не устраивает написаный модуль mod_store_files? пишу то код не я, а программер, спрошу у него... Ссылка на сообщение Поделиться на других сайтах
uzver 0 Опубліковано: 2006-10-05 00:52:45 Share Опубліковано: 2006-10-05 00:52:45 меня смущает одно, получается для каждой процедуры-фунукция я должен явно или неявно вызывать функцию коннекта к базе, и соответсвенно в конце фунцию закрытия по хорошему.... это наверно, будет как то притормаживать работу СТГ Ссылка на сообщение Поделиться на других сайтах
DaGuTa 0 Опубліковано: 2006-12-05 03:29:16 Share Опубліковано: 2006-12-05 03:29:16 меня смущает одно, получается для каждой процедуры-фунукция я должен явно или неявно вызывать функцию коннекта к базе, и соответсвенно в конце фунцию закрытия по хорошему.... это наверно, будет как то притормаживать работу СТГ Меня тоже смущает этот момент. Можно конечно сделать глобальный указатель на открытую базу, но не красиво это. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас