Перейти до

И Опять ШЕЙПЕР !


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

Шейпер работает, но (иногда) не удаляет правила, Господа подскажите что не так?

 

Вот кусок связанный с шейпингом в OnCOnnect

 

#Cut speed

tarif=`/etc/stargazer/tarif.php $2`

$IPTABLES -t filter -A FORWARD -s $IP -j QUEUE

$IPTABLES -t filter -A FORWARD -d $IP -j QUEUE

prioid="${ID}0"

 

if [ "$tarif" = "64" ]; then

speed=64

elif [ "$tarif" = "128" ]; then

speed=128

elif [ "$tarif" = "256" ]; then

speed=256

elif [ "$tarif" = "1024" ]; then

speed=1024

elif [ "$tarif" = "512" ]; then

speed=512

else

speed=0

fi

 

if [ $speed != 0 ]; then

echo $1 $2 $prioid $speed $tarif `date +"%Y/%m/%d-%T"` >> /var/log/speed

/sbin/tc class add dev $eth_local parent 1:1 classid 1:${prioid} htb rate $speed'kbit' burst 20k

/sbin/tc filter add dev $eth_local parent 1: protocol ip prio ${prioid} u32 match ip dst $IP flowid 1:${prioid}

#individual shaper

#tc class add dev eth3 parent 1: classid 1:$ID cbq rate "$speed"Kbit allot 1500 prio 3 bounded isolated

#tc filter add dev eth3 parent 1: protocol ip prio 4 handle 800::$ID u32 match ip dst $IP flowid 1:$ID

#tc filter add dev eth3 parent ffff: protocol ip prio 50 u32 match ip src $IP police rate "$speed"kbit burst 12k drop flowid :1

fi

echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/connect.log

 

 

 

 

 

 

 

 

А вот его противоположность в OnDisconnect

 

#disable cut spped

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

done

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

done

 

tc filter del dev eth3 pref ${prioid}

while [ $? -eq 0 ]

do

tc filter del dev eth3 pref ${prioid}

done

tc class del dev eth3 classid 1:${prioid}

while [ $? -eq 0 ]

do

tc class del dev eth3 classid 1:${prioid}

done

echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/disconnect.log

 

 

Иногда при опросе htb.init stats видно что юзер отключился, а правило осталось.... что убивает возможность сменить ему скорость.

Ссылка на сообщение
Поделиться на других сайтах
  trinux сказав:
Шейпер работает, но (иногда) не удаляет правила, Господа подскажите что не так?

 

Иногда при опросе htb.init stats видно что юзер отключился, а правило осталось.... что убивает возможность сменить ему скорость.

 

Дело в том, что когда юзер не отключился от СТГ, а просто перегрузил комп, СТГ продолжает считать его активным и соответственно ОнДисконнект не срабатывает.

Я лечил все это в скрипте ОнКоннект - перед настройкой шейпинга и файрвола сначала все вычищаю.

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

Ты предлагаешь ставить кусок дисконнекта , для отключения из скрипта дисконнекта, т.е. такой вариант.

 

OnConnect

 

#disable cut spped

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

done

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

done

 

tc filter del dev eth3 pref ${prioid}

while [ $? -eq 0 ]

do

tc filter del dev eth3 pref ${prioid}

done

tc class del dev eth3 classid 1:${prioid}

while [ $? -eq 0 ]

do

tc class del dev eth3 classid 1:${prioid}

done

 

#затем режем обратно

#Cut speed

tarif=`/etc/stargazer/tarif.php $2`

$IPTABLES -t filter -A FORWARD -s $IP -j QUEUE

$IPTABLES -t filter -A FORWARD -d $IP -j QUEUE

prioid="${ID}0"

 

if [ "$tarif" = "64" ]; then

speed=64

elif [ "$tarif" = "128" ]; then

speed=128

elif [ "$tarif" = "256" ]; then

speed=256

elif [ "$tarif" = "1024" ]; then

speed=1024

elif [ "$tarif" = "512" ]; then

speed=512

else

speed=0

fi

 

if [ $speed != 0 ]; then

echo $1 $2 $prioid $speed $tarif `date +"%Y/%m/%d-%T"` >> /var/log/speed

/sbin/tc class add dev $eth_local parent 1:1 classid 1:${prioid} htb rate $speed'kbit' burst 20k

/sbin/tc filter add dev $eth_local parent 1: protocol ip prio ${prioid} u32 match ip dst $IP flowid 1:${prioid}

#individual shaper

#tc class add dev eth3 parent 1: classid 1:$ID cbq rate "$speed"Kbit allot 1500 prio 3 bounded isolated

#tc filter add dev eth3 parent 1: protocol ip prio 4 handle 800::$ID u32 match ip dst $IP flowid 1:$ID

#tc filter add dev eth3 parent ffff: protocol ip prio 50 u32 match ip src $IP police rate "$speed"kbit burst 12k drop flowid :1

fi

echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/connect.log

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

OnConnect

 

#!/bin/bash

# Login

LOGIN=$1

#user IP

IP=$2

#cash

CASH=$3

#user ID

ID=$4

#Selected dirs to connect

DIRS=$5

IPTABLES="/usr/sbin/iptables"

verh="10.1.1.0/24"

eth_local="eth3"

eth_local2="eth0"

##Forward

$IPTABLES -D INPUT -p tcp --dport 3128 -j REJECT

while [ $? -eq 0 ]

do

$IPTABLES -D INPUT -p tcp --dport 3128 -j REJECT

done

 

$IPTABLES -A INPUT -p tcp -s $IP -d 10.1.1.1 --dport 3128 -j ACCEPT

$IPTABLES -A INPUT -p tcp --dport 3128 -j REJECT

$IPTABLES -t nat -A POSTROUTING -s $IP -j MASQUERADE

$IPTABLES -t nat -A POSTROUTING -d $IP -j MASQUERADE

$IPTABLES -t filter -A FORWARD -s $IP -j ACCEPT

$IPTABLES -t filter -A FORWARD -d $IP -j ACCEPT

#$IPTABLES -A FORWARD -s $IP -d 0/0 -j ACCEPT

##Open acces to squid port

$IPTABLES -A INPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

$IPTABLES -A OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

$IPTABLES -A FORWARD -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

$IPTABLES -D INPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D INPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

done

 

$IPTABLES -D OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

done

 

$IPTABLES -D FORWARD -s $IP -p tcp -m multiport --dport 3128 -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -s $IP -p tcp -m multiport --dport 3128 -j DROP

done

 

$IPTABLES -D FORWARD -i $eth_local -s $IP -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -i $eth_local -s $IP -j DROP

done

 

$IPTABLES -D FORWARD -o $eth_local -d $IP -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -o $eth_local -d $IP -j DROP

done

 

$IPTABLES -D FORWARD -i $eth_local2 -s $IP -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -i $eth_local2 -s $IP -j DROP

done

 

$IPTABLES -D FORWARD -o $eth_local2 -d $IP -j DROP

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -o $eth_local2 -d $IP -j DROP

done

#$IPTABLES -A INPUT -p tcp -s $IP -d 10.1.1.1 --dport 3128 -j ACCEPT

#$IPTABLES -A OUTPUT -p tcp -s $IP -d 10.1.1.1 --dport 3128 -j ACCEPT

###Redirect too squid

echo $IP >> /var/stargazer/squid/squid

/usr/local/squid/sbin/squid -k reconfigure

$IPTABLES -t nat -A PREROUTING -p tcp -s $IP -d 0/0 --dport 80 -j DNAT --to-destination 10.1.1.1:3128

#Cut speed

tarif=`/etc/stargazer/tarif.php $2`

$IPTABLES -t filter -A FORWARD -s $IP -j QUEUE

$IPTABLES -t filter -A FORWARD -d $IP -j QUEUE

prioid="${ID}0"

 

if [ "$tarif" = "64" ]; then

speed=64

elif [ "$tarif" = "128" ]; then

speed=128

elif [ "$tarif" = "256" ]; then

speed=256

elif [ "$tarif" = "1024" ]; then

speed=1024

elif [ "$tarif" = "512" ]; then

speed=512

else

speed=0

fi

 

if [ $speed != 0 ]; then

echo $1 $2 $prioid $speed $tarif `date +"%Y/%m/%d-%T"` >> /var/log/speed

/sbin/tc class add dev $eth_local parent 1:1 classid 1:${prioid} htb rate $speed'kbit' burst 20k

/sbin/tc filter add dev $eth_local parent 1: protocol ip prio ${prioid} u32 match ip dst $IP flowid 1:${prioid}

fi

echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/connect.log

 

 

 

 

OnDisconnect

 

#!/bin/bash

#On_USER_Disconnect

# Login

LOGIN=$1

#user IP

IP=$2

#cash

CASH=$3

#user ID

ID=$4

IPTABLES="/usr/sbin/iptables"

#Selected dirs to disconnect

DIRS=$4

eth_local="eth3"

eth_local2="eth0"

prioid="${ID}0"

#$IPTABLES -D INPUT -p tcp --dport 3128 -j REJECT

$IPTABLES -D INPUT -p tcp -s $IP -d 10.1.1.1 --dport 3128 -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -D INPUT -p tcp -s $IP -d 10.1.1.1 --dport 3128 -j ACCEPT

done

#$IPTABLES -A INPUT -p tcp --dport 3128 -j REJECT

$IPTABLES -A INPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

$IPTABLES -A OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j DROP

$IPTABLES -A FORWARD -s $IP -p tcp -m multiport --dport 3128 -j DROP

$IPTABLES -D INPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -D INPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

done

 

$IPTABLES -D OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -D OUTPUT -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

done

 

$IPTABLES -D FORWARD -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -D FORWARD -s $IP -p tcp -m multiport --dport 3128 -j ACCEPT

done

 

$IPTABLES -t nat -D POSTROUTING -s $IP -j MASQUERADE

while [ $? -eq 0 ]

do

$IPTABLES -t nat -D POSTROUTING -s $IP -j MASQUERADE

done

 

$IPTABLES -t nat -D POSTROUTING -d $IP -j MASQUERADE

while [ $? -eq 0 ]

do

$IPTABLES -t nat -D POSTROUTING -d $IP -j MASQUERADE

done

 

 

$IPTABLES -t filter -D FORWARD -s $IP -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -s $IP -j ACCEPT

done

 

 

$IPTABLES -t filter -D FORWARD -d $IP -j ACCEPT

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -d $IP -j ACCEPT

done

###disable redirect too squid

ON=`cat /var/stargazer/squid/squid | grep -v "$IP"`

echo "$ON" > /var/stargazer/squid/squid

/usr/local/squid/sbin/squid -k reconfigure

$IPTABLES -t nat -D PREROUTING -p tcp -s $IP -d 0/0 --dport 80 -j DNAT --to-destination 10.1.1.1:3128

###

$IPTABLES -I FORWARD -i $eth_local -s $IP -j DROP > /dev/null

$IPTABLES -I FORWARD -o $eth_local -d $IP -j DROP > /dev/null

$IPTABLES -I FORWARD -i $eth_local2 -s $IP -j DROP > /dev/null

$IPTABLES -I FORWARD -o $eth_local2 -d $IP -j DROP > /dev/null

#$IPTABLES -D FORWARD -i $eth_local -s $IP -j DROP > /dev/null

#$IPTABLES -D FORWARD -o $eth_local -d $IP -j DROP > /dev/null

#disable cut spped

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -s $IP -j QUEUE > /dev/null

done

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

while [ $? -eq 0 ]

do

$IPTABLES -t filter -D FORWARD -d $IP -j QUEUE > /dev/null

done

 

tc filter del dev eth3 pref ${prioid}

while [ $? -eq 0 ]

do

tc filter del dev eth3 pref ${prioid}

done

tc class del dev eth3 classid 1:${prioid}

while [ $? -eq 0 ]

do

tc class del dev eth3 classid 1:${prioid}

done

echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/disconnect.log

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

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

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

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

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

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

Вхід

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

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

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

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