DU hast da auch mal 'was ergänzendes gebastelt.
Aber ja doch. Das war aber bevor es den Filter recidive gab bzw. bevor ich dessen Existenz überhaupt bemerkte.
Ich ärgere mich nur wieder mal darüber, dass die OS-Basis wichtige und einfache Dinge kann, die die Hochsprache (PHP) dann wegoperiert.
Nun ja. fail2ban behandelt die IP einfach als String und rechnet auch nicht mit irgendwelchen Netzwerkmasken herum.
Der Tipp mit
sprintf( '%u', ip2long( $ip ) );
steht in der Dokumention von ip2long in beiden Beispielen drin. Und es wird auch erläutert warum das verwendet werden soll.