[Sysadmins] Борьба с synflood

Michael A. Kangin mak на complife.ru
Ср Дек 12 02:33:02 MSK 2012


Добрый день.

хочется запинать систему, которая бы выдерживала как можно большее PPS 
синфлуда без вреда для предоставляемых сервисов.

Есть тестовый сервер с двумя ксеончиками, и сетевухой Intel Corporation 
82580 Gigabit Network Connection (драйвер igb).

Запускаем на нём в качестве жертвы апача с тестовым cgi, который 
рассказывает текущее время - так проверяем отзывчивость сервиса.

атакуем так с другого сервера:
hping3 <ip> -p 80 -S --rand-source --flood
Это даёт нам порядка 380K pps исходящего.

А атакуемый сервер (p6, std-def) принимает только порядка 75K, остальное 
дропает. Ну и сервис отвечает более-менее уверенно только до 150K.

Если поставить 3.4.21-un-def-alt0.M60P.1, число принимаемых пакетов 
немного увеличивается, до 110К. Причём, количество принимаемых пакетов 
снижается с ростом нагрузки - так, при атаке под 500К принимается уже 
только 90K.

Немного лучше себя ведёт Centos6 - она вполне принимает до 140K, и 
сохраняет отзывчивость сервиса до 200К с атакующей стороны.

На атакуемой машинке в htop'е светятся красным все ядра, отданные под 
прерывания сетевухи и довольно высокий LA.


Интриги добавляет тот факт, что Линупс сосёт.

Если на этот сервер поставить FreeBSD9, то она принимает под 450К без 
всякого ухудшения сервиса. И живёт со скрипом вплоть до 750К с атакующей 
машины, больше я с неё не смог выжать.

Собственно, что сделать можно под Линуксом?
Все настройки в целом по умолчанию (кроме раскидывания прерываний по 
ядрам процессора). Я пробовал много шаманств - и всякие там sysсtl 
крутить, и длины очередей в ifconfig и ethtool, и параметры igb. Все 
бесполезно (да и раскидывание прерываний, подозреваю, тоже).

Была идея, что 2-4 сетевухи в бондинге будут лучше справляться. Авотфиг. 
Хуже.

-- 
Michael A. Kangin


Подробная информация о списке рассылки Sysadmins