실험실에 4 대의 컴퓨터가있는 테스트 설정이 있습니다.
- 구형 P4 머신 2 대 (t1, t2)
- Xeon 5420 DP 2.5GHz 8GB RAM 1 개 (t3) Intel e1000 1 개
- 1 Xeon 5420 DP 2.5GHz 8GB RAM (t4) Intel e1000
지난 몇 달 동안 수많은 syn-flood 공격에 물린 후 리눅스 방화벽 성능을 테스트했습니다. 모든 컴퓨터는 Ubuntu 12.04 64 비트를 실행합니다. t1, t2, t3은 1GB / s 스위치를 통해 상호 연결되며 t4는 추가 인터페이스를 통해 t3에 연결됩니다. 따라서 t3은 방화벽을 시뮬레이션하고 t4는 대상이며 t1, t2는 공격자가 패킷 스톰을 생성합니다 (192.168.4.199는 t4).
hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80
t4는 게이트웨이와의 혼동, t4 등의 성능 문제를 피하기 위해 모든 들어오는 패킷을 삭제합니다. iptraf에서 패킷 통계를 봅니다. 방화벽 (t3)을 다음과 같이 구성했습니다.
- 3.2.0-31 일반 # 50- 우분투 SMP 커널
- 커널 매개 변수로 rhash_entries = 33554432
다음과 같이 sysctl :
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
(t1 + t2가 가능한 많은 패킷을 보낼 때 t3이 계속 실행되도록 많은 것을 조정했습니다).
이 노력의 결과는 다소 이상합니다.
- t1 + t2는 각각 약 200k 패킷을 전송합니다. 가장 좋은 경우 t4는 총 200k가되므로 패킷의 절반이 손실됩니다.
- 패킷이 패킷을 통해 흐르지 만 콘솔에서 t3을 거의 사용할 수 없음 (많은 수의 소프트 irq)
- 라우트 캐시 가비지 콜렉터는 예측할 수없는 상태가 아니며 기본 설정에서 매우 적은 패킷 / 초 (<50k 패킷 / s)로 압도됩니다.
- 상태 저장 iptables 규칙을 활성화하면 t4에 도착하는 패킷 속도가 약 100k 패킷 / 초로 떨어지게되어 패킷의 75 % 이상을 효과적으로 잃게됩니다.
그리고 이것은 나의 주요 관심사입니다. 두 개의 오래된 P4 머신이 가능한 한 많은 패킷을 전송합니다. 이는 거의 모든 사람이 이것을 할 수 있어야한다는 것을 의미합니다.
그래서 여기 내 질문에 간다 : 구성이나 테스트 설정에서 가져 오기 및 포인트를 간과 했습니까? 특히 smp 시스템에서 방화벽 시스템을 구축하기위한 대안이 있습니까?