debian:other-debian:own-dyndns-debian

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
debian:other-debian:own-dyndns-debian [2017/03/31 12:13] michaeldebian:other-debian:own-dyndns-debian [2017/08/28 15:14] (current) – ↷ Links adapted because of a move operation michael
Line 1: Line 1:
-====== Eigener DynDNS Dienst ======+====== Eigener DynDNS Dienst einrichten ======
  
 Eine eigene Toplevel Domain die direkt immer auf die IP des Internetanschlusses zuhause zeigt. Quasi der eigene DynDNS-Dienst – ohne die Hilfe von (kostenlosen oder kostenpflichtigen) DynDNS-Providern. Das wärs! Eine eigene Toplevel Domain die direkt immer auf die IP des Internetanschlusses zuhause zeigt. Quasi der eigene DynDNS-Dienst – ohne die Hilfe von (kostenlosen oder kostenpflichtigen) DynDNS-Providern. Das wärs!
Line 15: Line 15:
 ===== Einleitung ===== ===== Einleitung =====
  
-Für jede Domain (die bei Hostpoint registriert wird) braucht man zwei Namensserver welche sagen können welche IP hinter der Domain steckt. Diese Server sind die autoritiven Nameserver. +Für jede Domain (die bei Hostpoint registriert wird) braucht man **zwei Namensserver** welche sagen können welche IP hinter der Domain steckt. Diese Server sind die autoritiven Nameserver. 
-Laut den Vorgaben von Hostpoint, sollten hier die eingetragenen Nameserver nicht genau die gleiche IP-Adresse haben und auch nicht ähnliche Adressen (gleicher Netzbereich).+Laut den Vorgaben von Hostpoint, sollten hier die eingetragenen Nameserver //nicht// genau die gleiche IP-Adresse haben und auch nicht ähnliche Adressen (gleicher Netzbereich). 
 + 
 +FIXME
  
 Da wir nun, unserem root-Server hierfür nicht extra zwei verschiedene IP-Adressen einrichten wollen, nur damit Hostpoint zufrieden ist, brauchen wir also noch einen zweiten Nameserver der nichts anderes macht als die Daten unseres Nameservers zu übernehmen. Da wir nun, unserem root-Server hierfür nicht extra zwei verschiedene IP-Adressen einrichten wollen, nur damit Hostpoint zufrieden ist, brauchen wir also noch einen zweiten Nameserver der nichts anderes macht als die Daten unseres Nameservers zu übernehmen.
-Dies ist der sogenannte **Slave-Nameserver** und man kann diesen bei Hostpoint einfach per Klick erstellen (bzw. einen Eintrag auf dem Nameserver vornehmen.).+Dies ist der sogenannte **Slave-Nameserver**. Diesen kann man bei Hostpoint einfach per Klick erstellen bzw. einfügen und zwar indem man bei den Domain Einstellungen den obersten Nameserver durch seinen eigenen ersetzt. Somit werden die zwei unteren Nameserver (ns2.hostpoint.ch und ns3.hostpoint.chautomatisch zu Slave-Nameservern. 
  
-Für diese Anleitung gehe ich davon aus dass ein frisch installiertes Ubuntu 16.04 als späterer root-Server (meinroot.chzur Verfügung steht und die Domain blackgate.org mir gehört.+Für diese Anleitung gehe ich davon aus dass ein frisch installiertes **Ubuntu 16.04**, dass später als **root-Server ''meinroot.ch''** Konfiguriert wird, einsatzbereit und zur Verfügung steht. Weiter, sollte man bereits im Besitz einer eigenen Domain bei Hostpoint sein. z.B. wie meine -> **Domain ''blackgate.org''**.
  
 ---- ----
Line 28: Line 31:
  
  
-Zuallererst installieren wir auf meinroot.de den DNS-Server bind:+Zuallererst wird auf meinroot.ch den DNS-Server installiert:
  
 <code> <code>
Line 34: Line 37:
 </code> </code>
  
-Bind bekommt eine Zonendatei für meinzuhause.de, diese liegt in /etc/bind/db.meinzuhause.de‘ und sieht wie folgt aus:+Als nächstes, wird in Bind eine neue Zonendatei für blackgate.org erstellt, diese liegt in ''/etc/bind/db.blackgate.org'' und sieht wie folgt aus:
  
 <code> <code>
 $ORIGIN . $ORIGIN .
 $TTL 60; 1 minute $TTL 60; 1 minute
-meinzuhause.de          IN SOA  www.meinroot.de. dn.meinroot.de. ( +blackgate.org          IN SOA  ns.meinroot.ch. dn.meinroot.ch. ( 
-                               2014090711; serial+                               2017033101; serial
                                7200; refresh (2 hours)                                7200; refresh (2 hours)
                                1800; retry (30 minutes)                                1800; retry (30 minutes)
Line 46: Line 49:
                                21600; minimum (6 hours)                                21600; minimum (6 hours)
                                )                                )
-                       NS      ns1.first-ns.de+                       NS      ns.hostpoint.ch
-                       NS      www.meinroot.de+                       NS      ns.meinroot.ch
-                       NS      robotns2.second-ns.de+                       NS      ns2.hostpoint.ch
-                             89.14.9.131 +                             83.150.6.68 
-                       MX      10 mail.meinzuhause.de.meinzuhause.de. +                       MX      10 mail.blackgate.org.blackgate.org
-                       AAAA    2002:590e:2e2e:0:e1e3:60f5:97d:9429 +$ORIGIN blackgate.org
-$ORIGIN meinzuhause.de+mail                    CNAME   blackgate.org
-mail                    CNAME   meinzuhause.de+www                     CNAME   blackgate.org.
-www                     CNAME   meinzuhause.de.+
  
 </code> </code>
  
-Jetzt erzeugen wir einen Update-Key damit wir die Datei programmtechnisch updaten dürfen:+Jetzt erzeugen wir einen Update-Keydamit unser Server die Datei später auch automatisch updaten darf:
  
 <code> <code>
-# /usr/sbin/ddns-confgen -z meinzuhause.de+# /usr/sbin/ddns-confgen -z blackgate.org
 </code> </code>
  
-Diesen Key schreiben wir in die Keydatei /etc/bind/ddns-key.meinzuhause.de.conf:+Diesen Key schreiben wir in die Keydatei "/etc/bind/ddns-key.blackgate.org.conf":
  
 <code> <code>
-key "ddns-key.meinzuhause.de" {+key "ddns-key.blackgate.org" {
        algorithm hmac-sha256;        algorithm hmac-sha256;
        secret "CTQpYK6Dfdsf334fsd08LSY7ApziY3423fds8zw=";        secret "CTQpYK6Dfdsf334fsd08LSY7ApziY3423fds8zw=";
Line 73: Line 75:
 </code> </code>
  
-Das Key-File müssen wir in der bind-Config /etc/bind/named.conf‘ inkludieren:+Das Key-File müssen wir anschliessend in der bind-Config "/etc/bind/named.confinkludieren:
  
 <code> <code>
 // Update-Keyfile // Update-Keyfile
-include "/etc/bind/ddns-key.meinzuhause.de.conf";+include "/etc/bind/ddns-key.blackgate.org.conf";
 </code> </code>
  
-Und den Key nochmal hinterlegen in /etc/bind/named.conf.local:+Dannach wird der Key auch noch in "/etc/bind/named.conf.local" hinterlegt:
  
 <code> <code>
-zone "meinzuhause.de" {+zone "blackgate.org" {
       type master;       type master;
-      file "/etc/bind/db.meinzuhause.de"; +      file "/etc/bind/db.blackgate.org"; 
-       update-policy { grant ddns-key.meinzuhause.de zonesub ANY; };+      update-policy { grant ddns-key.blackgate.org zonesub ANY; };
 }; };
 </code> </code>
  
-Nun müssen wir noch erlauben dass die Hetzner-Nameserver einen Zonentransfer machen dürfen, Datei /etc/bind/named.conf.options‘ eintragen:+Nun muss noch erlaubt werden, dass die Hostpoint-Nameserver überhaupt einen Zonentransfer machen dürfen. Dafürwird in der Datei "/etc/bind/named.conf.options" folgendes eintragen: 
  
 <code> <code>
-// Zonen-Transfer fuer Hetzner Nameserver +// Zonen-Transfer fuer Hostpoint Nameserver 
-allow-transfer { 213.239.242.238;213.133.105.6;193.47.99.3; };+allow-transfer { 217.26.51.254217.26.53.254217.26.48.126; };
 </code> </code>
  
-Jetzt brauchen wir noch ein Script welches von außen das Updaten des DynDNS-Eintrages vornimmt – und (als extrawurst) auch gleich noch einen Eintrag in eine Mysql-Tabelle durchführt+Jetzt brauchen wir noch ein Scriptwelches dann anschliessend von aussen das Updaten des DynDNS-Eintrages vornimmt – und zusätzlich auch gleich noch zu Log-Zwecken einen Eintrag in eine MySQL-Tabelle durchführt:
-Bühne frei für ‚/root/bin/dyndns.sh‘:+
  
-<file bash /root/bin/dyndns.sh>+Dafür gibt es folgendes Skript, welches hier -> ''/root/bin/update_dyndns.sh'' abgelegt wird: 
 + 
 +<file bash /root/bin/update_dyndns.sh>
 #!/bin/bash #!/bin/bash
  
 NS="127.0.0.1" NS="127.0.0.1"
-NSKEY="/etc/bind/ddns-key.meinzuhause.de.conf" +NSKEY="/etc/bind/ddns-key.blackgate.org.conf" 
-TMPFILE="/var/www/html/dyndns.txt" +TMPFILE="/var/www/html/new_dynamic_ip.txt" 
-ZONE="meinzuhause.de"+ZONE="blackgate.org"
 TIMEOUT=60 TIMEOUT=60
  
Line 128: Line 132:
 </file> </file>
  
-Dieses Script holt die aktuelle IP aus der Datei /var/www/html/dyndns.txt‘ und kümmert sich sowohl um das Update des Nameservers, +Dieses Script holt die aktuelle IP aus der **Datei ''/var/www/html/new_dynamic_ip.txt''** und kümmert sich sowohl um das Update des Nameservers, als auch ums weiterleiten der Zonendaten an den Hostpoint-Slave Nameserver. 
-als auch ums weiterleiten der Zonendaten an die Hetzner-Slave Nameserver. + 
-Dieser Cronjob (unter root) ruft das Script minütlich auf:+Diese Shell-Datei, wird dann automatisiert von Zeit zu Zeit, per [[linux:crontab|cronjob]] von root ausgeführt. Zum erstellen, des cronjobs, wird die /etc/crontab Datei editiert und folgender Eintrag eingefügt:
  
 <code> <code>
-                              /root/bin/dyndns.sh > /dev/null 2>&1+        /root/bin/update_dyndns.sh > /dev/null 2>&1
 </code> </code>
  
-Jetzt brauchen wir nur noch ein PHP-Script welches von außen per URL erreichbar ist und die Datei /var/www/html/dyndns.txt‘ mit der übergebenen IP beschreibt, das packen wir unter ‚/var/www/html/dyndns.php‘:+Jetzt wird nur noch ein PHP-Script gebraucht, welches per URL erreichbar ist und die **Datei ''/var/www/html/new_dynamic_ip.txt''** mit der übergebenen IP beschreibt. Dazuwird folgendes PHP Skript gebraucht:
  
-<file php /var/www/html/dyndns.php>+<file php /var/www/html/ip_update.php>
 <?php <?php
  
-$username = "meintollerdnydnsdienst"; +// 
-$pass = "miteinemgeheimenpasswort"; +$username = "michael"; 
-$dyntxt = "/var/www/html/dyndns.txt"; +$pass = "Me1nP4sswort123!"; 
-$db = "dyndnsoettingen";+$dyntxt = "/var/www/html/new_dynamic_ip.txt"; 
 +$db = "dyndns";
  
 if($username == $_GET['username'] && $pass == $_GET['password']) if($username == $_GET['username'] && $pass == $_GET['password'])
Line 152: Line 157:
        fclose($a);        fclose($a);
                
 +       //Dieser Teil mit der Datenbank ist optional und kann (Wenn man es nicht nutzen möchte) bis zur Unteren Markierung auskommentiert werden!
        $mysqli = new mysqli("localhost", $username, $pass, $db);        $mysqli = new mysqli("localhost", $username, $pass, $db);
        if ($mysqli->connect_errno)        if ($mysqli->connect_errno)
Line 164: Line 170:
                
        mysqli_close($mysqli);        mysqli_close($mysqli);
 +       //Bis hier und NICHT WEITER, kann auskommentiert werden!
                
        echo "success";        echo "success";
Line 171: Line 178:
 </file> </file>
  
-Username und Passwort werden nicht nur im Script geprüft um zu checken ob derjenige den Update machen darf, +Der Username und das Passwort werden nun vom Script genutztdas nicht jeder x-beliebige ein IP update veranlassen kann. Weiter werden diese credentials auch gleichzeitig zum anmelden an der MySQL Datenbank genutzt. Es muss also auch der entsprechende MySQL-User und die Tabelle existieren.
-sie werden auch gleich zum anmelden an Mysql genutzt. Es muss also der entsprechende Mysql-Nutzer existieren. +
-Das Tabellenformat ist einfach:+
  
-<code>+**//SQL-Datei zum erstellen der MySQL Struktur://** 
 + 
 +<file sql create_table.sql>
 CREATE TABLE `dyndns` ( CREATE TABLE `dyndns` (
   `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,   `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
Line 182: Line 189:
   `ipv6` varchar(100) CHARACTER SET utf8 NOT NULL   `ipv6` varchar(100) CHARACTER SET utf8 NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-</code>+</file>
  
-Nun müssen wir bei Hetzner einen Slave-DNS Eintrag bestellen, dort tragen wir die IP von meinroot.de ein.+Als nächstes, wird bei **Hostpoint** einen **Slave-DNS** Eintrag bestellt; eingerichtet. Hierbei wird dann die **IP von ''meinroot.ch''** eingetragen.
  
-Bei der Denic hinterlegen wir nun als Nameserver 1 unseren meinroot.de und als Nameserver 2 irgendeinen der Hetzner-Nameserver (ns1.first-ns.derobotns2.second-ns.derobotns3.second-ns.com)+Dannach, hinterlegen wir noch als Nameserver 1 unseren meinroot.ch und als Nameserver 2 irgendeinen der Hostpoint-Nameserver (ns.hostpoint.chns2.hostpoint.chns3.hostpoint.ch)
  
-Nun sollten wir alles schon gut mit dem Aufruf der URL testen und debuggen können. Zum prüfen was die Nameserver gerade als IP für meinzuhause.de rausgeben dienen folgende Befehle:+Nun sollte man auch schon bereits zum ersten mal die URL zum testen aufrufen können. Zum überprüfen, was die Nameserver nun gerade als IP für blackgate.org rausgeben dienen folgende Befehle:
  
 <code> <code>
-# dig @127.0.0.1 meinzuhause.de +# dig @127.0.0.1 blackgate.org 
-# dig @www.meinroot.de meinzuhause.de +# dig @ns.meinroot.ch blackgate.org 
-# dig @ns1.first-ns.de meinzuhause.de +# dig @ns.hostpoint.ch blackgate.org 
-# dig @robotns2.second-ns.de meinzuhause.de+# dig @ns2.hostpoint.ch blackgate.org
 </code> </code>
  
-Die Fritzbox bekommt nun folgende Konfiguration unter DynDNS:+Der EWB- oder Swisscom-Router, bekommt nun folgende Konfiguration unter DynDNS:
  
 <WRAP center round box 100%> <WRAP center round box 100%>
 <code> <code>
 Dynamic DNS-Anbieter: Benutzerdefiniert Dynamic DNS-Anbieter: Benutzerdefiniert
-Update-URL: https://www.meinroot.de/dyndns.php?username=<username>&password=<pass>&domain=<domain>&ipv4=<ipaddr>&ipv6=<ip6addr> +Update-URL: https://ns.meinroot.ch/ip_update.php?username=<username>&password=<pass>&domain=<domain>&ipv4=<ipaddr>&ipv6=<ip6addr> 
-Domainname: meinzuhause.de +Domainname: blackgate.org 
-Benutzername: meintollerdnydnsdienst +Benutzername: michael 
-Kennwort: miteinemgeheimenpasswort+Kennwort: Me1nP4sswort123!
 </code> </code>
 </WRAP> </WRAP>
  
  
-Meine Fritzbox brachte hier noch im Systemlog alle paar Minuten folgenden (nicht tragischen) Fehler:+Nach diesem Schritt, sollte nun der Router __selbständig__ alle paar Minuten die //externe IP Adresse// auf Änderungen prüfen und falls welche festgestellt würden, würde die neue IP in das Webverzeichnis des neu installierten DNS-root-servers hinterlegt.
  
-//Dynamic DNS-Fehler: Die Dynamic DNS-Aktualisierung war erfolgreichanschließend trat jedoch ein Fehler bei der DNS-Auflösung auf.//+Von da aus, wird dann die IP-Adresse von unserem Shell-Skriptdass jede Minute via Crontab ausgeführt wird wieder auf eine Änderung überprüft; falls eine festgestellt wird. Wird die neue externe IP Adresse in unseren lokalen DNS Server eingetragen welches sich dann automatisch mit dem DNS Server von Hostpoint synchronisiert.
  
-Wenns einen ströt wird man das los indem man sich mit Telnet auf die Fritzbox verbindet und die Datei ‚/var/flash/ar7.cfg‘ so verändert dass under ‚liveday‘ ‚1d‘ steht. +**Somit bleibt nun meine Dynamische IP Adresse immer aktuell und meine Domain bleibt immer erreichbar! 8-)** 
- +
- +
-----+
  
-  * https://www.thomaschristlieb.de/eigener-dyndns-dienst-mit-fritzbox-und-hetzner/ 
  • debian/other-debian/own-dyndns-debian.1490955194.txt.gz
  • Last modified: 2017/03/31 12:13
  • by michael