В Linux, использование маршрута к "черной дыре" IP приводит к лучшей производительности, чем падение в iptables?
Во время DDOS-атаки, если мы находим IP-адреса, которые хотим заблокировать, увидим ли мы лучшую производительность при использовании нулевого маршрута в отличие от iptables?
При нулевой маршрутизации мы бы сделали что-то вроде:
ip route add blackhole <ip or range>
В iptables:
/sbin/iptables -A INPUT -s <ip or range> -j DR
Разницы нет? Я бы заподозрил route
будет работать лучше, но я не уверен.
3 ответа
Предполагая, что вы блокируете на основе адреса источника, а не места назначения, выполнение DROP в raw/PREROUTING будет работать хорошо, поскольку вы по существу сможете отбросить пакет до того, как будет принято какое-либо решение о маршрутизации.
Однако помните, что правила iptables по сути являются связным списком, и для оптимальной производительности при блокировке нескольких адресов следует использовать ipset.
С другой стороны, при блокировке по назначению, вероятно, существует небольшая разница между блокировкой в таблице маршрутизации по сравнению с iptables ИСКЛЮЧИТЬ, если исходные IP-адреса подделаны, и в этом случае записи с черным отверстием могут потреблять ресурсы кэша маршрутизации; в этом случае raw/PREROUTING остается предпочтительным.
Ваш исходящий маршрут не будет иметь значения, пока вы не попытаетесь отправить пакет обратно злоумышленнику. К тому времени вы уже понесете большую часть затрат на установку сокетов и, возможно, даже заблокируете поток, ожидая, пока ядро не решит, что у вас нет маршрута к хосту, плюс любая ошибка обработки вашего серверного процесса, когда он приходит к выводу, что есть проблема с сетью.,
iptables или другой брандмауэр позволят вам блокировать входящий трафик и отбрасывать его до того, как он достигнет процесса демона на вашем сервере. Кажется, явно лучше в этом случае использования.
iptables - это стандартный инструмент для блокировки атак ddos. У меня получился огромный список iptables под очень сильной атакой ddos, и он работает очень хорошо. Я бы предпочел iptables.