Zur Navigation

mod_rewrite Frage - IPv6 Bereich-Sperre

1 korona

Hallo,
ich habe mich hier angemeldet, da ich trotz intensiver Suche im Internet keine Lösung finden konnte. Vielleicht bin ich ja hier richtig. Meine Frage geht ja schon aus dem Titel hervor, Details dazu folgend:

Eine IP-Adresse (z. B. 2a00:d70:0:b::1:2d) befindet sich im Range 2a00:d70::/48
Ich möchte den ganzen Range sperren.

http://www.webdnstools.com/dnstools/cidrip liefert mir für den Range 2a00:d70::/48 das Ergebnis:
First IP Address: 2a00:0d70:0000:0000:0000:0000:0000:0000
Last IP Address: 2a00:0d70:0000:ffff:ffff:ffff:ffff:ffff
IP Mask Address: ffff:ffff:ffff:0000:0000:0000:0000:0000

Da es in der Beispiel-IP mehrere Böcke mit Null gibt (3., 5. und 6. Block), kann ja die Null im dritten Block nicht weggelassen werden. Wenn es aber bei einer anderen IP bis auf den 3. Block keine weiteren Blöcke mit Null gibt, könnte ja die Null im 3. Block entfallen, oder? Das heißt also für den 3. Block, kein Zeichen oder Null. Wie sieht kein Zeichen aus?
Deshalb wäre meine Idee folgendes, weiß aber nicht, ob das so richtig wäre und wie ich es testen könnte.
   RewriteCond %{REMOTE_ADDR} ^2a00:d70:[0:] [OR]

Vielleicht kann mir ja in diesem Forum jemand helfen. Vielen Dank im voraus.

30.05.2017 12:33

2 Jörg Kruse

   RewriteCond %{REMOTE_ADDR} ^2a00:d70:[0:] [OR]

Das sollte bei verkürzten IP-Adressen funktionieren.

Alternativ mit optionaler Null vor dem nächsten Doppelpunkt:

   RewriteCond %{REMOTE_ADDR} ^2a00:d70:0?: [OR]

und wie ich es testen könnte.

Den Regex könnte man auch separat über den URI-Pfad testen:

RewriteCond %{REQUEST_URI} ^/2a00:d70:[0:]                           
RewriteRule ^ test.php

... und dann schauen, ob bei einem Aufruf von http://example.com/2a00:d70:0:b::1:2d etc. die test.php angezeigt wird :)

zur Sicherheit würde ich aber auch noch über das Logfile kontrollieren, ob die eigentlichen Regeln erfolgreich ausgeführt wurden

30.05.2017 13:37 | geändert: 30.05.2017 13:42

3 korona

Hallo Jörg,
Danke für Deinen ausführlichen Beitrag, er ist wirklich gut verständlich.

Die Test-Möglichkeit (da wäre ich jetzt nicht drauf gekommen) ist einfach super. Ich habe meine und Deine Zeile getestet, und beide funktionieren. Die test.php wird mit diversen IP-Adressen, die der Vorgabe entsprechen, angezeigt. Stimmen die Adressen nicht mit der Vorgabe überein, wird sie auch nicht anzeigt. Die Log-Zeilen bestätigen die Funktion. Da die Zeile von Dir eleganter ist, werde ich diese dann auch nutzen.

Dieses Forum ist spitze, und ich habe wieder dazu gelernt, vielen Dank.

30.05.2017 15:35

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]