Konfigurowanie routera w celu upuszczania pakietów, wprowadzania opóźnień, uszkodzenia danych

13

Zastanawiałem się, czy ktoś nie miał doświadczenia w konfigurowaniu środowiska zaprojektowanego specjalnie z myślą o niskiej wydajności podczas wysyłania / odbierania żądań przez sieć. Tworzę aplikację i chciałbym, aby była solidna w sieciach o bardzo niskiej wydajności. Czy ktoś wie, czy można skonfigurować router, aby:

  1. sporadycznie upuszczaj pakiety
  2. sporadycznie wprowadzaj opóźnienia w pakietach
  3. uszkodzone dane w pakietach (ten nie jest wymagany, ponieważ wymagałoby otwarcia pakietu, zmiany danych i aktualizacji sumy kontrolnej, ponieważ warstwa TCP wychwyciłaby tego rodzaju problem)

Jeśli nie jest to możliwe na routerze, czy byłoby możliwe skonfigurowanie komputera tak, aby działał jako router i to robił?

Wielkie dzięki!

znak
źródło

Odpowiedzi:

17

Jeśli używasz Linux-a jako routera, netfilter ma wiele sposobów zakłócania ruchu pakietowego.

randomModuł może być używany do losowo upuszczać pakiety. Na przykład:

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

spowoduje, że router losowo zrzuci pakiety ze średnią szybkością 10%.

Możesz także uszkodzić losowe pakiety z celem XOR, np

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

spowoduje uszkodzenie 1% przekazanych pakietów przez XOR ich kluczem pochodzącym z podanego ciągu.

Steven Monday
źródło
Brzmi niesamowicie! Dzięki Steven! Czy kiedykolwiek to skonfigurowałeś? Jaka dystrybucja Linuksa?
Mark
Odniosłem sukces w tworzeniu routerów dla małych sieci korzystających z Debiana. Ale tak naprawdę każda dystrybucja Linuksa z najnowszym jądrem powinna działać dobrze, ponieważ netfilter jest wbudowany w jądro. Nigdy tak naprawdę nie próbowałem stworzyć „złego” routera, jak opisano tutaj, ale może to być ciekawy projekt na leniwe niedzielne popołudnie ...
Steven Poniedziałek
Jeśli używasz iptables w wersji 1.3.5, powyższe polecenie może zawierać błąd „iptables v1.3.5: Nie można załadować pasującego„ losowego ”. Poniższe polecenie działało dla mnie - iptables -A DO PRZODU -m statystyka - tryb losowy - prawdopodobieństwo 0,2 -j DROP
prashantsunkari
3

Z powodzeniem wykorzystałem WANem do symulacji warunków sieci WAN między Niemcami a Indiami. WANem jest dostarczany jako bootowalna płyta CD lub urządzenie wirtualne. Po prostu uruchom go, skonfiguruj pożądane narzędzia sieciowe, a następnie przekieruj przez nie ruch. Cytując oficjalny opis:

WANem to emulator sieci rozległej, który ma zapewnić rzeczywiste wrażenia z sieci rozległej / Internetu podczas opracowywania / testowania aplikacji w środowisku LAN. Zazwyczaj twórcy aplikacji opracowują aplikacje w sieci LAN, podczas gdy zamierzonym celem może być to, klienci uzyskujący dostęp do tego samego przez sieć WAN lub nawet Internet. WANem pozwala zatem zespołowi projektantów aplikacji skonfigurować przezroczystą bramę aplikacji, której można użyć do symulacji charakterystyk sieci WAN, takich jak opóźnienie sieci, utrata pakietów, uszkodzenie pakietów, rozłączenia, zmiana kolejności pakietów, fluktuacja itp. WANem można wykorzystać do symulacji sieci rozległej Warunki sieciowe dla ruchu danych / głosu i są wydawane na podstawie powszechnie akceptowanej licencji GPL v2.

knweiss
źródło
2

Ustaw port połączenia ładującego na 10 Mb / s i półdupleks, jeśli możesz. Następnie użyj hosta w sieci, aby wysłać ping z niego. To powinno cię porządnie wykończyć: D

SpacemanSpiff
źródło
Ustaw także rozmiary pakietów na pingach, aby były znacznie większe niż domyślne. Może to być naprawdę skuteczny i łatwy sposób symulowania nasyconych / ogólnie złych łączy sieciowych - jeśli możesz sparaliżować określone połączenie, jak zauważono, celowo ustawiając jego przepustowość na niższą niż ta, którą ma „atakująca” maszyna.
Andrew Barber
Mógłbyś również zadzierać z MTU, wybrać prawdziwy rozmiar dziwnej piłki :)
SpacemanSpiff