Konfigurieren eines Routers zum Verwerfen von Paketen, Einführen von Latenz und Beschädigen von Daten

13

Ich habe mich gefragt, ob jemand Erfahrung mit der Einrichtung einer Umgebung hat, die für eine schlechte Leistung beim Senden / Empfangen von Anforderungen über ein Netzwerk ausgelegt ist. Ich entwickle eine Anwendung und möchte sie in extrem leistungsschwachen Netzwerken robust machen. Weiß jemand, ob es möglich ist, einen Router zu konfigurieren, um:

  1. Verwerfen Sie Pakete mit Unterbrechungen
  2. zeitweise Latenz in Paketen einführen
  3. beschädigte Daten in Paketen (dies ist nicht erforderlich, da das Paket geöffnet, die Daten geändert und die Prüfsumme aktualisiert werden müsste, da die TCP-Schicht diese Art von Problem abfängt)

Wenn dies auf einem Router nicht möglich ist, ist es dann möglich, einen Computer als Router zu konfigurieren und dies zu tun?

Danke vielmals!

Kennzeichen
quelle

Antworten:

17

Wenn Sie eine Linux-Box als Router verwenden, hat netfilter verschiedene Möglichkeiten, Ihren Paketverkehr zu beeinträchtigen.

Das randomModul kann zum zufälligen Verwerfen von Paketen verwendet werden. Zum Beispiel das:

iptables -A FORWARD -m random --average 10 -j DROP

führt dazu, dass der Router Pakete mit einer durchschnittlichen Rate von 10% nach dem Zufallsprinzip verwirft.

Sie können auch zufällige Pakete mit dem XOR-Ziel beschädigen, z

iptables -A FORWARD -m random --average 1 -j XOR --key "junktoxortomypacket"

1% der weitergeleiteten Pakete werden durch XOR-Verknüpfung mit einem aus der angegebenen Zeichenfolge abgeleiteten Schlüssel beschädigt.

Steven Montag
quelle
Das klingt großartig! Vielen Dank, Steven! Hast du das schon mal eingerichtet? Welche Linux-Distribution?
Mark
Ich hatte Erfolg damit, mit Debian Router für kleine Netzwerke zu erstellen. Aber eigentlich sollte fast jede Linux-Distribution mit einem neueren Kernel gut funktionieren, da netfilter in den Kernel eingebaut ist. Ich habe noch nie versucht, einen "schlechten" Router wie hier beschrieben zu erstellen, aber es könnte ein interessantes Projekt für einen faulen Sonntagnachmittag sein ...
Steven Montag,
Wenn Sie iptables Version 1.3.5 verwenden, kann der obige Befehl mit der Meldung "iptables v1.3.5: Match` random 'konnte nicht geladen werden "fehlschlagen. Der folgende Befehl hat bei mir funktioniert: iptables - A FORWARD
m
3

Ich habe WANem erfolgreich verwendet , um die Netzwerkbedingungen eines WAN zwischen Deutschland und Indien zu simulieren. WANem wird als bootfähige CD oder virtuelle Appliance geliefert. Sie starten es einfach, konfigurieren die gewünschten Netzwerkmerkmale und leiten dann Ihren Datenverkehr durch das Netzwerk. Zitiert die offizielle Beschreibung:

WANem ist ein WAN-Emulator (Wide Area Network Emulator), der eine echte Erfahrung mit einem WAN (Wide Area Network / Internet) während der Anwendungsentwicklung / -prüfung über eine LAN-Umgebung bietet. In der Regel entwickeln Anwendungsentwickler Anwendungen in einem LAN, während der beabsichtigte Zweck darin bestehen kann, dass Clients über das WAN oder sogar das Internet auf dieselben zugreifen. Mit WANem kann das Anwendungsentwicklungsteam ein transparentes Anwendungsgateway einrichten, mit dem WAN-Eigenschaften wie Netzwerkverzögerung, Paketverlust, Paketbeschädigung, Verbindungsabbrüche, Neuordnung von Paketen, Jitter usw. simuliert werden können. Mit WANem kann Wide Area simuliert werden Netzwerkbedingungen für Daten- / Sprachverkehr und wird unter der allgemein akzeptablen GPL v2-Lizenz veröffentlicht.

knweiss
quelle
2

Stellen Sie den Uplink-Port auf 10 Mbit / s und Halbduplex ein, wenn Sie können. Verwenden Sie dann einen Host im Netzwerk, um den Rotz herauszupingen. Das sollte dich anständig neutralisieren: D

SpacemanSpiff
quelle
Stellen Sie die Paketgrößen auf den Pings ebenfalls deutlich größer als die Standardgröße ein. Dies kann eine sehr effektive und einfache Methode sein, um gesättigte / im Allgemeinen schlechte Netzwerkverbindungen zu simulieren - wenn Sie die bestimmte Verbindung wie angegeben lahmlegen können, indem Sie die Bandbreite gezielt auf einen niedrigeren Wert als den des angreifenden Computers einstellen.
Andrew Barber
Sie könnten sich auch mit MTU anlegen und sich eine richtige Größe aussuchen :)
SpacemanSpiff