Mam konfigurację testową w laboratorium na 4 maszynach:
- 2 stare maszyny P4 (t1, t2)
- 1 Xeon 5420 DP 2,5 GHz 8 GB RAM (t3) Intel e1000
- 1 Xeon 5420 DP 2,5 GHz 8 GB RAM (t4) Intel e1000
aby przetestować wydajność zapory linuksowej, ponieważ w ostatnich miesiącach ugryzły nas liczne ataki syn-flood. Wszystkie maszyny działają pod kontrolą Ubuntu 12.04 64bit. t1, t2, t3 są połączone za pomocą przełącznika 1 GB / s, t4 jest podłączony do t3 za pomocą dodatkowego interfejsu. Więc t3 symuluje zaporę ogniową, t4 jest celem, t1, t2 grają atakujących generujących burzę pakietów (192.168.4.199 to t4):
hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80
t4 zrzuca wszystkie przychodzące pakiety, aby uniknąć pomyłek z bramami, problemów z wydajnością t4 itp. Oglądam statystyki pakietów w iptraf. Skonfigurowałem zaporę (t3) w następujący sposób:
- stock 3.2.0-31-generic # 50-Ubuntu Jądro SMP
- rhash_entries = 33554432 jako parametr jądra
sysctl w następujący sposób:
net.ipv4.ip_forward = 1 net.ipv4.route.gc_elasticity = 2 net.ipv4.route.gc_timeout = 1 net.ipv4.route.gc_interval = 5 net.ipv4.route.gc_min_interval_ms = 500 net.ipv4.route.gc_thresh = 2000000 net.ipv4.route.max_size = 20000000
(Wiele poprawiłem, aby t3 działał, gdy t1 + t2 wysyłają tyle pakietów, ile to możliwe).
Rezultaty tych wysiłków są nieco dziwne:
- t1 + t2 zarządzają wysyłaniem każdego około 200 000 pakietów / s. t4 w najlepszym przypadku widzi w sumie około 200 tys., więc połowa pakietów zostaje utracona.
- t3 jest prawie bezużyteczny na konsoli, chociaż przepływają przez niego pakiety (duża liczba soft-irqs)
- kolektor śmieci pamięci podręcznej trasy nie jest bliski przewidywalności, aw ustawieniu domyślnym jest przytłoczony bardzo małą liczbą pakietów / s (<50 000 pakietów / s)
- aktywacja stanowych reguł iptables powoduje, że szybkość pakietów docierających do t4 spada do około 100 000 pakietów / s, skutecznie tracąc ponad 75% pakietów
I to - oto moja główna obawa - gdy dwie stare maszyny P4 wysyłają tyle pakietów, ile mogą - co oznacza, że prawie każdy w sieci powinien mieć taką możliwość.
Oto moje pytanie: czy przeoczyłem jakiś punkt importu w konfiguracji lub konfiguracji testowej? Czy są jakieś alternatywy dla budowy systemu zapory ogniowej, szczególnie w systemach SMP?