Einzelne Verbindungen über einen Linux-Router verlangsamen?


8

Wir haben einen Linux-Server, der als Router / Firewall für unser Büro fungiert. Gelegentlich lädt jemand eine große Datei hoch, die unsere gesamte Bandbreite beansprucht. Ich möchte keine komplexen Regeln oder Traffic Shaping implementieren, frage mich aber, ob es eine Möglichkeit gibt, eine einzelne Verbindung vor Ort zu verlangsamen. Ich habe tcpnice gefunden , aber es verlangsamt die Übertragungen in meinen Tests nicht.

Antworten:


6

Wenn die Verkehrsformung den Verkehr sowohl für Shell- als auch für aktive Uploads nicht richtig formt (ich denke, das kann, aber nicht sicher), können Sie:

a) Führen Sie ssh an zwei Ports aus. Sie können einen für Dateiübertragungen und einen für interaktives Arbeiten priorisieren.

b) Begrenzen Sie die gesamten SSH-Raten - das einzige Problem besteht darin, dass Sie die Upload-Kapazität des Links ausfüllen und SSH gut interaktiv funktioniert, wenn Sie die Rate auf etwa 50 KBit / s beschränken (dies zwingt Benutzer dazu, ein anderes Protokoll für größere Dateiübertragungen zu verwenden )

c) Priorisieren Sie den Datenverkehr nach Quelladresse, wenn Sie können

Außerdem sollte die Verkehrsformung den Verkehr ausgeglichener machen, unabhängig davon, dass eine einzelne Verbindung nicht die gesamte Verbindung monopolisiert.

BEARBEITEN: Hier ist ein Beispiel , das ein Bash-Skript verwendet. Es wird erwähnt, dass ssh TOS tatsächlich auf interaktiv bis interaktiv setzt, daher würde ich annehmen, dass Wondershaper dies ausnutzt.

Wenn Sie neben Wondershaper noch andere Optionen wünschen , schauen Sie sich Shorewall oder Pyshape an .

Shorewall ist ziemlich ausgereift und bietet ein ausgewogenes Verhältnis zwischen Flexibilität, Leistung und Einfachheit.


4

Wondershaper kann Wunder wirken und ist recht einfach einzurichten . Davon abgesehen finden Sie einige Userland-Programme, die dies tun. Unter Linux gibt es Trickle , möglicherweise gibt es Entsprechungen für Windows.

Aber wirklich, Sie möchten Traffic Shaping - die Leute werden vergessen, das Programm usw. auszuführen. Nur Uploads auf etwas weniger als Ihre volle Kapazität zu beschränken, wird Ihnen wahrscheinlich viel Gutes tun.


1
Das Hauptproblem bei der Gestaltung des Datenverkehrs besteht darin, dass AFAIK nicht warten muss, um einen Datei-Upload über SFTP / SCP von einer interaktiven SSH-Sitzung zu unterscheiden. Ich möchte , dass meine interaktive SSH - Sitzungen priorisieren, aber das tun würde auch meine Uploads priorisieren, um den Zweck zu besiegen: /
davr

2
Ich glaube, ssh unterscheidet die interaktive Verwendung (ssh) von der nicht interaktiven (scp / sftp) durch die Verwendung eines TOS-TCP / IP-Headers, und Wondershaper verwendet dies.
Alex

Leider setzen weder Putty (interaktiver SSH-Client) noch Filezilla (Datei übertragender SFTP-Client) TOS-TCP / IP-Flags. Meine Firewall kann also nicht zwischen ihnen unterscheiden.
Davr

Auch Wondershaper ist 8 Jahre alt ... scheint eine Ewigkeit in der Internetzeit zu sein.
Davr

2

Schauen Sie sich connrate in der Manpage iptables (8) an. Sie können die Verbindungsrate anpassen und eine Verbindung verlangsamen, die zu schnell hochgeladen wurde, indem Sie sie entweder in eine geeignete TC-Klasse oder Drop oder Tarpit oder was auch immer für Sie funktioniert.


1

Haben Sie darüber nachgedacht, einen Reverse-Squid-Proxy und Delay-Pools einzurichten ? Sie können dies auch mit der limit-Direktive von iptables tun.

Das einzige Problem, das ich mit Ihrer Anfrage habe, ist, dass Sie anscheinend damit beginnen möchten, die Übertragungsrate einer bereits hergestellten Verbindung zu begrenzen, was ziemlich schwierig sein wird, da alles, was mir einfällt, in Betrieb genommen werden soll neue Verbindung, und bestehende Verbindungen bleiben bestehen.

Ich muss Alex darin zustimmen, dass Sie wahrscheinlich eine Art Traffic Shaper benötigen. Was Sie sich ansehen möchten, sind Pakete pro Sekunde, da eine interaktive Shell einen wesentlich geringeren Wert als eine bescheidene Dateiübertragung haben wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.