O Netfilter / iptables não é bem dimensionado quando usado com um número maior de regras, uma vez que elas devem ser combinadas sequencialmente. Mas desde o kernel Linux 2.6.36, existe um novo recurso chamado IP sets que ajuda a eliminar tais regras usando técnicas de hashing. Resumidamente, como funciona:
1) crie um conjunto de IP
ipset create set01 hash:net
2) adicione intervalos de IP ao conjunto
ipset add set01 192.168.1.0/24
ipset add set01 192.168.2.0/24
ipset add set01 192.168.3.0/24
ipset add set01 192.168.4.0/24
...
...
3) conecte o conjunto com a regra netfilter / iptables que rejeita qualquer pacote com endereço IP de origem do set01
iptables -A INPUT -m set --match-set set01 src -j REJECT
Como você pode ver, em vez de criar 4 quase as mesmas regras do iptables eu criei um conjunto IP set01, então adicionei alguns intervalos de IP a ele (apenas um exemplo, na verdade, pode haver milhões deles) e finalmente bloqueou-os por regra única iptables. Então, ao invés de manter uma longa lista de regras de iptables similares, crie um conjunto de IPs de acordo com os arquivos de zonas e, em seguida, bloqueie-o em uma única etapa.
Por favor, verifique a página do manual do ipset para mais detalhes.