У нас есть сервер с четырехъядерным процессором AMD Opteron 2378. Он действует как межсетевой экран для нескольких серверов. Меня попросили заблокировать все IP-адреса из Китая.
В отдельной сети у нас есть несколько небольших VPS-машин (256 МБ и 512 МБ). Меня также попросили заблокировать китай на этих VPS.
Я поискал в Интернете и нашел списки, которые требуют 4500 правил блокировки. Мой вопрос: не будет ли проблемой ввести все 4500 правил? Я знаю, что iptables может обрабатывать гораздо больше правил, чем это, меня беспокоит, поскольку это блоки, к которым я не хочу иметь доступ к какому-либо порту, мне нужно поместить эти правила перед любым разрешением. Это означает, что перед прохождением весь законный трафик необходимо сравнить со всеми этими правилами. Станет ли после этого трафик заметно медленнее? Смогут ли эти маленькие VPS обрабатывать такое количество правил для каждого нового пакета (я поставлю установленное разрешение перед блоками)?
Мой вопрос не Сколько правил поддерживает iptables?речь идет о влиянии этих правил на нагрузку и скорость.
Спасибо.
Он будет поддерживать такое количество правил, но вам действительно не захочется проходить цепочку из 4500 правил.
Как отметил @Zoredache, вы также можете двоично разбить цепочки. Если бы вы сделали это идеально, вы могли бы уменьшить количество обходов цепочки до 13.
Самый простой способ сделать это - использовать ipset.
Я использую EL6, который поддерживает это. Очевидно, я не знаю всех китайских сетевых блоков, поэтому я просто забиваю это мусором ..
ipset create china hash:net
ipset add china 1.2.3.0/24
ipset add china 2.4.0.0/16
ipset add china 123.0.0.0/8
ipset add china 145.12.5.0/24
Затем добавьте в IPtables правило, которое будет соответствовать этому набору, и сбросьте трафик.
iptables -I INPUT -m set --match-set china src -j DROP
Это намного эффективнее и быстрее, чем стандартные цепочки правил.