Hallo,

Ich habe bei mir zu Hause schon lange das Problem Traffic Shaping auf
meinem Debian Router vor mich hergeschoben, als es damals vor ca. einem
halben Jahr nicht auf Anhieb funktionierte. Auch heute habe ich noch
einige Probleme das ganze zum Laufen zu kriegen.

Mein Skript basiert auf einem Skript aus der c't vom 18.11.2002.

     1. Wie kann ich am besten �berpr�fen, ob mein Skript auch wirklich
        tut, was es sollte, ich habe bisher mich einmal an der Uni
        eingeloggt und ein paar Tests durchgef�hrt, die eigentlich gut
        aussahen, aber etwas genauer m�chte ich es schon noch wissen.
     2. Ich habe einmal per iptraf auf dem Router geschaut, wie der
        Traffic so aussieht, der Upload war durch ein scp und ein
        Webserver-Zugriff ausgelastet, doch wenn ich gleichzeitig noch
        eine Datei herunterlade komme ich bei weitem nicht auf die
        Downloadrate, die ich eigentlich haben sollte (ungef�hr 7 kByte
        statt 30-40). Was l�uft hier wohl krumm?
     I. Edonkey-Clients sollen beim Upload massiv eingeschr�nkt werden,
        mit der c't L�sung, die wie folgt aussieht: iptables -A
        POSTROUTING -t mangle -o $DEV -p tcp --dport 4662 -j MARK
        --set-mark 13 und iptables -A POSTROUTING -t mangle -o $DEV -p
        tcp --sport 4662 -j MARK --set-mark 13 habe ich laut einem
        Kollegen das Problem, dass Clients die nicht auf diesem Port
        laufen von der Regel nicht betroffen sind. Er schlug mir vor f�r
        all die Pakete auf dem Desktop, auf dem eDonkey l�uft, das ToS
        zu setzen und dann am Router nach diesem zu filtern. Ich
        veruschte das nun mit iptables -A OUTPUT -m owner --uid-owner
        $OVERNET_USERID -j TOS --set-tos 0x08 doch so kommt eine
        Fehlermeldung, wegen einem falschen Argument, wie geht das
        richtig??
     1. Mit der c't eDonkey-L�sung habe ich auch noch das Problem, dass
        der Upload zwar auf den vorgegebenen Wert gedrosselt wird, aber
        der Download gleichzeitig auf 0 sinkt, daran hat der betreffende
        User im Netz nat�rlich keine Freude, woran k�nnte das liegen?


W�re super wenn mir jemand zu einer der Fragen eine Antwort h�tte...

Das Skript befindet sich im Anhang... Das Port-Forwarding usw. befindet
sich in einem anderen Skript, aber das sollte f�r dieses Problem ja
eigentlich unwesentlich sein, oder?

Gr�sse und vielen Dank
Patrick


#!/bin/sh

TC_BIN="/sbin/tc"
DEV="eth1"
UP_RATE="125kbit"
IPTABLES=/sbin/iptables

case "$1" in
  start)
	# Delete old configuration
	echo "Delete old configuration.."
	$IPTABLES -F -t mangle
	$TC_BIN qdisc del dev $DEV root 2> /dev/null > /dev/null
	$TC_BIN qdisc del dev $DEV ingress 2> /dev/null > /dev/null

	# Root
	echo "Creating qdisc.."
	$TC_BIN qdisc add dev $DEV root handle 1:0 htb default 12
	
	echo "Creating classes.."
	# Hauptklasse
	$TC_BIN class add dev $DEV parent 1:0 classid 1:1 htb \
		rate $UP_RATE ceil $UP_RATE
	# Klasse fuer ACK
	$TC_BIN class add dev $DEV parent 1:1 classid 1:10 htb \
		rate 10kbit ceil $UP_RATE prio 0
	# Klasse fuer SSH
	$TC_BIN class add dev $DEV parent 1:1 classid 1:11 htb \
		rate 30kbit ceil $UP_RATE prio 1
	# Klasse fuer Webserver
	$TC_BIN class add dev $DEV parent 1:1 classid 1:12 htb \
		rate 30kbit ceil $UP_RATE prio 2
	# Klasse fuer normalen Traffic
	$TC_BIN class add dev $DEV parent 1:1 classid 1:13 htb \
		rate 45kbit ceil $UP_RATE prio 3
	# Klasse fuer Bulk
	$TC_BIN class add dev $DEV parent 1:1 classid 1:14 htb \
		rate 8kbit ceil $UP_RATE prio 4
	# Klasse fuer eDonkey
	$TC_BIN class add dev $DEV parent 1:1 classid 1:15 htb \
		rate 1kbit ceil 8kbit prio 5

	echo "Creating iptables MARK rules.."
	# ACKs
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \
		-m length --length :64 -j MARK --set-mark 10
	# SSH
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 22 \
		-j MARK --set-mark 11
	# Webserver
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 80 \
		-j MARK --set-mark 12
	# SMTP
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 25 \
		-j MARK --set-mark 14
	# eDonkey
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 4662 \
		-j MARK --set-mark 15
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --sport 4662 \
		-j MARK --set-mark 15
		
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 10 fw flowid 1:10
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 11 fw flowid 1:11
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 12 fw flowid 1:12
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 13 fw flowid 1:13
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 14 fw flowid 1:14
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 15 fw flowid 1:15
	echo "done."
	;;
  stop)
  	#TODO
  	;;
  *)
	echo "Usage: /etc/init.d/Shaper {start|stop|show}"
	exit 1
	;;
esac

exit 0

Antwort per Email an