IP-Adressen mit Netzwerkmaske speichern
am 23.01.2005 19:47:56 von Andre MeiskeHallo Gruppe
Die geplante Umstellung einiger Rechner auf IPv6 bereitet mir einige
Kopfschmerzen....
Für einen PHP-basierten chat habe ich eine Art 'banning' auf IP-Ebene
gebaut, inklusive der Option, ganze Subnetze zu sperren (Angabe von IP
und Netzmaske). Bislang (im IPv4) ist das kein Problem - aus Adresse
und Netzmaske wird die Netzwerk-Adresse berechnet und sowohl
Netzwerk-Adresse als auch Netzmaske mit Hilfe von ip2long verwandelt.
Meine Datenbank (MySQL in diesem Fall - darauf kommt es aber nicht an)
kann nun direkt mit einer Abfrage feststellen, ob in der Ban-Liste ein
Eintrag (oder mehrere) ist, der auf die abzugfragende Adresse passt:
Beispiel:
SELECT reason FROM banlist WHERE (130.149.19.20 & netmask) = network;
Hierbei sind die Felder netmask und network beide vom Typ Unsigned
Integer (4 Byte).
Mein Problem ist nun: IPv6 ist 128 bit breit - wie stellt man das am
effizientesten um? 8 Felder (sowohl für Netzmaske als auch Netzwerk)
mit jeweils 2 Byte (oder auch 4 Felder jeweils mit 4 Byte)? Oder gibt
es da eine effizientere Lösung?
Ad Astra
Andre Meiske
PS: Ja, ich weiss dass die IP keine 'fixe' Identifikation ist, und dass
Bereichssperrungen auch viele falsche trifft - das banning ist auch
eher als 'kurzfristige Erziehungshilfe' zu werten denn als langfristige
Sperre....
--
PGP Fingerprint: 0548 955D C4C2 F3BA E871 47EB 5D7A 0597 A9D5 01BD
It has been said that the world is a strange place. This is not true.
The world is a _very_ strange place. -- The Book of Yor
(Curse of the Shadow Beasts, Christine Morgan)