Mi sono imbattuto in una situazione in cui un client deve inserire nella blacklist un insieme di poco meno di 1 milione di singoli indirizzi IP (senza subnet) e le prestazioni della rete sono un problema. Mentre suppongo che le regole di IPTables abbiano meno impatto sulle prestazioni rispetto alle route, si tratta solo di congetture.
Qualcuno ha prove concrete o altre giustificazioni per favorire le IPTables o il routing null come soluzione per la lista nera di lunghi elenchi di indirizzi IP? In questo caso, tutto è automatizzato, quindi la facilità d'uso non è davvero un problema.
MODIFICA 26-Nov-11
Dopo alcuni test e sviluppi, sembra che nessuna di queste opzioni sia praticabile. Sembra che entrambe le ricerche di route e iptables eseguano ricerche lineari attraverso il set di regole e impieghino troppo tempo per elaborare queste regole. Su hardware moderno, l'inserimento di elementi 1M in una lista nera di iptables rallenta il server a circa 2 dozzine di pacchetti al secondo. Quindi IPTables e route null sono fuori.
ipset
, come raccomandato da Jimmy Hedman, sarebbe fantastico, tranne per il fatto che non ti consente di tracciare più di 65536 indirizzi in un set, quindi non posso nemmeno provare a usarlo a meno che qualcuno non abbia idee.
Apparentemente l'unica soluzione per bloccare così tanti IP è fare una ricerca indicizzata nel livello dell'applicazione. Non è così?
Maggiori informazioni:
Il caso di utilizzo in questo caso sta impedendo a un elenco di indirizzi IP di "autori di reati noti" di accedere al contenuto statico su un server Web. FWIW, fare il blocco attraverso Apache Deny from
è altrettanto lento (se non di più) in quanto esegue anche una scansione lineare.
Cordiali saluti: La soluzione di lavoro finale era usare il mod_rewrite di apache in congiunzione con una mappa berkeley DB per fare ricerche contro la lista nera. La natura indicizzata dei DB berkeley ha permesso all'elenco di scalare con le prestazioni O (log N).