+49 (0)6723 – 9983769

DynDNS via PHP Script auf InternetX DNS

Hallo!

Für alle, die wie ich eine Fritz!Box, einen eigenen Rootserver und die Domains bei InternetX haben, hier ein kleine Anleitung, wie man einen eigenen DynDNS Dienst erstellt:

1. PHP-Script:
Auf dem Rootserver in einer vorhandenen Domain einen neuen Ordner (z.B. dyndns) anlegen und folgendes PHP Script mit namen „dyn.php“ erstellen:

<?
// DynDNS über Fritzbox
//
// Passwort und Port nach belieben anpassen.
//
// In der Fritzbox das Script z.b. so aufrufen:
// Update Url: www.MeineDomain.de/ordner/filename.php?pass=Passwort&meineip=<ipaddr>
// Domainname: MeineDomain.de/
//
// Dieses Beispiel leitet zu der „IP:8080/cgi-bin/filemanager/“ weiter…
$pwort = ‚Password‚; // Hier sollte man sein persšnliches Passwort fŸr die Erneuerung der IP eintragen.
$autodns_pwd = geheimespasswort‘;  //Passwort für die Anmeldung an AUTODNS3
$port = “; // Diese legt nur den „Port“ und evtl Parameter fest.Kann auch leer bleiben
$dyntxt = „homeIP.txt“;
$pworttest = $_GET[„pass“];
$IP = $_GET[„meineip“];
function requestCurl( $data ) {
$ch = curl_init( HOST );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
if( !$data = curl_exec( $ch )) {
echo ‚Curl execution error.‘, curl_error( $ch ) .“\n“;
return FALSE;
}
curl_close( $ch );
return $data;
}
if (file_exists($dyntxt)){if($pworttest==$pwort) {
$a = fopen(„$dyntxt“, „w“);
$dynamicip = $_SERVER[„REMOTE_ADDR“];
fwrite($a, $IP);
fclose($a);
define( ‚HOST‘, ‚https://gateway.autodns.com‘ );
define( ‚XML_FILE‘, ‚request.xml‘ );
$xml = preg_replace( ‚/TRANSFERIP/‘, $IP, implode( „“, file(XML_FILE) ) );
$xml = preg_replace( ‚/AUTODNSPW/‘, $autodns_pwd, $xml);
header( ‚Content-Type: text/xml‘ );
echo requestCurl( $xml );
$empfaenger = „user@domain.de„;
$betreff = „DynDNS Update erfolgt!“;
$from = „From: Vorname Name <logcheck@srv1.ph-internet.de>“;
$text = „Die IP Adresse wurde geaendert und lautet: $IP“;
mail($empfaenger, $betreff, $text, $from);
} else { $a = fopen(„$dyntxt“, „r+“);
$dynamicip = fread($a,filesize($dyntxt));
fclose($a);
$url=“http://“.$dynamicip.““.$port;
header(„Location: $url“);} }
?>

Die ROT markierten Werte anpassen, dies ist das später beim Aufruf von der Fritz!Box verwendete Passwort, das Passwort zur Anmeldung an AUtodns3 sowie die Infos für die Mailbenachrichtigung, dann bekommt ihr beim Wechsel der IP eine Mail zugeschickt. Im gleichen Verzeichnis die Datei „homeIP.txt“ anlegen und schreibbar machen. Diese dient als Zwischenspeicher für die IP und kann auch von anderen Diensten dann verwendet werden (falls gewünscht)

2. Subdomain anlegen

Eine Subdomain im Autodns für eure Domain erstellen (hier im Beispiel: dyndns.domain.de). Dabei möglichst kleinen TTL Wert nehmen (600) und irgendeine beliebige IP setzen (diese wird später vom Script eh überschrieben):

3. XML Datei anlegen

InternetX bietet die Möglichkeit, DNS- bzw. Zoneneinträge per XML Schnittstelle zu ändern. Anleitung für mögliche Definitionen findet ihr im Kapitel 8 hier. Die Interaktion passiert hier am besten über den in Kapitel 1.3.2 beschriebenen Weg via PHP (wie er auch im o.a. PHP Script verwendet wird)

Die XML-Definitionsdatei für den DNS Update im dyndns-Verzeichnis des Rootserversmit dem Namen „request.xml“ anlegen und schreibbar machen.  

Anbei das Beispiel der Definitionsdatei für meine Domain (anonymisiert), die roten Werte sind entsprechend den Login Informationen für Autodns zu ersetzen. Im grün markierten Abschnitt liegt dann die Logik – hier nämlich nicht (!!!) die IP eintragen sondern die Variable TRANSFERIP:

<?xml version="1.0" encoding="utf-8"?> 
<request>
  <auth>
    <user>Heck</user>
    <password>AUTODNSPW</password>
    <context>4</context>
  </auth>
  <task>
    <code>0202001</code>
    <default>
      <search_and_replace>
        <search>SUCHE</search>
       <replace>TRANSFERIP</replace>
      </search_and_replace>    
</default>
    <zone>
      <name>peter-heck.de</name>
      <system_ns>a.ns14.net</system_ns>
    </zone>
  </task>
</request>

4. Fritz!Box Konfigurieren

Jetzt fehlt nur noch der Aufruf in der Fritz!Box. Dazu im Menü „Internet => Freigaben => Dynamic DNS folgendes eintragen:

  • Dynamic DNS Anbieter: Benutzerdefiniert
  • Update URL: http://www.domain.de/dyndns/dyn.php?pass=Password&meineip=<ipaddr>
  • Domainname: dyndns.domain.de

Hierbei (rot markiert) den Domainnamen in der URL sowie das Passwort (wie in der PHP Datei) entsprechend ändern. Leider darf wohl Nutzername und Kennwort nicht leer bleiben, ich habe dort jeweils ein Leerzeichen reingemacht. Abspeichern.

Einmal neu verbinden und testen – sollte dann eigentlich wie beschrieben funktionieren! Das Heimnetz ist dann via dyndns.domain.de zu ereichen.

Viel Spaß damit!

Ciao Peter

Weitere Blog-Posts

Ein Jahr im Rheingau

Am 26.10.2020 sind wir in den Rheingau gezogen! Vorgeschichte: Nachdem klar war, dass ich zum 01.01.2021 in den Vorruhestand gehen werde, trat der Vorteil der

Weiterlesen »

Neue Homepage

Nach einigen Jahren war es mal Zeit, die Homepage zu aktualisieren und dabei habe ich auch gleich den bisherigen Blog (ph-blog.de) hier mit integriert. Zusätzlich

Weiterlesen »

Neuer Weinkeller

Mit dem Umzug in die Penthousewohnung stellte sich die Frage, wohin mit dem vielen Wein? Klar war, dass der Wein nicht in den 9 qm

Weiterlesen »