Ich habe eine Netzwerktopologie:
Server <-> router1 <-> router2 <-> router3 <-> edgeRouter <-> "internet"
Alle Router basieren auf Linux und unterstützen iptables.
Der Server legt Verkehrsklassen mit iptables ( --set class X:Y
) fest, und Router führen basierend auf der festgelegten Klasse ein "Routing" durch. (Klasse hängt von der ursprünglichen Anwendung ab).
Der Edge-Router leitet die Pakete über unseren ISP an das Internet weiter und empfängt die Rückgabe- (Antwort-) Pakete. Für die empfangenen Antworten ist natürlich keine Verkehrsklasse festgelegt.
Ist es möglich, eine iptables
Regel auf dem Edge-Router (Mangle oder etwas Ähnliches) zu verwenden, um die Rückgabepakete (NAT-Stil, Pakete von "ESTABLISHED" -Verbindungen) zu verfolgen und die Rückgabepakete mit derselben Verkehrsklasse wie die Ursprungspakete zu markieren Paket? Das Aktivieren von NAT auf dem Edge-Router ist kein Problem.
TLDR: Verwendung von iptables zum Klassifizieren von Eingangspaketen mit derselben Klasse wie der Ausgang für dieselbe Verbindung.
Womit setzen Sie
--set class X:Y
? Klasse von was genau? Ich habe die Manpage von iptables durchsucht, aber keine ähnliche gefunden, wie Sie sie beschreiben. Ich denke, dass Sie so etwas tun möchten:Gehen Sie in "edgeRouter" wie folgt vor:
quelle
Anhand Ihrer Frage, auf welche Klassifizierungsmethode Sie sich beziehen, ist nicht ganz klar, aber im Allgemeinen
tc
gilt Folgendes, wenn es um die Gestaltung des Datenverkehrs mithilfe von Disziplinen und Warteschlangen geht.act_connmark
Da die Verarbeitung der eingehenden qdisc vor dem Netzfilter erfolgt, können Sie den eingehenden Datenverkehr nicht direkt mithilfe von iptables klassifizieren (ohne Ihren Kernel mit IMQ neu zu kompilieren, siehe unten). Sie können es jedoch indirekt mithilfe der Verbindungsverfolgung klassifizieren. Wenn auf Ihrem Kernel verfügbar, können Sie das für diesen Zweck entwickelte Modul act_connmark verwenden, das Filtern, die dies unterstützen , eine
connmark
Aktion hinzufügttc
.IMQ
IMQ (Intermediate Queuing Device) umgeht den normalen Verkehrsfluss im Kernel, indem es nach meinem Verständnis nach der Netfilter-Verarbeitung durch ein virtuelles Gerät zurückgeschleift wird. Es wird nicht mit dem Kernelbaum zusammengeführt, ist daher in den meisten Distributionen nicht enthalten und erfordert den Patch und das Kompilieren des Kernels selbst. Wenn Sie dies tun, würde es ungefähr so funktionieren:
Auf diese Weise können Sie auch erweiterte Klassifizierungen für den Eingang mithilfe von iptables vornehmen. Dies kann mit einfachen u32-Filtern, z. B. beliebigen Portbereichen, sehr umständlich sein. Ich kann jedoch nicht mit der Leistung oder Eleganz dieser Lösung sprechen. Ich vermute, es gibt einen Grund, warum sie nie zusammengeführt wurde.
quelle