Dynamische IP auf einem externen Webserver protokollieren

Forum: LANCOM FAQ-Bereich

Moderator: Lancom-Systems Moderatoren

Antworten
Benutzeravatar
LoUiS
Site Admin
Site Admin
Beiträge: 5031
Registriert: 07 Nov 2004, 18:29
Wohnort: Aix la Chapelle

Dynamische IP auf einem externen Webserver protokollieren

Beitrag von LoUiS »

Vielen Dank an OMD fuer diesen Beitrag in der FAQ!

Dynamische IP auf einem externen Webserver protokollieren

Da LANCOM-Router eine Möglichkeit zum Anstoßen von http-get-Requests mitbringen, läßt sich damit recht einfach ein Logfile auf einem Webserver-Konto führen. Dies ist hilfreich, um IPs bei dynamischer Adressvergabe festzuhalten.

Zwei Varianten sind möglich: zeitgesteuerte Protokollierung und ereignisbasierte Protokollierung


I) Zeitgesteuert

In einem vorgegebenen Intervall (z.B. alle 15 Minuten) wird das Protokollscript auf dem Webserver aufgerufen und so auf dem Webserver ein Protokolleintrag erzeugt, der den Zugriffszeitpunkt und die dabei verwendete IP enthält.

Ein Eintrag wird routerseitig in der Cron-Tabelle erstellt ( LANconfig / Datum/Zeit / Cron-Tabelle ... / Hinzufuegen ... ):

- Eintrag aktiv: ja ;)
- Echtzeit: ja
- Minuten: /15 (d.h. alle 15 Minuten, bzw. je nach Wunsch)
- Felder Stunden bis Monate bleiben leer, jedenfalls sofern das Abfrageintervall kleiner als 1h sein soll
- Befehle: http://www.webserver0815.de/meinverzeic ... script.php (bspw.)

Wesentlich ist die "Befehle"-Zeile. Dies ist die URL des Scriptes, welches regelmäßig per http aufgerufen wird. Der genaue Aufruf ist abhängig von der Implementierung eines solchen Scripts, und natürlich vom Webserver, auf dem es liegt.

(Anmerkung: Die Möglichkeit der Verwendung einer http-Adresse als Befehl in der Cron-Tabelle ist nicht dokumentiert und könnte sich ggf ändern.)


II) Ereignisbasiert

Das Protokollscript kann auch genau dann aufgerufen werden, wenn eine neue Internetverbindung aufgebaut wurde (und somit der Router eine neue IP erhalten hat).

Ein Eintrag wird routerseitig in der Aktions-Tabelle erstellt ( LANconfig / Kommunikation / Aktions-Tabelle ... / Hinzufuegen ... ):

- Name: frei wählbar, z.B. IP-PROTOKOLLIERUNG
- Gegenstelle: die konfigurierte InternetVerbindung
- Sperrzeit: 0
- Verbindungs-Ereignis: Aufbau
- Aktion: entspricht dem "Befehle"-Eintrag in der Cron-Tabelle, s.o.
- Ergebnis-Auswertung: (nichts, hier wird nichts ausgewertet)


Zeit- oder ereignisgesteuerte Protokollierung?

Beide Varianten haben Vorzüge. Mit der Cron-Tabellen-Methode werden kontinuierlich Einträge in die Protokolldatei geschrieben. D.h. im Falle des Ausfalls der Internetanbindung ist ersichtlich, in welchem Zeitraum keine Internetverbindung bestand. Die Aktions-Tabelle hingegen aktualisiert die IP genau dann, wenn diese sich ändert. Damit ist im Protokoll stets die aktuelle IP ersichtlich.
Um beide Vorzüge zu nutzen, lassen sich Einträge in Aktionstabelle und Crontabelle kombinieren.



Wie sieht ein auf dem Webserver zu hinterlegendes Protokollierungsscript aus?

Die Funktion ist überschaubar: Bei jedem Zugriff wird an eine Protokolldatei (Textdatei) eine Zeile angehängt, die den Zugriffszeitpunkt und die IP des Routers enthält. Die Router-IP (bzw. die IP des Script-Aufrufers) kann das Script vom Webserver abfragen - der Router braucht sie nicht gezielt übergeben.

In PHP erfüllen folgende Zeilen (o.ä.) diese Aufgabe:

Code: Alles auswählen

<?php

$logdatei = 'accesslog.txt';
$zeitstempel = date('r');

$remote_ip = $_SERVER['REMOTE_ADDR'];
$eintrag = "$zeitstempel\t$remote_ip\n";

$file = fopen($logdatei, 'a');
if ($file==FALSE) {
	die('Fehler beim Oeffnen der Logdatei ' . $logdatei);
}
$schreibstatus = fwrite($file, $eintrag);
if ($schreibstatus==FALSE) {
	die('Fehler beim Schreiben in die Logdatei ' . $logdatei);
}
fclose($file);

?>
Ergebnis:

Code: Alles auswählen

Sun, 09 Oct 2005 22:13:19 +0200	84.174.128.126
Sun, 09 Oct 2005 22:14:03 +0200	84.174.128.126
Sun, 09 Oct 2005 22:14:06 +0200	84.174.128.126
Es empfiehlt sich das Verzeichnis auf dem Webserver, welches das Script und Logfile enthält, mit einem Passwort zu schützen. Außerdem ist zu beachten, dass die Logdatei in der Größe beliebig anwächst.


iplog.php
Es sei auf eine etwas verspieltere Variante des Protokollierungsscripts (iplog.php) hingewiesen. Sie unterstützt anhand einer beim Aufruf übergebenen ID (je Gerät oder Ereignis) das Führen mehrerer Protokolle und bietet darüber sowie über die jeweils letzten IPs eine Übersicht:

http://omd.om.funpic.de/ (Demo zum Anclicken und Ausprobieren sowie Download)


Protokollierung von VPN-Verbindungen
Noch ein Hinweis: Da VPN-Verbindungen auf dem LANCOM-Router wie Internetverbindungen eine "Gegenstelle" darstellen, läßt sich auch hier ereignisbasiert über die Aktions-Tabelle protokollieren. In Verbindung mit oben genanntem iplog.php-Script und jeweils einer eigenen ID je VPN-Gegenstelle (z.B. "lancom1-vpnclient1-connect") läßt sich so ein rudimentäres Protokoll über den Verbindungsaufbau mit Gegenstellen/Clients führen.


Ciao
LoUiS
Dr.House hat geschrieben:Dr. House: Du bist geheilt. Steh auf und wandle.
Patient: Sind Sie geisteskrank?
Dr. House: In der Bibel sagen die Leute schlicht "Ja, Herr" und verfallen dann ins Lobpreisen.
Antworten