www.ProFTPD.de

ProFTPD => ProFTPD - Deutsch => Thema gestartet von: mcb am 16. Februar 2004, 20:14:35



Titel: Bandbreite für alle User beschränken
Beitrag von: mcb am 16. Februar 2004, 20:14:35
Hallo zusammen wie in der Doku beschrieben begrenze ich mit :

TransferRate RETR 13.0

Die Downlodrate der User auf max. 13 kb. Leider gilt das aber nur für den einzelnen User.
Wenn sich mehrere Connecten und gleichzietig ziehen, dann kommen sie ohne probleme über die 13 kb insg. hinaus.

Laden also mehr als 1 user gleichzeitig daten vom ftp dann kann ichs mit dem Internet surfen total vergessen.

Ist es irgendwie möglich die GESAMTE transfererate für retr zu begrenzen?


danke im vorraus


Titel: Re: Bandbreite für alle User beschränken
Beitrag von: stonki am 16. Februar 2004, 22:32:52
http://www.proftpd.de/index.php?id=13&backPID=13&tx_faq_faq=10

leider nein !


Titel: Bandbreite für alle User beschränken
Beitrag von: Anonymous am 17. Februar 2004, 00:40:52
hmpf ... schade ...
an was liegtn das? is doch eigentlich nicht so schwer .... normalerweise doch einfach zu lösen. Oder bin ich da falsch informiert?

Greez Maic


Titel: Bandbreite für alle User beschränken
Beitrag von: stonki am 17. Februar 2004, 08:30:03
Zitat von: "Anonymous"
hmpf ... schade ...
an was liegtn das? is doch eigentlich nicht so schwer .... normalerweise doch einfach zu lösen. Oder bin ich da falsch informiert?

Greez Maic


das frage ich mich auch  :?!
Das design von ProFTPD ist so, dass die einzelnen Threads pro Verbindung nicht miteinander kommunizieren, daher kann die Bandbreite nicht dynamisch angepasst werden.

cu
stonki


Titel: Bandbreite für alle User beschränken
Beitrag von: tomes am 24. Februar 2004, 22:22:25
Wenn du Linux als OS benutzt, kannst du Bandbreite mit iptables und iproute2 begrenzen.
Hier mal ein kleines Beispiel, wie es gerade auf einem "Versuchsserver" von mir arbeitet.

1. PassivePorts  50000 55000
in die proftpd.conf. Damit wird eine Port-Range fuer die passiven Ports bestimmt, die der Server aufmacht.

2. Mit iptables werden jetzt die ftp Pakete makiert:
/usr/sbin/iptables -t mangle -A OUTPUT -p tcp -s [IP des Server] --sport 50000:55000 -j MARK --set-mark 101
/usr/sbin/iptables -t mangle -A OUTPUT -p tcp -s [IP des Servers] --sport 20 -j MARK --set-mark 102

3. mit tc aus iproute2 Bandbreite beschraenken:
/usr/sbin/tc qdisc add dev [Device Name] root handle 1: htb default 10
/usr/sbin/tc class add dev [Device Name] parent 1: classid 1:1 htb rate [Wieviel] ceil [Wieviel]
/usr/sbin/tc class add dev [Device Name] parent 1:1 classid 1:10 htb rate [Wieviel] ceil [Wieviel]
/usr/sbin/tc filter add dev [Device Name] protocol ip parent 1:1 prio 5 handle 101 fw flowid 1:10
/usr/sbin/tc filter add dev [Device Name] protocol ip parent 1:1 prio 5 handle 102 fw flowid 1:10

[Wieviel] --> hier einfach die max Bandbreite, die man geben moechte, eintragen, in bps oder kbps.
Wenn der Wert nicht ganz klar sein sollte, dann einfach ausprobieren ;)
Also ungefaehr sind z.B. 3Mbps 24 MBytes/s Bandbreite (1 Byte = 8 Bits)
[Device Name] --> z.B. eth0. Sollte hier das DSL Device sein, dann natuerlich ppp0
[IP des Servers] --> Einfach die IP des Interface eintragen.

Das Prinzip kurz:
Durch die iptables Regeln werden alle Pakete makiert die 1. die Ports 50000:55000 verlassen (passives FTP), bzw. den Port 20 (aktives FTP).
Nach diesen Paketen haelt iproutes durch die Filterregeln jetzt ausschau und pakt sie in die "Warteschlange" des Device. Kann sein, dass die eine Klasse eigendlich nicht gebraucht wird, bin aber selber gerade erst am probieren und so wie oben *funct* es ;)
Es gibt im Netz jede Menge Sites zu QoS unter Linux. Leider sind die meisten sehr verwirrend :D :D :D
Also, wenn ihr mehr dazu wissen wollt, viel lesen und probieren ;)

Zum installieren von iptables/iproute2 bitte googlen ;)

tomes


Titel: Danke TOMES
Beitrag von: lieber1 am 26. Februar 2004, 15:32:14
-- Tolle Information, klar und einfach formuliert -- solche Leute fehlen leider zu oft im Internet.. lg Tom
PS: eine Frage hab ich da noch ... Wie kann ich verhindern das ein User von seinem Homedir rauskommt ?? verwende das MOD_SQL mit Homedir eintrag, wenn ich mich connecte, kann ich mit cd .. ins darüber gelegene Directorie wechseln .. Danke !!


Titel: Re: Danke TOMES
Beitrag von: stonki am 26. Februar 2004, 17:05:22
Zitat von: "lieber1"

PS: eine Frage hab ich da noch ... Wie kann ich verhindern das ein User von seinem Homedir rauskommt ?? verwende das MOD_SQL mit Homedir eintrag, wenn ich mich connecte, kann ich mit cd .. ins darüber gelegene Directorie wechseln .. Danke !!


RTFM
defaultroot ~


Titel: habs probiert jetzt geht nix mehr schnell
Beitrag von: lieber1 am 26. Februar 2004, 20:51:17
Übrigens wenn ihr kernel 2.4.20 verwendet musst ihr das TC file im SBIN ersetzen ... zu finden auf http://luxik.cdi.cz/~devik/qos/htb/

Ich habe alles so gemacht wie du geschrieben hast , leider ist sogar mein ssh nun langsam ;-))

ähm .. eine idee ??

lg tom
PS: Danke stonki, funktioniert jetzt..


Titel: Bandbreite für alle User beschränken
Beitrag von: tomes am 06. März 2004, 17:17:21
Hast du wirklich alles genauso gemacht, oder hast z.B. einen anderen Bereich fuer die pass Port gewaehlt ?

Ansonsten sollte der Effect nicht eintreten. SSH benutz Port 22 fuer den Server und normalerweise 1025 + xxx fuer die unpreviligierten Ports.

tomes


Titel: nun ich habs so eingetragen:
Beitrag von: lieber1 am 06. März 2004, 17:53:30
iptables -t mangle -A OUTPUT -p tcp -s 192.168.0.101 --sport 60000:60050 -j MARK --set-mark 101
iptables -t mangle -A OUTPUT -p tcp -s 192.168.0.101 --sport 20 -j MARK --set-mark 102

tc qdisc add dev eth0 root handle 1: htb default 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 10kbit ceil 10kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10kbit ceil 10kbit

tc filter add dev eth0 protocol ip parent 1:1 prio 5 handle 101 fw flowid 1:10
tc filter add dev eth0 protocol ip parent 1:1 prio 5 handle 102 fw flowid 1:10

was ist da genau falsch ... ich versteh die syntax auch nicht wirklich .. aber was so im internet zu finden ist, versteht die eigentlich sowieso nicht sehr viele leute ;-))


Titel: Bandbreite für alle User beschränken
Beitrag von: tomes am 07. März 2004, 16:12:00
Hm, an der Syntax ist ersteinmal nichts falsch und eigendlich sollte der ssh Deamon keine Verbindungen in diesem Bereich aufmachen.

Was sagt den ein lsof -i wenn du eine ssh-Verbindung auf hast ?
Hast du noch ander iptables-Filter am laufen ?

Bei meinem Test-Server funktioniert alles wunderbar.

tomes


Titel: hi .. hmm hab mich bei C't schlau gemacht
Beitrag von: lieber1 am 07. März 2004, 19:00:05
und jetzt funktioniert es die syntax ist ein bissal anders:

#!/bin/sh
#
#Shell-Skript fuer Quality of Service mit HTB
#
INTIF=eth0

###########
# Incoming
###########
/sbin/tc qdisc add dev $INTIF root handle 2:0 htb default 20
/sbin/tc class add dev $INTIF parent 2:0 classid 2:2 htb rate 1750kbit ceil 1750kbit
/sbin/tc class add dev $INTIF parent 2:2 classid 2:20 htb rate 1500kbit ceil 1500kbit prio 0
/sbin/tc class add dev $INTIF parent 2:2 classid 2:21 htb rate 30kbit ceil 30kbit prio 1

iptables -A OUTPUT -t mangle -o $INTIF -p tcp --sport 20 -j MARK --set-mark 21
iptables -A OUTPUT -t mangle -o $INTIF -p tcp --sport 60000:60050 -j MARK --set-mark 21

tc filter add dev $INTIF parent 2:0 prio 0 protocol ip handle 21 fw flowid 2:21

Danke nochmal !!

servus aus wien