IP-Adressen mit Netzwerkmaske speichern

IP-Adressen mit Netzwerkmaske speichern

am 23.01.2005 19:47:56 von Andre Meiske

Hallo 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)

Re: IP-Adressen mit Netzwerkmaske speichern

am 23.01.2005 22:10:45 von Wolfgang Kueter

Andre Meiske wrote:

> Hallo Gruppe
>
> Die geplante Umstellung einiger Rechner auf IPv6 bereitet mir einige
> Kopfschmerzen [...]

> Mein Problem ist nun: IPv6 ist 128 bit breit - wie stellt man das am
> effizientesten um?

Man verwendetPostgreSQL, das kennt naemlich nativ Datentypen fuer
Netzwerkadressen:
http://borg.postgresql.org/docs/8.0/static/datatype-net-type s.html

Wolfgang