Witam
Od paru dni walcze z pewnym pomyslem by caly ruch p2p w mojej sieci wrzucic do jednej kolejki, ktora jest odraniczona.
Do tego celu chce wykorzystac pakiet ipp2p, IMQ, CONNMARK, MARK i oczywiscie tc.
Po przegladnieciu wielu dokumentacji stworzylem takie cos:
#!/bin/bash
# shape_p2p
ECHO="/bin/echo"
MODUL="/sbin/modprobe"
I="/usr/sbin/iptables"
TC="/sbin/tc"
case "$1" in
start)
$ECHO ""
$ECHO " Kolejkowanie P2P wł±czone "
$ECHO ""
$I -t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark
$I -t mangle -A PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT
$I -t mangle -A PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 0x999
$I -t mangle -A PREROUTING -m ipp2p --ipp2p-data -j MARK --set-mark 0x999
$I -t mangle -A PREROUTING -p tcp -m mark --mark 0x999 -j CONNMARK --save-mark
$I -t mangle -A POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev 0
$I -t mangle -A POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev 1
$TC qdisc add dev imq0 root handle 4:0 htb default 103 r2q 1
$TC qdisc add dev imq1 root handle 5:0 htb default 103 r2q 1
$TC class add dev imq0 parent 4:0 classid 4:1 htb rate 152kbit burst 6k cburst 3k
$TC class add dev imq1 parent 5:0 classid 5:1 htb rate 152kbit burst 6k cburst 3k
$TC class add dev imq0 parent 4:1 classid 4:101 htb rate 8kbit ceil 128kbit quantum 1500 burst 0k cburst 0k prio 7
$TC filter add dev imq0 parent 4:0 protocol ip prio 7 handle 0x999 fw classid 4:101
$TC qdisc add dev imq0 parent 4:101 sfq perturb 16 quantum 1500
$TC class add dev imq1 parent 5:1 classid 5:101 htb rate 8kbit ceil 128kbit quantum 1500 burst 0k cburst 0k prio 7
$TC filter add dev imq1 parent 5:0 protocol ip prio 7 handle 0x999 fw classid 5:101
$TC qdisc add dev imq1 parent 5:101 sfq perturb 16 quantum 1500
#
;;
stop)
#
$ECHO ""
$ECHO " Kolejkowanie P2P wył±czone "
$ECHO ""
#
$I -t mangle -D PREROUTING -p tcp -j CONNMARK --restore-mark
$I -t mangle -D PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT
$I -t mangle -D PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 0x999
$I -t mangle -D PREROUTING -m ipp2p --ipp2p-data -j MARK --set-mark 0x999
$I -t mangle -D PREROUTING -p tcp -m mark --mark 0x999 -j CONNMARK --save-mark
$I -t mangle -D POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev 0
$I -t mangle -D POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev 1
$TC qdisc del dev imq0 root
$TC qdisc del dev imq1 root
#
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
$ECHO ""
$ECHO " Użycie kolejkowanie P2P [ start | stop | restart ] "
$ECHO ""
exit
;;
esac
W zalozeniu skrypt ten powinien wykryc ruch p2p oznakowac go i w zaleznosci czy to ruch przychodzacy czy wychodzacy wrzucic go do imq0 albo imq1 a nastepnie przyciety do odpowiednich wartosci.
Lecz znajac zycie cos nie chce dzialac

a mianowicie ruch p2p jest rozpoznawany tyle ze caly jest wrzucany do imq0 .
I tu moja prosba o pomoc by ktos bardziej obeznany niz ja przygladnol sie skryptowi i zobaczyl co jest nie tak (gdzie popelnilem blad)
bo mi juz rece opadaja.
-------------------EDIT-----------------------
Po ciezkich walkach znalazlem gdzie popelnilem blad .
$I -t mangle -A POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev
0
$I -t mangle -A POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev
1
...
...
$I -t mangle -D POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev
0
$I -t mangle -D POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev
1