리눅스 iptables / conntrack 성능 문제


9

실험실에 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 시스템에서 방화벽 시스템을 구축하기위한 대안이 있습니까?


네트워크를 포화 상태로 만드는 것이 가능합니까? 그것은 패킷 손실의 일부를 설명 할 것입니다.
Preston

네트워크가 hp 2848 스위치를 통해 연결된 1Gb / s에 있고 흐름 제어가 켜져 있고 t3의 높은로드 및 라우트 캐시 오버플로가 t3 자체가 약점임을 나타냅니다.
tim

답변:


1

더 이상 라우팅 캐시가없는 Kernel> = 3.6으로 마이그레이션합니다. 문제의 일부를 해결해야합니다.


0

T3에서 로깅 설정은 어떻습니까? 손실 된 패킷이 모두 기록되면 디스크 I / O가 원인 일 수 있습니다.

테스트 환경이므로 T3 로깅을 해제 한 상태에서 테스트를 시도 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.