Ar trebui să te uiți ipset
.
De pe site-ul oficial:
Ipset poate fi instrumentul potrivit pentru tine [...] pentru a stoca mai multe adrese IP sau numere de porturi și potrivi cu colecția de către iptables.
[...] (Ipset) poate stoca adrese IP, rețele, numere de porturi (TCP/UDP), adrese MAC, nume de interfețe sau combinații ale acestora într-un mod care asigură viteza fulgerului atunci când se potrivește o intrare cu un set.
Pentru a-l folosi, trebuie să creați un ipset
, adaugă IP-uri
și creați un iptables
regula pentru a se potrivi cu ipset
:
ipset crea lista neagră hash:ip hashsize 1400000
ipset adauga lista neagra <ADRESA IP>
iptables -I INPUT -m set --match-set lista neagră src -j DROP
Un exemplu real de utilizare poate fi găsit Aici. Observați că folosește restaurare ipset
în loc să treci prin fiecare IP
într-o buclă pentru că este mult mai rapid.
Dacă lista dvs. de IP-uri
are suprapuneri, poate doriți să-l preprocesați pentru a le converti intervale de IP
acolo unde este posibil. Aici este un exemplu de instrument pentru a face acest lucru. Nu vă va aduce performanțe mai bune ipset
dar va reduce dimensiunea listei dvs.
Pe o notă laterală, din punct de vedere al performanțelor, este foarte rapid și scala fără penalizare. Dupa cum Cloudflare
mențiunea de pe blog, există abordări mai rapide de nivel scăzut; dar este mult mai complex și adaugă doar câțiva octeți pe secundă, ceea ce, dacă nu ai amploarea și ambiția unui furnizor de cloud, nu merită efortul.