Uma CPU recente do Core deve ser capaz de lidar com essa multa.
No entanto, ainda não faz mal ver se as regras podem ser otimizadas. Uma coisa que pode ajudar dependendo da distribuição dos endereços IP é dividir as regras em, e. 8 partes:
iptables -N ourtable
iptables -N ourtable-000
iptables -N ourtable-032
iptables -N ourtable-064
iptables -N ourtable-096
iptables -N ourtable-128
iptables -N ourtable-160
iptables -N ourtable-192
iptables -N ourtable-224
iptables -A INPUT -p tcp --dport 12345 -j ourtable
iptables -A ourtable -s 0.0.0.0/3 -j ourtable-000
iptables -A ourtable -s 32.0.0.0/3 -j ourtable-032
iptables -A ourtable -s 64.0.0.0/3 -j ourtable-064
iptables -A ourtable -s 96.0.0.0/3 -j ourtable-096
iptables -A ourtable -s 128.0.0.0/3 -j ourtable-128
iptables -A ourtable -s 160.0.0.0/3 -j ourtable-160
iptables -A ourtable -s 192.0.0.0/3 -j ourtable-192
iptables -A ourtable -s 224.0.0.0/3 -j ourtable-224
iptables -A ourtable-000 -s 1.2.3.4 -j ACCEPT
...
iptables -A ourtable-000 -j DROP
iptables -A ourtable-032 -s 32.1.2.3 -j ACCEPT
...
iptables -A ourtable-032 -j DROP
# etc...
Desta forma, um pacote será verificado contra 625 regras em vez de 5000 (assumindo, claro, uma distribuição uniforme de endereços, o que provavelmente não é o caso; você pode ajustar a divisão de todo o espaço de endereçamento de acordo).
Também presumo que você já tenha sub-redes na sua lista (ou seja, se você precisar permitir 172.18.0.0 até 172.18.0.7, substitua-a por 172.18.0.0/29). Se não, verifique esses intervalos. No Debian eu uso o utilitário netmask
para ver o que uma netmask oferece:
$ $ netmask -r 172.18.0.0/29
172.18.0.0-172.18.0.7 (8)