Ich verwende einen Torrent-Client auf meinem kopflosen Ubuntu-Server. Außerdem ist eine Anzahl von Computern mit diesem Server verbunden, der als Internet-Gateway / Router verwendet wird. Die Frage ist, ob es möglich ist, iptables so zu konfigurieren, dass der Verkehr von eth1 (lan if) Vorrang vor dem vom Server generierten lokalen Verkehr hat. So etwas wie QOS ..
networking
iptables
Pablo
quelle
quelle
Antworten:
Es gibt verschiedene Alternativen, um das zu erreichen, wonach Sie suchen. Aber zuallererst ist es ja möglich. Viele der Möglichkeiten sind jedoch recht komplex.
Eine der einfachsten Optionen könnte darin bestehen, den Torrent-Daemon unter einem eigenen Benutzer \ group auszuführen. Verwenden Sie dann iptables, um den gesamten Datenverkehr von diesem Benutzer \ Gruppe mit einem Flag zu markieren. Lassen Sie dann später das tc nach diesem Flag filtern und stellen Sie es in die Warteschlange mit niedriger Priorität. Am Ende dieses Wikis finden Sie eine Idee.
Für das, was Sie fragen, benötigen Sie nur zwei Warteschlangen ( Abb. 1 ), eine mit niedriger und eine mit hoher Priorität. Es ist jedoch möglicherweise besser, sich an etwas zu halten, das diesem Beispiel näher kommt . Sie können das Beispiel an Ihre Bedürfnisse anpassen, das Teil einfach mit nat löschen und die Standardmarke auf einen niedrigeren Wert setzen als die Marke, die Sie für den vom Dämon generierten Datenverkehr verwenden.
Für meinen Vorschlag können Sie also so etwas wie
iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j MARK --set-mark 6
ZZZZ als Benutzerkennung verwenden.Eine Alternative zum Setzen eines Flags könnte darin bestehen,
iptables -A OUTPUT -t mangle -m owner --uid-owner ZZZZ -j CLASSIFY --set-class X:Y
X und Y als Klassenkennung und ZZZZ als Benutzerkennung zu verwenden.Abb. 1:
Am besten ist es, für jede fw-Marke ein Blatt zu haben. Aber mein bester Rat ist jetzt, das oben genannte Beispiel zu lesen und zu verstehen , um es an Ihre Bedürfnisse anzupassen. Wenn Sie Fragen haben, fügen Sie diese hinzu.
In dem oben genannten Beispiel ist es wichtig, dass Sie diesen Teil verstehen ( Abb. 2 ), wenn Sie iptables-Regeln zum Markieren oder Klassifizieren von Datenverkehr schreiben möchten. Eine kurze Erklärung dazu mit einem etwas anders aussehenden Diagramm finden Sie hier .
Abb. 2:
Dies zeigt Ihnen die richtige Richtung:
Regeln, Richtlinien und Ansätze
Linux Advanced Routing & Traffic Control HOWTO: Ratenbegrenzung für einen einzelnen Host oder eine Netzmaske
Eine Reise zur Verkehrskontrolle: reale Szenarien
Iptables Tutorial 1.2.2
quelle
tc
Googeln darauf gestoßen und auch DD-WRT-basierte Router verwenden , um QOS nachzuahmen. Aber ich weiß nicht, wie ich in meinem speziellen Fall konfigurieren soll ... Jedes Beispiel wird geschätzt.Servicequalität ist ein recht komplexes Thema - der von @ anders-fu-kiaer gepostete Link ist möglicherweise die beste Lösung, aber recht komplex. Ich bin überhaupt kein Experte in diesem Bereich, daher werde ich keinen Kommentar abgeben.
Trotzdem kann oft eine einfachere Lösung nützlich sein. Wenn Sie nur die Bandbreite für ein Programm (z. B. den Torrent-Client) begrenzen möchten, verwenden Sie eine sehr einfache Lösung
trickle
(1).Sie können es installieren durch
und dann führen Sie ein Programm mit aus
Die
program
Bandbreite wird zum Herunterladen auf 100 kbit / s und zum Hochladen auf 50 kbit / s überschritten. Auf dieser Seite von tuxradar finden Sie viele weitere Optionen und Informationen für Trickle: Steuern Sie Ihre Bandbreite mit Trickle .(1) Dies unterscheidet sich von der richtigen QoS: Die vom "verkrüppelten" Programm verwendete Bandbreite wird jedes Mal reduziert, nicht nur, wenn die Dienste mit höherer Priorität nachgefragt werden, wie dies bei der richtigen QoS der Fall ist.
quelle
Sie tun dies nicht mit iptables. Sie müssen die Routing-Metriken ändern.
Festlegen von Routing-Metriken für eine Netzwerkschnittstelle - Ubuntu Apps Directory
Um allen anderen Schnittstellen eine höhere Priorität als wlan0 zu geben, führen Sie einfach Folgendes aus:
Um die Metriken der an wlan0 angehängten Routen zurückzusetzen, führen Sie einfach Folgendes aus:
Weitere Infos hier: http://0pointer.de/lennart/projects/ifmetric/
quelle