GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von tc zum Verzögern von Paketen an nur eine einzige IP-Adresse

Lösung 1:

Die gewählte Antwort ist falsch/unvollständig. Ich stand vor einem ähnlichen Problem, die gewählte Antwort hat etwas geholfen, aber nicht genug.

Erstens wird der folgende Befehl nicht wirklich benötigt.

tc qdisc del dev eth0 root

Es wird die Root-qdisc "löschen", wird aber sofort durch eine pfifo_fast ersetzt (damit Sie die Konnektivität nicht verlieren).

Der zweite Befehl:

tc qdisc add dev eth0 root handle 1:prio

Wird die pfifo_fast qdisc durch die prio ersetzen. Standardmäßig hat die Prio-Warteschlange 3 Bänder (0, 1, 2), die jeweils von einer Klasse verwaltet werden (1:1, 1:2 und 1:3).

Die Pakete werden unter Verwendung des TOS-Felds des IP-Pakets an eines dieser Bänder gesendet. Diese Konfiguration wird angezeigt, wenn Sie Folgendes ausführen:

tc qdisc ls

Blick auf die 'priomap'-Werte.

Dann fügen Sie ein netem qdisc hinzu:

tc qdisc add dev eth0 parent 1:1 handle 2:netem delay 500ms

Mit diesem Befehl verzögern Sie den gesamten Verkehr, der in das 1:1-Band geht (bis der Filter vorhanden ist).

Aber es gibt zwei Vorbehalte:

  • Ihr Datenverkehr kann einen anderen TOS-Wert haben und dann an ein anderes Band gesendet werden.
  • Die Prio-Qdisc kann so konfiguriert werden, dass der Datenverkehr auf ein anderes Band geht.

Das Folgende löste mein Problem, nicht vom Netz betroffen zu sein, während der Filter nicht angewendet wurde. Anstelle der obigen Schritte habe ich Folgendes getan:

tc qdisc add dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Dadurch wird der gesamte Datenverkehr standardmäßig auf das Band 1:3 gesendet.

Dann habe ich die Regel hinzugefügt, um den Datenverkehr zu verzögern:

tc qdisc add dev eth0 parent 1:1 handle 10:netem delay 100ms 10ms

Dadurch wird die qdisc im Band 0 erstellt, aber da der gesamte Datenverkehr auf Band 3 geht, hat es mich nicht beeinflusst.

Danach habe ich den Filter hinzugefügt:

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.1/32 match ip dport 80 0xffff flowid 1:1

Mit dem Filter ist jetzt nur noch die gewählte IP/Port betroffen, da wir den gewählten Traffic auf das Band 0 umleiten.

Der gesamte andere Datenverkehr bleibt unbeeinflusst, da er weiterhin auf Band 3 fließt.

Lösung 2:

Ok, ich habe mein Problem selbst gelöst. Es stellt sich heraus, dass, wenn Sie die ersten 3 Zeilen oben ausführen (die "tc qdisc"), alle Pakete verzögert werden, da noch keine Filter vorhanden sind. Die vierte Zeile ändert es, um nur Pakete von dieser einzelnen IP-Adresse zu verzögern. Zusätzliche Filterzeilen können hinzugefügt werden, um zusätzliche IP-Adressen zur „verzögerten“ Liste hinzuzufügen. Also:erstelle keine "netem delay"-Zeile, ohne dass ein Filter darauf zeigt.


Linux
  1. Nur das erste Vorkommen nur mit Grep finden?

  2. So führen Sie den Ping-Befehl nur für N Pakete aus

  3. Fail2Ban Howto:Blockieren Sie IP-Adressen mit Fail2ban und IPTables

  4. Entfernen von einfachen und doppelten Anführungszeichen in einer Zeichenfolge nur mit Bash / Standard-Linux-Befehlen

  5. So erhalten Sie eine bestimmte Speicheradresse mit C

So ändern Sie die MAC-Adresse mit macchanger unter Kali Linux

So überwachen Sie die Ethernet-Aktivität unter Linux mit Arpwatch

So laden Sie nur Audio mit youtube-dl herunter

Wie blockiere ich eine IP-Adresse mit .htaccess?

Lokale Netzwerkschnittstellenadressen nur mit proc abrufen?

rsync mit Regex, um nur einige Dateien einzuschließen