Start · Sprachen · PHP · Referenz · geoip_asnum_by_name

geoip_asnum_by_name

Funktion

Gibt die Autonomous System Number (ASN) für einen Hostnamen oder eine IP-Adresse zurück.

seit PHP 1.1.0 Kategorie: misc

Signatur

geoip_asnum_by_name(string $hostname): string

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

Typ
string|false
Beschreibung
Gibt einen String zurück, der die ASN-Nummer und den Namen des Netzwerkbetreibers enthält (z. B. 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: AS15169 Google LLC

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.