Корень проблемы: нужно в ipfw (или другой FreeBSD firewall) добавить около 16000 правил, например
Код: Выделить всё
ipfw add 1000 allow ip from 192.168.0.1 to any
ipfw add 1001 allow ip from 192.168.0.2 to any
ipfw add 1002 deny ip from 192.168.0.3 to any
Если добавить такое на ненагруженый сервер то сразу съедается 5% CPU, но если его пригрузить трафиком то CPU ложится уже при 2000 правилах.
Вот я и ломаю голову как сделать, напимер, если сеть 192.168.0.0/24 то перейти к последовательному перебору правил по этой подсети, если нет то проверяем подходит ли ip под следующую подсеть.