Ich bin auf eine Situation gestoßen, in der ein Client einen Satz von knapp 1 Million einzelnen IP-Adressen (keine Subnetze) auf die schwarze Liste setzen muss und die Netzwerkleistung ein Problem darstellt. Ich würde zwar vermuten, dass IPTables-Regeln eine geringere Auswirkung auf die Leistung haben als Routen, aber das ist nur eine Vermutung.
Hat jemand einen soliden Beweis oder eine andere Rechtfertigung für die Bevorzugung von IPTables oder Null-Routing als Lösung für die Sperrung langer Listen von IP-Adressen? In diesem Fall ist alles automatisiert, so dass die Benutzerfreundlichkeit eigentlich kein Problem darstellt.
EDIT 26-Nov-11
Nach einigen Tests und Entwicklungen scheint keine dieser Optionen funktionsfähig zu sein. Es scheint, dass sowohl Routensuchen als auch Iptables den Regelsatz linear durchsuchen und einfach zu lange brauchen, um so viele Regeln zu verarbeiten. Auf moderner Hardware verlangsamt das Speichern von 1 Million Elementen in einer Iptables-Blacklist den Server auf etwa 2 Dutzend Pakete pro Sekunde. IPTables und Null-Routen sind also aus.
ipset
Wie von Jimmy Hedman empfohlen, wäre das großartig, außer dass Sie nicht mehr als 65536 Adressen in einem Set verfolgen können. Daher kann ich nicht einmal versuchen, es zu verwenden, es sei denn, jemand hat irgendwelche Ideen.
Anscheinend ist die einzige Lösung, um diese vielen IPs zu blockieren, eine indizierte Suche in der Anwendungsschicht. Ist das nicht so
Mehr Informationen:
In diesem Fall blockiert der Anwendungsfall den Zugriff einer Liste mit IP-Adressen, die als "bekannte Straftäter" eingestuft wurden, auf statische Inhalte auf einem Webserver. FWIW: Das Blockieren durch Apache Deny from
ist ebenso langsam (wenn nicht sogar langsamer) wie das Ausführen eines linearen Scans.
Zu Ihrer Information: Die endgültige Lösung bestand darin, Apaches mod_rewrite in Verbindung mit einer Berkeley-DB-Map zu verwenden, um Lookups für die Blacklist durchzuführen. Aufgrund der Indizierung der Berkeley-DBs konnte die Liste mit der Leistung O (log N) skaliert werden.