Configurare un router per eliminare i pacchetti, introdurre latenza, dati corrotti


13

Mi chiedevo se qualcuno avesse esperienza nell'impostazione di un ambiente progettato appositamente per scarse prestazioni durante l'invio / la ricezione di richieste su una rete. Sto sviluppando un'applicazione e vorrei renderla solida su reti con prestazioni estremamente scadenti. Qualcuno sa se è possibile configurare un router per:

  1. rilasciare i pacchetti in modo intermittente
  2. introdurre in modo intermittente la latenza nei pacchetti
  3. dati corrotti nei pacchetti (questo non è richiesto in quanto richiederebbe l'apertura del pacchetto, la modifica dei dati e l'aggiornamento del checksum poiché il livello TCP rileverà questo tipo di problema)

Se non fosse possibile su un router, sarebbe possibile configurare un computer per fungere da router e farlo?

Grazie molto!

Risposte:


17

Se si utilizza una scatola Linux come router, netfilter offre diversi modi per gestire il traffico dei pacchetti.

Il randommodulo può essere utilizzato per eliminare casualmente i pacchetti. Ad esempio, questo:

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

farà cadere casualmente i pacchetti a una velocità media del 10%.

Puoi anche corrompere pacchetti casuali con il target XOR, ad es

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

corromperà l'1% dei pacchetti inoltrati XORandoli con una chiave derivata dalla stringa specificata.


Sembra fantastico! Grazie Steven! L'hai mai impostato? Quale distro Linux?
Segna il

Ho avuto successo nel creare router per piccole reti usando Debian. Ma praticamente qualsiasi distro Linux con un kernel recente dovrebbe andare bene, dal momento che netfilter è integrato nel kernel. In realtà non ho mai provato a creare un router "cattivo" come descritto qui, ma potrebbe essere un progetto interessante per una domenica pomeriggio pigra ...
Steven lunedì

Se si utilizza iptables versione 1.3.5, il comando precedente potrebbe generare un errore con il messaggio "iptables v1.3.5: Impossibile caricare la corrispondenza" random "". Di seguito il comando ha funzionato per me - iptables -A FORWARD -m statistica --mode random --probability 0.2 -j DROP
prashantsunkari

3

Ho usato con successo WANem per simulare le condizioni di rete di una WAN tra Germania e India. WANem viene fornito come CD avviabile o dispositivo virtuale. Basta avviarlo, configurare le proprietà di rete desiderate e quindi instradare il traffico attraverso di esso. Citando la descrizione ufficiale:

WANem è un emulatore di rete di area ampia, pensato per fornire una vera esperienza di una rete di area ampia / Internet, durante lo sviluppo / test di applicazioni in un ambiente LAN. In genere, gli sviluppatori di applicazioni sviluppano applicazioni su una LAN mentre lo scopo previsto potrebbe essere lo stesso, i client accedono allo stesso tramite WAN o persino Internet. WANem consente quindi al team di sviluppo delle applicazioni di impostare un gateway applicazione trasparente che può essere utilizzato per simulare caratteristiche WAN come ritardo di rete, perdita di pacchetti, corruzione di pacchetti, disconnessioni, riordino di pacchetti, jitter, ecc. WANem può essere utilizzato per simulare un'ampia area Condizioni di rete per il traffico dati / voce ed è rilasciato con la licenza GPL v2 ampiamente accettabile.


2

Se possibile, impostare la porta uplink su 10 Mbps e half duplex. Quindi utilizzare un host sulla rete per eseguire il ping dello snot. Dovrebbe sterilizzarti decentemente: D


Impostare anche le dimensioni dei pacchetti sui ping su un valore considerevolmente maggiore rispetto al valore predefinito. Questo può essere un modo davvero efficace e semplice per simulare collegamenti di rete saturi / generalmente cattivi - se riesci a paralizzare la connessione specifica come notato impostando intenzionalmente la sua larghezza di banda su un valore inferiore rispetto a quello della macchina "attaccante".
Andrew Barber,

Puoi anche scherzare con MTU, scegliere una dimensione davvero strana :)
SpacemanSpiff
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.