FritzBox Multi-Dienst Update

Anmerkung

Dieser Artikel ist veraltet und wird nicht weiter gepflegt. Durch den flächendeckenden Einsatz von IPv6 sollte diese Funktion zwischenzeitlich nicht mehr benötigt werden.

Die AVM FritzBox erlaubt die Verwendung diverses DynDNS Dienste und in den neueren Modellen auch die Benutzung von IPv6-Tunnelbrokern. Wenn man hier auf eine native Anbindung durch den Provider oder Sixxs zurückgreifen kann, so hat man keine Probleme, da die Box alle Einstellungen über eine schöne Maske unterstützt.

Verwendet man allerdings einen anderen Tunnelbroker (z. B. wie ich Hurricane Electric), so wird die Aktualisierung bei einer wechselnden IP-Adresse schon schwieriger. Aber auch hier ist es möglich, den Dienst zu verwenden. Das einzige was man benötigt, ist ein PHP fähiger und per Internet erreichbarer Webspace.

Der Trick ist, die Aktualisierung der Ganzen Dienste selbst in einem Skript zu übernehmen. Die meisten Anbieter erlauben dies per simplen http-Request. Die FritzBox selbst erlaubt das starten des Skriptes als benutzerdefinierten DynDNS Client und erlaubt hierüber auch die Übergabe der neuen, dynamischen IP-Adresse.

Mein Beispiel hier basiert auf einen DynDNS-Zugang von no-ip.com und einen IPv6-Tunnel von Hurricane Electric. Selbstverständlich kann man auch andere Anbieter verwenden, indem man das Skript entsprechend modifiziert. Diese Anleitung soll daher eher als technisches Beispiel dienen.

Erstellung des Update Skripts

Das folgende Skript ist das Kernstück der Aktualisierung. Es ruft die entsprechenden http-Aufrufe der Dienstanbieter mit den entsprechenden Parametern auf. Man kann das Skript auch im Browser durch Übergabe der notwendigen Parameter testen. Zu diesen Zweck gibt das Skript die Inhalte aus.

Um den Missbrauch zu verhindern, wird ein zufälliger Benutzer und Passwort angegeben. Diese Informationen benötigen wir später in der FritzBox.

Noch ein Hinweis zum Benutzer bei Hurricane Electric. Im Januar 2015 hat sich hier die Schnittstelle für das Update geändert (danke an Markus Schwarz für den Hinweis). Auch wenn in der Dokumentation von HE steht, dass die alten Parameter ihre Gültigkeit behalten, so ist dies leider nicht der Fall. Das Skript muss also angepasst werden!

Das unten aufgeführte Skript berücksichtigt jetzt diese Änderung. Als Loginname kommt jetzt der Benutzername zum Einsatz, welchen man auch auf der tunnelbroker.net Seite verwendet. Für das Passwort gibt es zwei Möglichkeiten. Wenn für den Tunnel ein sog. “Update Key” gesetzt ist, so muss man diesen verwenden. Bei neuen Tunnels ist dies automatisch der Fall. Ansonsten kann man diesen frei in der Weboberfläche unter “Advanced” vergeben. Ansonsten nimmt man wie bisher den md5-Hash des Passwortes, den man auch für den Login auf der HE Webseite verwendet.

<?php
// Zugangsdaten
$user = 'kryptischerUser';
$passwort = 'kryptischesPasswort';

$dyn_user = 'no-ip.com-User';
$dyn_pw = 'no-ip.com-Passwort';

$tb_user = 'HE-Login-Name';
$tb_pass = 'Tunnel-Update-Key';
// $tb_pass = md5('HE-Passwort'); // Hurricane Electric verlangt ein MD5 - zur höheren Sicherheit direkt verschlüsselt ablegen
$tb_tunnel = '12345'; // Tunnel ID

if($_GET['user'] == $user && $_GET['pass'] == $passwort) {

  echo("<p>IPv4: ".$_GET['address']."</p>");

  // DynDNS
  $filestream = fopen("http://".$dyn_user.":".$dyn_pw."@dynupdate.no-ip.com/nic/update?hostname=".$_GET['hostname']."&myip=".$_GET['address'], "r");
  echo("<p>DynDNS Rsp: ");
  while(!feof($filestream)) {
    $buffer = fgets($filestream, 4096);
    echo $buffer;
  }
  echo("</p>");
  fclose($filestream);

  // IPv6
  $filestream = fopen("https://".$tb_user.":".$tb_pass."@ipv4.tunnelbroker.net/ipv4_end.php?ip=".$_GET['address']."&tid=".$tb_tunnel, "r");
  echo("<p>Tunnelbroker Rsp: ");
  while(!feof($filestream)) {
    $buffer = fgets($filestream, 4096);
    echo $buffer;
  }
  echo("</p>");
  fclose($filestream);
} else {
  echo('Zugangsdaten falsch');
}
?>

Dieses Skript muss auf einen öffentlich erreichbaren Webserver abgelegt werden. Wenn man eine eigene Homepage besitzt, so kann man das Skript gut dort platzieren.

Einstellung der FritzBox

Als Nächstes muss die FritzBox noch konfiguriert werden. Der HE Tunnel wird einfach in den IPv6 Einstellungen (Internet - Zugangsdaten - IPv6) unter “6in4” konfiguriert. Die Einstellungen können direkt von der Hurricane Electric Seite übernommen werden.

  • IPv4-Adresse des Tunnelendpunktes: Server IPv4 Address
  • IPv6-Adresse des Tunnelendpunktes: IPv6-Adresse des Tunnelendpunktes (nur die IPv6-Adresse ohne Subnetz!)
  • Lokale IPv6-Adresse: Client IPv6 Address (nur die IPv6-Adresse ohne Subnetz!)
  • IPv6-Präfix: Routed /64 (wer ein großes Netz hat, kann auch das Routed /48 verwenden, aber eigentlich ist das übertrieben)

Mit diesen Einstellungen ist das Subnetz schon einmal der FritzBox zugewiesen. Jetzt müssen wir nur noch den DynDNS Dienst zuweisen.

Unter Internet - Freigaben - Dynamic DNS kann der DynDNS konfiguriert werden. Dieser muss auf “Benutzerdefiniert” eingestellt werden.

Hierbei müssen die Einstellungen wie folgt ausgefüllt werden:

  • Update-URL: Pfad zu unserem Skript inkl. entsprechender Parameter (z. B. www.meine-domain.tld/dynamic_update.php?user=&pass=&address=&hostname=)
  • Domainname: der DynDNS-Hostname (hier der no-ip.com Host)
  • Benutzername: der kryptische Benutzer, den wir im Skript hinterlegt haben
  • Kennwort(-bestätigung): das kryptische Passwort, welches im Skript hinterlegt wurde

Die Angaben in den spitzen Klammern in der Update-URL werden später von der FritzBox automatisch ersetzt. Diese verwenden wir auch in dem oben aufgeführten Skript.

Wenn alles gespeichert wurde, kann das Ganze getestet werden, indem man sich neu mit dem Internet verbindet (Internet - Online-Monitor, Schaltfläche “Neu verbinden”). In den Weboberflächen von no-ip.com und Hurricane Electric sollten danach die korrekten IP-Adressen stehen. Wer Zugriff auf das Webserverprotokoll hat, kann auch den Aufruf des Skriptes dort sehen. Auch sollte in der FritzBox jetzt eine Verbindung zum IPv6-Netz ersichtlich sein und diese die Adressen per DHCPv6 auf die Clients verteilen.

Kommentare: