witam
proszę o sprawdzenie mojego configa od p2p z imq. Ograniczam nim p2p przez ipp2p i l7. Łącze 2Mb/s i 256kb/s upload na ppp0
#!/bin/bash
TC="/sbin/tc"
i="/usr/sbin/iptables"
if=/sbin/ifconfig
#20306-MW-
case "$1" in
start)
#-------------------------------------
# sciezki do plikow
HOSTS=/home/P2P/hosts.p2p
TMP=/home/P2P/hosts.tmp
#interfejs do internetu
INET=ppp0
#-------------------------------------
echo ""
echo " -----------ON---------- "
echo ""
# -- podnosi interfejsy IMQ --------------
/sbin/modprobe imq numdevs=6 &>/dev/null
$if imq0 up &>/dev/null
$if imq1 up &>/dev/null
$if imq2 up &>/dev/null
$if imq3 up &>/dev/null
$if imq4 up &>/dev/null
$if imq5 up &>/dev/null
#------------------------------------------------------------------------------------------------
# restartuj skrypt cronem o 1,2,7,9,16,22
# 00 1,2,7,9,16,22 * * * /home/P2P/p2p restart
# ustawienie przepustowosci do internetu w KB/s (Kilo Bajty / sekunda)
# imq2
# staly przydzial dla uploadu w/g uslug
U1=5 #ack,icmp,dns
U2=5 #gry,tos
U3=3 #skype na jakims porcie (55555)
U4=3 #ssh
U5=3 #ftp
U6=1 #pop3,nntp,smtp
U7=1 #ipp2p
U8=4 #reszta
UL=$[U1+U2+U3+U4+U5+U6+U7+U8]
# maxymalne przydzialy dla uploadu
UL1=$[UL-5] #ack,icmp,dns
UL2=$[UL-5] #gry,tos
UL3=$[UL-2] #skype na jakims porcie (55555)
UL4=$[UL-2] #ssh,
UL5=2 #ftp
UL6=7 #pop3,nntp,smtp
#ULR - w/g godzin ponizej
godz=`date +%H%M`
#--- wartosci wpisz w KB (Kilo Bajtach) ---
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "0100" -a $godz -lt "0200" ];then
ULR=1
pora=noc
fi
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "0200" -a $godz -lt "0700" ];then
ULR=1
pora=noc2
fi
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "0700" -a $godz -lt "0900" ];then
ULR=1
pora=ranek
fi
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "0900" -a $godz -lt "1600" ];then
ULR=1
pora=dzien
fi
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "1600" -a $godz -lt "2200" ];then
ULR=1
pora=wieczor
fi
#----Ograniczenie pasma dla p2p w godzinach---------
if [ $godz -ge "2200" -o $godz -lt "0100" ];then
ULR=1
pora=wieczor2
fi
#------------------------------------------------------------------------------------------------
echo " "
echo " klasa11 "$U1"KB/s max-"$UL1"KB/s - ACK,icmp,dns"
echo " klasa12 "$U2"KB/s max-"$UL2"KB/s - gry, TOS"
echo " klasa13 "$U3"KB/s max-"$UL3"KB/s - skype na wybranym porcie"
echo " klasa14 "$U4"KB/s max-"$UL4"KB/s - 443,ssh"
echo " klasa15 "$U5"KB/s max- "$UL5"KB/s - ftp"
echo " klasa16 "$U6"KB/s max- "$UL6"KB/s - pop3,nntp,smtp"
echo " klasa17 "$U7"KB/s max- "$ULR"KB/s - w/g ipp2p"
echo " klasa18 "$U8"KB/s max- "$ULR"KB/s - RESZTA niechcianego ruchu"
echo "--------------------------"
echo " imq2 UL-"$UL""KB/s
echo "--------------------------"
########################################
# ---- tworzy lancuch ------------
$i -t mangle -N znaczniki
#----- Odowolanie do lancucha-----
$i -t mangle -I PREROUTING -j znaczniki
########################################
# ---- tworzy lancuch ------------
$i -t mangle -N cel
#----- Odowolanie do lancucha-----
$i -t mangle -A POSTROUTING -j cel
#######################################
# markowanie okreslonych pakietow
$i -t mangle -A znaczniki -j CONNMARK --restore-mark
# akceptuje pakiety juz zamarkowane (omija niceshapera i nie pokazuje uploadu)
#$i -t mangle -A znaczniki -m mark ! --mark 0x0 -j ACCEPT
####################################################################################################
# kasuje plik tymczasowy
rm $TMP &>/dev/null
# wycina komentarze (zaczynajace sie od #) z pliku hosts
sed -e '/^#/d' $HOSTS > $TMP
# petla odczytujaca IP hosta z pliku hosts.tmp
for IP in `cat $TMP`;do
#--------!80
# markowanie okreslonych pakietow od uzytkownika (polaczeniowe)
$i -t mangle -A znaczniki -p tcp -s $IP --dport ! 80 -j MARK --set-mark 0x10004
$i -t mangle -A znaczniki -p udp -s $IP --dport ! 80 -j MARK --set-mark 0x10004
echo $IP
done
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x10004 -j CONNMARK --save-mark
# kierowanie pakietow od uzytkownika, do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x10004 -j IMQ --todev 2
# kasuje plik tymczasowy
rm $TMP &>/dev/null
#--------icmp dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -p icmp -j MARK --set-mark 0x1
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x1 -j CONNMARK --save-mark
# kierowanie pakietow do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x1 -j IMQ --todev 2
#--------25 dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -p tcp --dport 25 -j MARK --set-mark 0x10025
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x10025 -j CONNMARK --save-mark
# kierowanie pakietow do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x10025 -j IMQ --todev 2
#--------110 dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -p tcp --dport 110 -j MARK --set-mark 0x10110
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x10110 -j CONNMARK --save-mark
# kierowanie pakietow do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x10110 -j IMQ --todev 2
#--------119 dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -p tcp --dport 119 -j MARK --set-mark 0x10119
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x10119 -j CONNMARK --save-mark
# kierowanie pakietow do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x10119 -j IMQ --todev 2
#--------7171 dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -p tcp --dport 7171 -j MARK --set-mark 0x7171
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x7171 -j CONNMARK --save-mark
# kierowanie pakietow do imq
$i -t mangle -A cel -o $INET -m mark --mark 0x7171 -j IMQ --todev 4
#--------ipp2p dla celej sieci
# markowanie okreslonych pakietow (polaczeniowe)
$i -t mangle -A znaczniki -m ipp2p --ipp2p -j MARK --set-mark 0x10999
# zapisanie mark dla reszty pakietow
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto fasttrack -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto ares -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto bittorrent -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto edonkey -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto applejuice -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto directconnect -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto gnutella -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto openft -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto mute -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
$i -t mangle -A znaczniki -m layer7 --l7proto imesh -j MARK --set-mark 0x10999
$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
#$i -t mangle -A PREROUTING -p tcp --dport 2001:65535 -s 192.168.0.0/23 -j MARK --set-mark 0x10999
#$i -t mangle -A znaczniki -m mark --mark 0x10999 -j CONNMARK --save-mark
##################kieruje p2p do imq 2
$i -t mangle -A cel -o $INET -m mark --mark 0x10999 -j IMQ --todev 2
#######################################
# Tworzymy glowna kolejke na interfejsie
$TC qdisc add dev imq2 root handle 10:0 htb r2q 1 default 18
# Glowna klasa
$TC class add dev imq2 parent 10:0 classid 10:1 htb rate $((UL*8))kbit ceil $((UL*8))kbit quantum 1500
# podklasy
$TC class add dev imq2 parent 10:1 classid 10:11 htb rate $((U1*8))kbit ceil $((UL1*8))kbit quantum 1500 burst 0k cburst 0k prio 0
$TC class add dev imq2 parent 10:1 classid 10:12 htb rate $((U2*8))kbit ceil $((UL2*8))kbit quantum 1500 burst 0k cburst 0k prio 1
$TC class add dev imq2 parent 10:1 classid 10:13 htb rate $((U3*8))kbit ceil $((UL3*8))kbit quantum 1500 burst 0k cburst 0k prio 2
$TC class add dev imq2 parent 10:1 classid 10:14 htb rate $((U4*8))kbit ceil $((UL4*8))kbit quantum 1500 burst 0k cburst 0k prio 3
$TC class add dev imq2 parent 10:1 classid 10:15 htb rate $((U5*8))kbit ceil $((UL5*8))kbit quantum 1500 burst 0k cburst 0k prio 4
$TC class add dev imq2 parent 10:1 classid 10:16 htb rate $((U6*8))kbit ceil $((UL6*8))kbit quantum 1500 burst 0k cburst 0k prio 5
$TC class add dev imq2 parent 10:1 classid 10:17 htb rate $((U7*8))kbit ceil $((ULR*8))kbit quantum 1500 burst 0k cburst 0k prio 6
$TC class add dev imq2 parent 10:1 classid 10:18 htb rate $((U8*8))kbit ceil $((ULR*8))kbit quantum 1500 burst 0k cburst 0k prio 7
# sprawiedliwy podzial
$TC qdisc add dev imq2 parent 10:11 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:12 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:13 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:14 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:15 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:16 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:17 esfq perturb 20 quantum 1500
$TC qdisc add dev imq2 parent 10:18 esfq perturb 20 quantum 1500
# filtry
#--11
$TC filter add dev imq2 protocol ip prio 0 parent 10:0 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 \
match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 10:11 # ACK
$TC filter add dev imq2 protocol ip prio 1 parent 10:0 u32 match ip protocol 1 0xff flowid 10:11 #ICMP
$TC filter add dev imq2 protocol ip prio 2 parent 10:0 u32 match ip dport 53 0xffff flowid 10:11 #DNS
#--12
$TC filter add dev imq2 protocol ip prio 0 parent 10:0 u32 match ip dport 27014 0xffff flowid 10:12 #CS
$TC filter add dev imq2 protocol ip prio 0 parent 10:0 u32 match ip dport 27015 0xffff flowid 10:12 #CS
$TC filter add dev imq2 protocol ip prio 0 parent 10:0 u32 match ip dport 27016 0xffff flowid 10:12 #CS
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 27038 0xffff flowid 10:12 #CS
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 27039 0xffff flowid 10:12 #CS
# -- tu mozna dopisac jeszcze jakies porty gier internetowych
$TC filter add dev imq2 protocol ip prio 1 parent 10:0 u32 match ip tos 0x10 0xff flowid 10:12 #TOS
#--13
$TC filter add dev imq2 protocol ip prio 0 parent 10:0 u32 match ip sport 55555 0xffff flowid 10:13 #skype
#--14
$TC filter add dev imq2 protocol ip prio 6 parent 10:0 u32 match ip dport 443 0xffff flowid 10:14 #
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 999 0xffff flowid 10:14 #SSH
#--15
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 20 0xffff flowid 10:15 #ftp
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 21 0xffff flowid 10:15 #ftp
#--16
$TC filter add dev imq2 protocol ip prio 5 parent 10:0 u32 match ip dport 110 0xffff flowid 10:16 #pop3
$TC filter add dev imq2 protocol ip prio 6 parent 10:0 u32 match ip dport 119 0xffff flowid 10:16 #nntp
$TC filter add dev imq2 protocol ip prio 7 parent 10:0 u32 match ip dport 25 0xffff flowid 10:16 #smtp
#--17
$TC filter add dev imq2 protocol ip parent 10:0 handle 0x10999 fw classid 10:17 #ipp2p w/g znacznika
#--18
# ------- RESZTA --klasa 10:18
#---
echo ""
#-----------klasy na imq2
tc class show dev imq2 | grep root
tc class show dev imq2 | grep -v root | sort | nl
#--------------------------------------------------------
# ominiecie przycinania squida przez niceshapera
#--------------------------------------------------------
# przepustowosc interfejsu dla squida w KB (kilo bajtach)
SR=900
# port na ktorym pracuje squid
PORT=3123
echo ""
echo "-------------------------------------------------------------"
echo " przepustowosc interfejsu squida "$SR" KB/s"
echo "-------------------------------------------------------------"
#---markowanie squida----z cache
$i -A cel -t mangle -p tcp -m string --string 'X-Cache: HIT ' -j CONNMARK --set-mark 0x8889
$i -A cel -t mangle -p tcp --sport $PORT -j CONNMARK --restore-mark
# kierowanie pakietow do imq
$i -A cel -t mangle -p tcp -m mark --mark 0x8889 -j IMQ --todev 5
#--------------------------------------------------------
# Tworzymy glowna kolejke na interfejsie
$TC qdisc add dev imq5 root handle 20:0 htb r2q 1 default 11
# Glowna klasa
$TC class add dev imq5 parent 20:0 classid 20:1 htb rate $((SR*8))kbit ceil $((SR*8))kbit quantum 1500
# podklasy
$TC class add dev imq5 parent 20:1 classid 20:11 htb rate $((SR*8))kbit ceil $((SR*8))kbit quantum 1500 burst 0k cburst 0k prio 0
# sprawiedliwy podzial
$TC qdisc add dev imq5 parent 20:11 esfq perturb 20 quantum 1500
#-----------klasy na imq3
tc class show dev imq5 | grep root
tc class show dev imq5 | grep -v root | sort | nl
#-------------------------
echo "niceshaper - start"
/usr/bin/niceshaper start
#-------------------------
;;
stop)
clear
echo ""
echo " ----------OFF---------- "
echo ""
#-------------------------
/usr/bin/niceshaper stop
killall niceshaper &>/dev/null
#-------------------------
#---kasuje odwolania
$i -t mangle -D PREROUTING -j znaczniki
#---czysci bałwan jestem w lancuchu
$i -t mangle -F znaczniki
#---kasuje lancuch
$i -t mangle -X znaczniki
#---kasuje odwolania
$i -t mangle -D POSTROUTING -j cel
#---czysci bałwan jestem w lancuchu
$i -t mangle -F cel
#---kasuje lancuch
$i -t mangle -X cel
# usowa bałwan jestem
$TC qdisc del dev imq2 root
$TC qdisc del dev imq5 root
#-- wylacza IMQ --------------------
$if imq0 down &>/dev/null
$if imq1 down &>/dev/null
$if imq2 down &>/dev/null
$if imq3 down &>/dev/null
$if imq4 down &>/dev/null
$if imq5 down &>/dev/null
/sbin/rmmod imq &>/dev/null
#-----------------------------------
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo ""
echo " Uzycie skryptu [ start | stop | restart ] "
echo ""
exit
;;
esac
_________________
Jeśli post okazał się pomocny kliknij Pomógł
GG: 9822296
Multimo 2Mb