Signatur
Beschreibung
geoip_asnum_by_name() ermittelt anhand der GeoIP-Datenbank die Autonomous System Number (ASN) sowie den zugehörigen Organisationsnamen für einen übergebenen Hostnamen oder eine IPv4-Adresse. Eine ASN ist eine weltweit eindeutige Kennung, die einem Netzwerkbetreiber (z. B. einem Internet-Provider oder einer großen Organisation) zugewiesen wird und zur Steuerung des Border Gateway Protocol (BGP) dient.
Der Rückgabewert enthält typischerweise sowohl die ASN-Nummer als auch den Namen des Netzwerkbetreibers in einem kombinierten String, zum Beispiel AS3320 Deutsche Telekom AG. Diese Information ist nützlich, um Netzwerkherkunft zu identifizieren, Traffic-Analysen durchzuführen oder verdächtige Zugriffe anhand ihres Netzwerkursprungs zu klassifizieren.
Die Funktion gehört zur PECL-Erweiterung geoip und erfordert eine entsprechende GeoIP-Datenbank (in der Regel die GeoIPASNum.dat). Ohne diese Datenbank oder wenn keine ASN-Information gefunden wird, gibt die Funktion false zurück und erzeugt eine PHP-Warnung.
Beachte, dass die PECL-GeoIP-Erweiterung auf veralteten Datenbanken basiert und für moderne Anwendungen oft durch neuere Bibliotheken wie MaxMind GeoIP2 oder GeoLite2 ersetzt wird, die aktuellere Daten und bessere API-Unterstützung bieten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $hostname Pflicht | string | Der Hostname oder die IPv4-Adresse (als String), für den bzw. die die ASN ermittelt werden soll. Wird ein Hostname übergeben, erfolgt intern eine DNS-Auflösung zu einer IP-Adresse. |
Rückgabewert
AS3320 Deutsche Telekom AG). Wenn keine Informationen gefunden werden oder die benötigte GeoIP-Datenbank fehlt, wird false zurückgegeben und eine PHP-Warnung ausgegeben.Beispiele
ASN für eine IP-Adresse abfragen
<?php
// ASN für die IP-Adresse von Google's DNS-Server ermitteln
$asn = geoip_asnum_by_name('8.8.8.8');
if ($asn !== false) {
echo 'ASN: ' . $asn . PHP_EOL;
} else {
echo 'Keine ASN-Information gefunden.' . PHP_EOL;
}
ASN-basierte Zugriffskontrolle
<?php
// Beispiel: Zugriff von bestimmten Netzwerken (ASNs) protokollieren
$clientIp = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
$asn = geoip_asnum_by_name($clientIp);
if ($asn !== false) {
// Prüfen ob der Besucher aus einem bekannten Hosting-Netzwerk kommt
$suspiciousAsns = ['AS14061', 'AS16509', 'AS8075']; // DigitalOcean, Amazon, Microsoft
foreach ($suspiciousAsns as $suspAsn) {
if (str_starts_with($asn, $suspAsn)) {
error_log('Zugriff von Cloud-Netzwerk: ' . $asn . ' - IP: ' . $clientIp);
break;
}
}
echo 'Ihr Netzwerk: ' . htmlspecialchars($asn);
} else {
echo 'ASN konnte nicht ermittelt werden.';
}
// Wichtig · Fallstricke
Veraltete Erweiterung: Die PECL-geoip-Erweiterung befindet sich seit Jahren nicht mehr in aktiver Entwicklung. Für produktive Anwendungen wird empfohlen, auf MaxMind GeoIP2 mit aktuellen GeoLite2-Datenbanken umzusteigen.
Datenbankpflege: Die Genauigkeit der Ergebnisse hängt stark vom Aktualitätsstand der GeoIPASNum.dat-Datenbank ab. Veraltete Datenbanken können falsche oder fehlende ASN-Informationen liefern.
DNS-Auflösung: Wird ein Hostname statt einer IP-Adresse übergeben, führt die Funktion intern eine DNS-Auflösung durch. Dies kann zu Latenzen führen und schlägt fehl, wenn der Hostname nicht auflösbar ist.
Sicherheit: Nutze ASN-Informationen niemals als alleiniges Sicherheitsmerkmal, da ASNs delegiert oder gefälscht werden können. Behandle Benutzereingaben stets mit htmlspecialchars() vor der Ausgabe.