Перейти до

поделитесь измененным скриптом шейпера


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

shaper.sh

#!/bin/bash

local_iface=eth0
inet_iface=eth1

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

iptables -t mangle --flush
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -X
iptables -t mangle -X

iptables-restore < ./ipz

#удаление и очистка
tc qdisc del dev $local_iface root 
tc qdisc del dev $local_iface ingress
tc qdisc del dev ifb0 root
tc qdisc del dev ifb0 ingress 


##########################  SHAPING ########################################
#Подгрузка модулей 
modprobe ifb
modprobe sch_htb
ifconfig ifb0 up

#creating root qdisc
#инициализация и заворот на ifb0
tc qdisc add dev $local_iface root handle 1: cbq avpkt 1000 bandwidth 100Mbit
tc qdisc add dev ifb0 root handle 5: htb 
tc qdisc add dev $local_iface ingress
tc filter add dev $local_iface parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0

tc class add dev eth0 parent 1: classid 1:6 cbq rate 100Mbit allot 1500 bounded isolated

 

 

 

OnConnect

#!/bin/bash

local_iface=eth0
inet_iface=eth1
# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

#Selected dirs to connect
#DIRS=$5

#=========  LIMIT =====================
usersconf="/var/stargazer/users/$LOGIN/conf"
usersstat="/var/stargazer/users/$LOGIN/stat"

anlim_key="anlim_"
logfile="/var/log/stargazer-test"

if [ ! -e "$usersconf" ]; then
  echo "ERROR: User file '$usersconf' not found" >> $logfile
  exit
fi

TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2`

# limit
  if [ "_${TariffName#$anlim_key}" != "_${TariffName}" ]; then # 
   limit_value=${TariffName:${#anlim_key}:4}	   # find key to Kbit
 fi
#=========  END of LIMIT ===============

##################### mark set from ip adresses###########################
mark=`echo $IP | cut -d"." -f4`
mark2=3"$mark"
echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark
echo "$mark2" > /var/stargazer/users/$LOGIN/shaper_mark2

###################  IPTABLES  #########################################
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 20000 -j DNAT --to $IP:20000  #for torrent
iptables -t mangle -I FORWARD  -d $IP   -j MARK --set-mark $mark
iptables -t mangle -I FORWARD  -s $IP   -j MARK --set-mark $mark2
iptables -t nat -A POSTROUTING -s $IP -d 0/0 -o $inet_iface -j SNAT --to-source xx.xx.xx.xx  (внеш IP)

#########################  SHAPER  #####################################

#режем внутрь при помощи CBQ и по меткам
tc class add dev $local_iface parent 1: classid 1:$mark cbq rate "$limit_value"Kbit allot 3500 prio 3 bounded isolated  
tc filter add dev $local_iface parent 1: protocol ip prio 2 handle $mark fw classid 1:$mark

#режем внеш HTB , но по IP 
tc class add dev ifb0 parent 5: classid 5:$mark htb rate "$limit_value"Kbit ceil "$limit_value"Kbit
tc filter add dev ifb0 parent 5: protocol ip prio 5 handle 800::$mark2 u32 match ip src $IP flowid 5:$mark

 

 

OnDisconnect

#!/bin/bash

local_iface=eth0
inet_iface=eth1
# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

#Selected dirs to connect
#DIRS=$5

#=========  LIMIT =====================
usersconf="/var/stargazer/users/$LOGIN/conf"
usersstat="/var/stargazer/users/$LOGIN/stat"
anlim_key="anlim_"
logfile="/var/log/stargazer-test"

if [ ! -e "$usersconf" ]; then
  echo "ERROR: User file '$usersconf' not found" >> $logfile
  exit
fi

TariffName=`cat "$usersconf" | grep "Tariff=" | cut -d"=" -f2`

# limit
  if [ "_${TariffName#$anlim_key}" != "_${TariffName}" ]; then # 
   limit_value=${TariffName:${#anlim_key}:4}	   # find key to Kbit
 fi
#=========  END of LIMIT ===============

##################### mark set from ip adresses######################

mark="/var/stargazer/users/$LOGIN/shaper_mark"
mark2="/var/stargazer/users/$LOGIN/shaper_mark2"

###################IPTABLES######################################
iptables -t nat -D PREROUTING -p tcp -m tcp --dport 20000 -j DNAT --to $IP:20000  #for torrent
while [ $? == 0 ]
do
iptables -t nat -D PREROUTING -p tcp -m tcp --dport 20000 -j DNAT --to $IP:20000  #for torrent
done

iptables -t mangle -D FORWARD  -d $IP   -j MARK --set-mark $mark
while [ $? == 0 ]
do
iptables -t mangle -D FORWARD  -d $IP   -j MARK --set-mark $mark
done

iptables -t mangle -D FORWARD  -s $IP   -j MARK --set-mark $mark2
while [ $? == 0 ]
do
iptables -t mangle -D FORWARD  -s $IP   -j MARK --set-mark $mark2
done

iptables -t nat -D POSTROUTING -s $IP -d 0/0 -o $inet_iface -j SNAT --to-source xx.xx.xx (внеш IP)
while [ $? == 0 ]
do
iptables -t nat -D POSTROUTING -s $IP -d 0/0 -o $inet_iface -j SNAT --to-source xx.xx.xx (внеш IP)
done



##################SHAPER#########################################

#IN
tc filter del dev $local_iface parent 1: protocol ip prio 2 handle $mark fw classid 1:$mark
tc class del dev $local_iface parent 1: classid 1:$mark cbq rate "$limit_value"Kbit allot 3500 prio 3 bounded isolated


#OUT
tc filter del dev ifb0 parent 5: protocol ip prio 5 handle 800::$mark2 u32 match ip src $IP flowid 5:$mark
tc class del dev ifb0 parent 5: classid 5:$mark htb rate "$limit_value"Kbit ceil "$limit_value"Kbit

 

 

К сожалению так и не смог заставить работать метки на исходящий канал ;)

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

скажите, у меня довольно старая версия СТГ, 2.0.16.7.6 Releasw Candidate-3

 

подойдет ли этот скрипт шейпера для меня или нет?

 

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

Ссылка на сообщение
Поделиться на других сайтах
скажите, у меня довольно старая версия СТГ, 2.0.16.7.6 Releasw Candidate-3

 

подойдет ли этот скрипт шейпера для меня или нет?

 

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

у тебя внешние скрипты, они к СТГ не имеют отношения.

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

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

Даже и не знаю , что ответить.

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

# Login
LOGIN=$1

#user IP
IP=$2

#cash
CASH=$3

#user ID
ID=$4

#Selected dirs to connect
#DIRS=$5

Описание внутренних переменных.

 

Читаем внимательно доки по СТГ и читаем описание утилиты tc из пакета iproute2.

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

ребята, я в этом не шарю. можете сказать, как мне урезать всех пользователей СТГ скорость до 128?

 

дайте кто-нибудь аську или джаббер или скайп

 

срочно выручите, кто-нибудь!!!

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

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

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

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

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

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

Вхід

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

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

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

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