Seite 1 von 2 12
  1. #1
    Avatar von Jimini
    Mitglied seit
    24.02.2011
    Ort
    ~/
    Beiträge
    4.752

    [HowTo] eigener DynDNS-Dienst

    Aloha,

    da kürzlich dyndns.org sein kostenloses Angebot komplett eingestellt hat, war ich nach 9 Jahren "gezwungen", mich nach einer Alternative umzusehen. Da ich keine Lust auf irgendwelche komischen URLs hatte, ohnehin schon einen öffentlichen Server betreibe und auf mehreren Domains sitze, habe ich mir einen eigenen DynDNS-Dienst gebaut.

    Das Ganze funktioniert dann wie folgt:
    - mein Selbstbau-Router zuhause erkennt einen Wechsel der öffentlichen IP-Adresse
    - ein Script wird ausgelöst, welches eine Webseite auf meinem öffentlichen Server aufruft
    - auf dem öffentlichen Server wird durch den Aufruf der Webseite wiederum ein Script gestartet, welches die IP-Adresse des aufrufenden Clients an den Nameserver übermittelt

    ANLEITUNG

    (Erläuterung: domain.tld steht für die Adresse, unter welcher der öffentliche Server mit dem Nameserver läuft - also beispielsweise example.net - und dyndns.domain.tld für das System, welches eine wechselnde öffentliche IP-Adresse hat, also beispielsweise home.example.net)

    1. Voraussetzungen
    - ein öffentlicher Server, auf welchem ihr Rootrechte habt
    - eine eigene Domain (domain.tld) und eine Subdomain (dyndns.domain.tld)
    - der Nameserver Bind (wird bei vServern in der Regel schon vorkonfiguriert mitgeliefert)
    - ein Webserver
    mit PHP-Support

    2. Erzeugen der Keys auf dem Nameserver
    Um die DNS-Updates halbwegs abzusichern, sollte man Keys verwenden. Zunächst erzeugen wir welche:
    Code:
    dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST dyndns.domain.tld

    Beide Dateien werden später noch gebraucht.
    Danach kopieren wir die Keys aus den erzeugten Dateien:

    Code:
    cat Kdyndns.domain.tld*
    3. Anpassen der Bind-Config
    3.1 /etc/bind/named.conf.local

    Code:
    zone "dyndns.domain.tld" {
        type master;
        file "/var/lib/bind/dyndns.domain.tld";
        allow-update {
            localhost; };
        allow-query {
            any;
        };
        allow-transfer {
            127.0.0.1;
            ÖFFENTLICHE.IP.DES.SERVERS;
        };
        notify yes;
    };

    3.2 Erzeugen des Zonen-Files in /var/lib/bind/dyndns.domain.tld
    Code:
    $ORIGIN .
    $TTL 60 ;
    dyndns.domain.tld IN SOA domain.tld. dyndns.domain.tld. (
        1          ; serial
        3600       ; refresh (1 hour)
        900        ; retry (15 minutes)
        2419200    ; expire (4 weeks)
        180        ; minimum (3 minutes)
    )
    NS      dyndns.domain.tld.
    A       ÖFFENTLICHE.IP.DES.SERVERS
    
    Nicht vergessen, die Datei für Bind les- und beschreibbar zu machen:
    Code:
    chown bind:bind /var/lib/bind/dyndns.domain.tld
    Code:
    chmod 700 /var/lib/bind/dyndns.domain.tld
    4. Key für BIND hinterlegen (/etc/bind/named.keys)
    Code:
    key dyndns.domain.tld {
        algorithm HMAC-SHA256;
        secret "HIER KOMMT DER KEY AUS DEM KEYFILE REIN";
    };

    5. testweise lokal updaten (Keyfiles wurden im 2. Schritt erzeugt)

    Code:
    nsupdate -k /pfad/zum/keyfile.private
    > server 127.0.0.1
    > zone dyndns.domain.tld
    > update delete dyndns.domain.tld
    > update add dyndns.domain.tld 60 A ÖFFENTLICHE.IP.DES.DYNDNS-SYSTEMS
    > show (OPTIONAL ZUM CHECKEN)
    > send

    6. Überprüfen, ob das Update angenommen wurde
    Im Syslog nach Zeilen wie den folgenden suchen:
    named[6500]: client 127.0.0.1#21264: signer "dyndns.domain.tld" approved
    n
    amed[6500]: client 127.0.0.1#21264: updating zone 'dyndns.domain.tld/IN': delete all rrsets from name 'dyndns.domain.tld'

    named[6500]: client 127.0.0.1#21264: updating zone 'dyndns.domain.tld/IN': adding an RR at 'dyndns.domain.tld' A
    Den Nameserver direkt abfragen:
    Code:
    dig dyndns.domain.tld

    7. Script anlegen
    Code:
    #!/bin/bash
    echo -e "
    server 127.0.0.1
    zone dyndns.domain.tld
    update delete dyndns.domain.tld
    update add dyndns.domain.tld 60 A $1
    send" | /usr/bin/nsupdate -k /pfad/zum/key.private
    Natürlich muss das Script noch ausführbar gemacht werden:
    Code:
    chmod +x /pfad/zum/script

    8. PHP-File anlegen
    Code:
    <?php
    $ip = getenv("REMOTE_ADDR");
    $updatescript = "/pfad/zum/updatescript $ip";
    exec ($updatescript);
    ?>
    Anmerkung: bei mir hängt noch ein "$iptables = "/usr/bin/iptables_on";" sowie ein "exec ($iptables);"drin, womit ich direkt meine Firewallregeln aktualisiere.

    9. testen, ob das PHP-File beim Aufruf über den Browser ein DNS-Update auslöst


    10. das PHP-File vor unbefugtem Zugriff schützen, hier am Beispiel von Apache

    Code:
    htpasswd2 -s /pfad/zum/userfile dyndns-loginname


    Die Config (bei mir ist es /etc/apache2/sites-enabled/default) um folgenden Eintrag erweitern:
    Code:
            <Directory "/pfad/zum/PHP-Script">
                    Options Indexes FollowSymLinks
                    AllowOverride All
                    Order deny,allow
                    Allow from all
                    AuthType Basic
                    AuthName "Bitte einloggen:"
                    AuthUserFile /pfad/zum/userfile
                    Require valid-user
                    IndexIgnore download
            </Directory>
    Apache neustarten.

    11. das PHP-File kann beispielsweise mittels curl und den eben festgelegten Zugangsdaten aufgerufen werden
    Code:
    curl --user USER:PASSWORT --insecure https://domain.tld/script
    (der Parameter "--insecure" bestimmt, dass eine Zertifikatswarnung ignoriert wird - mein Webserver liefert nur via HTTPS aus und greift dabei auf ein selbstsigniertes Cert zurück, daher ist diese Option bei mir notwendig)

    Am Ende kann man die obige Zeile beispielsweise als Aktion bei einem IP-Wechsel festlegen, bei mir muss ich dazu nur eine Datei in /etc/dhcp3/dhclient-enter-hooks.d/dyndns anlegen, welche folgendes enthält:
    Code:
    #!/bin/bash
    curl --user USER:PASSWORT --insecure https://domain.tld/script
    MfG Jimini

    P.S.: für Fragen und Anmerkungen wäre ich dankbar - ich habe das Setup zwar so genau wie möglich dokumentiert, dennoch kann es natürlich sein, dass ich etwas vergessen oder übersehen habe.

    Fehlermeldungen:
    ; TSIG error with server: tsig indicates error
    update failed: NOTAUTH(BADSIG)
    => checken, ob der Key korrekt in named.keys hinterlegt wurde. Bind neustarten und nochmal versuchen.
    02-Oct-2014 07:36:41.144 /etc/bind/keys/KEYFILE.private:1: unknown option 'Private-key-format:'
    02-Oct-2014 07:36:41.144 /etc/bind/keys/KEYFILE.private:8: unexpected token near end of file
    could not read key from /etc/bind/keys/KEYFILE.{private,key}: unexpected token
    => dieser Fehler wird beispielsweise dann ausgegeben, wenn die Key-Datei fehlt. Sind *.private und *.key im gleichen Verzeichnis hinterlegt und lesbar für Bind?
    Geändert von Jimini (02.10.2014 um 07:42 Uhr) Grund: Ergänzungen
    » Guides & HowTos: Server konzipieren / Eigener DynDNS-Dienst / Tunneln von Verbindungen mit SSH / unbeaufsichtigtes 1:1-Backup / Administration eines Linux-Servers
    » nichts ist sicher: Paranoia ist dein Freund!
    » unbeantwortete Themen
    01.10.2002 » Jimini_Grillwurst @ PCG | 24.02.2011 » Jimini @ PCGHX

    •   Alt

      Anzeige
      Bitte einloggen, um diese Anzeige auszublenden.
       

  2. #2

    AW: [HowTo] eigener DynDNS-Dienst

    So, hab mich jetzt extra angemeldet um dir ausdrücklich meinen Dank auszusprechen. Genau das habe ich ca. 4 Tage lang gesucht und vergeblich rumprobiert. Ich denke es funktioniert jetzt soweit, hab nur noch das Problem, dass meine Subdomain scheinbar von meinem Domainanbieter nicht korrekt weitergeleitet wird, aber das krieg ich auch noch hin.
    _Vielen Dank_
    Sehr gute Arbeit

  3. #3
    Avatar von Jimini
    Mitglied seit
    24.02.2011
    Ort
    ~/
    Beiträge
    4.752

    AW: [HowTo] eigener DynDNS-Dienst

    Das freut mich, dass dir mein HowTo geholfen hat, vielen Dank für die Rückmeldung!
    Falls du noch Hilfe benötigen solltest, kannst du dich ja einfach hier melden.

    MfG Jimini
    » Guides & HowTos: Server konzipieren / Eigener DynDNS-Dienst / Tunneln von Verbindungen mit SSH / unbeaufsichtigtes 1:1-Backup / Administration eines Linux-Servers
    » nichts ist sicher: Paranoia ist dein Freund!
    » unbeantwortete Themen
    01.10.2002 » Jimini_Grillwurst @ PCG | 24.02.2011 » Jimini @ PCGHX

  4. #4

    AW: [HowTo] eigener DynDNS-Dienst

    Hallo Jimini,

    also ich sitze nun tatsächlich seitdem ich geschrieben hatte an einem Problem, das, wie ich vermute, von einer falschen Konfiguration bei meiner Domain ausgeht... Ich beschreibe mal alles ein wenig näher...
    Ich habe folgende Geräte:
    Ein Server bei mir zuhause, er hat eine dynamische IP (Rootserver im Folgenden)
    Ein Server gemietet, feste IP, und hier läuft auch bind9 (VServer im Folgenden)

    Des Weiteren habe ich eine Domain, einfach mal expl.de der Einfachkeit halber.
    Diese IP soll direkt auf meinen VServer zeigen... Mit root.expl.de will ich aber den Rootserver erreichen...
    Ich habe also ein Cronjob an meinem Rootserver eingerichtet, der ständig prüft, ob sich die IP geändert hat. Wenn ja, wird ein PHP-Script auf dem VServer aufgerufen, welches nsupdate auf ihm ausführt... Funktioniert auch alles, zumindest erhalte ich keine Fehlermeldungen und es steht auch nichts in den Logs...

    Ich bin mir jetzt aber sehr unsicher, wie ich das bei meinem Domainprovider (Domainssaubillig) zu konfigurieren habe, ich vermute mal es liegt daran...
    Ich habe dort als Nameserver die IP meines VServers reingeschrieben... Ich dachte mir, dass, wenn ein Aufruf an expl.de kommt, mein VServer als DNS angesprochen wird und gefragt wird, wo denn der Server für expl.de steht. Je nach Subdomain wird dann entweder die Rootserver-IP oder die VServer-IP zurückgegeben...
    Naja, ich habe jedenfalls die IP des VServers als Nameserver eingetragen, aber auch nach drei Tagen standen immernoch die Default Nameserver von Domainssaubillig drin... Muss da eine Domain stehen? Wenn ja kann ich das mit einer Domain ja gar nicht verwirklichen, sonst gäbe es ja eine Endlosschleife...
    Weiß gerade nicht, wie ich das anders Lösen soll... Hast du mir diesbezüglich vielleicht ein Stichwort?

    Ich weiß auch nicht, welche weiteren Informationen eventuell noch wichtig zum Lösen des Problems wären, ich werde sie aber natürlich gerne nachreichen, sofern sie dienlich sind...

    Vielen Dank jedenfalls schon einmal für alles. Für das Tutorial und für das Angebot, mich nochmal bei Fragen zu melden. Ich hoffe ich beanspruche dich damit nicht allzusehr.

    Viele Grüße,
    Chris

  5. #5
    Avatar von Jimini
    Mitglied seit
    24.02.2011
    Ort
    ~/
    Beiträge
    4.752

    AW: [HowTo] eigener DynDNS-Dienst

    Ich muss dazu sagen, dass ich von DNS bislang nicht wirklich Ahnung habe - die Thematik ist für mich recht schwierig zu durchblicken.
    Ich bin bei Host Europe und habe die Subdomain dort über das Webinterface angelegt. Die Prozedur ist hier unter "NS-Delegate" beschrieben. Der Effekt dieser Option ist, dass für eine bestimmte, dort definierte Subdomain der dort angegebene DNS-Server verwendet wird (siehe auch hier).

    Kannst du evtl. einen Screenshot reinpacken? Die exakten Adressen kannst du ja schwärzen.

    MfG Jimini
    » Guides & HowTos: Server konzipieren / Eigener DynDNS-Dienst / Tunneln von Verbindungen mit SSH / unbeaufsichtigtes 1:1-Backup / Administration eines Linux-Servers
    » nichts ist sicher: Paranoia ist dein Freund!
    » unbeantwortete Themen
    01.10.2002 » Jimini_Grillwurst @ PCG | 24.02.2011 » Jimini @ PCGHX

  6. #6

    AW: [HowTo] eigener DynDNS-Dienst

    Braucht man denn eigentlich zwingend einen Server, der nicht bei einem selbst zuhause steht?
    Ich würde z.B. gern ein kostenloses SSL Zertifikat von StartSSL nutzen, allerdings bekommt man das nicht für eine Subdomain und aktuell habe ich nur eine No-Ip.com Adresse.
    [Speedtest] Wie schnell ist eure Internetleitung? <> [Test] 1&1 Surf & Phone Flat Special - DSL16000
    PC: Intel Core i5 2500K - Corsair 8GB DDR3 - Asrock P67 Pro3 - Gigabyte GTX 970 G1 - Samsung 250GB SSD - BeQuiet E10 CM 500W - Esi nEar 08 - Hifiman HE-400 - Steelseries 6G V2

  7. #7

    AW: [HowTo] eigener DynDNS-Dienst

    Screenshots kann ich im Moment leider nicht bieten, da ich eigene Nameserver reingeschrieben hab, und deshalb nun alle anderen Menüpunkte ausgegraut wurden. Ich hab vorhin alles auf Default gestellt, und warte nun bis die Änderungen durch sind, dann kann ich welche nachreichen
    Danke jedenfalls schon einmal für alles
    Naja aber auch bei Host Europe steht bei NS Delegate, dass das nur für Reseller zur Verfügung steht... Oder geht das auch als Normalkunde?

    Danke für die schnelle Antwort und Hilfe
    Ich schau mir mal alles genau an, und wenn ich merke, dass mein Anbieter das net Erlaubt evtl nen Wechsel in Erwägung ziehen. An sonsten warte ich bis die Änderungen durch sind und reiche dann die Screenshots nach

    Danke und viele Grüße,
    Chris

  8. #8
    Avatar von Jimini
    Mitglied seit
    24.02.2011
    Ort
    ~/
    Beiträge
    4.752

    AW: [HowTo] eigener DynDNS-Dienst

    Zitat Zitat von K3n$! Beitrag anzeigen
    Braucht man denn eigentlich zwingend einen Server, der nicht bei einem selbst zuhause steht?
    Ich würde z.B. gern ein kostenloses SSL Zertifikat von StartSSL nutzen, allerdings bekommt man das nicht für eine Subdomain und aktuell habe ich nur eine No-Ip.com Adresse.
    Man könnte das sicherlich auch auf einem Homeserver realisieren - da meine Motivation aber war, für einen DynDNS-Dienst nicht zahlen zu müssen, wenn ich ohnehin einen öffentlichen Server und mehrere Domains besitze, wäre das unsinnig
    Zitat Zitat von CharlyDelta90 Beitrag anzeigen
    Naja aber auch bei Host Europe steht bei NS Delegate, dass das nur für Reseller zur Verfügung steht... Oder geht das auch als Normalkunde?
    Das wunderte mich auch. Ich tippe mal darauf, dass die Anleitung nicht ganz aktuell ist, ich bin nämlich definitiv kein Reseller

    MfG Jimini
    » Guides & HowTos: Server konzipieren / Eigener DynDNS-Dienst / Tunneln von Verbindungen mit SSH / unbeaufsichtigtes 1:1-Backup / Administration eines Linux-Servers
    » nichts ist sicher: Paranoia ist dein Freund!
    » unbeantwortete Themen
    01.10.2002 » Jimini_Grillwurst @ PCG | 24.02.2011 » Jimini @ PCGHX

  9. #9

    AW: [HowTo] eigener DynDNS-Dienst

    Hallo,
    auf die Gefahr hin, dass ich mich hier lächerlich mache:
    Ich habe mal einige prinzipille fragen und würde mich freuen wenn du diese beantworten könntest.

    Mein Vorhaben:
    Via OwnCloud Files/Calender etc. außerhalb meines Netzwerkes sharen/anschauen/hinzufügen können. Klingt soweit ja recht leicht. Da ich aber keine Lust auf die aktuelle kostenfreie DynDNS Politik habe, will ich einen eigenen DynDNS Server betreiben.

    Hierzu prinzipiell die Fragen:
    Was brauche ich dazu?
    Zur Verfügung steht mir:
    sparsamer Laptop mit openSuse13.1
    RaspberryPi
    2 Rechner
    1 NAS

    Ich brauche wie ich gelesen habe:
    OwnCloud "Server"
    Webserver (sollte ja mich Apache+PHP realisierbar sein) -> openSuse
    Nameserver ( Bind? ) -> openSuse
    Domain? Subdomain? Bin ich hier unbedingt auf externe Anbieter angewiesen? Hier lese ich oft was von 15GB maximalem Hosting Speicher?... den benötige ich prinzipiell nicht oder?

    Kann ich alle diese Dienste auf einer LinuxMaschine laufen lassen? Ist das überhaupt sinnvoll?

    Ich bin zwar nicht neu im Linux-Umfeld, aber diese verdammten Netzwerkgeschichten....für die benötige ich meist ein wenig länger zum begreifen !

    Vielen Dank im Voraus!

    Mir ist das ganze Prinzip und die Zusammenhänge zwischen Nameserver, DNS-Server (ist ja nur die Software/Funktionalität auf einem Nameserver oder?), Webserver, Domain/Subdomain noch nicht ganz klar.
    PC: i5-4460 -- 7970 GHz Edition -- ASRock B75M-ITX -- 8 GB RAM -- Nanoxia DS 1
    MacBook Pro 2016 TB Base
    Xbox One 1TB
    Wii U 32GB
    IPhone 7 128GB


    •   Alt

      Anzeige
      Bitte einloggen, um diese Anzeige auszublenden.
       

  10. #10
    Avatar von Jimini
    Mitglied seit
    24.02.2011
    Ort
    ~/
    Beiträge
    4.752

    AW: [HowTo] eigener DynDNS-Dienst

    Zitat Zitat von Bash0r Beitrag anzeigen
    Hallo,
    auf die Gefahr hin, dass ich mich hier lächerlich mache:
    Keine Sorge - geh' ruhig mal davon aus, dass jede Fragestellung hier schon mehrfach durch irgendeinen Kopf gegangen ist
    Mein Vorhaben:
    Via OwnCloud Files/Calender etc. außerhalb meines Netzwerkes sharen/anschauen/hinzufügen können. Klingt soweit ja recht leicht. Da ich aber keine Lust auf die aktuelle kostenfreie DynDNS Politik habe, will ich einen eigenen DynDNS Server betreiben.
    Genau das habe ich auch bei mir laufen. Funktioniert tadellos.
    Hierzu prinzipiell die Fragen:
    Was brauche ich dazu?
    Zur Verfügung steht mir:
    sparsamer Laptop mit openSuse13.1
    RaspberryPi
    2 Rechner
    1 NAS
    Wenn dein System auch "von außen" erreichbar sein soll, brauchst du zwingend eine Domain - außer, du willst mit IP-Adressen hantieren, was aber kaum praktikabel wäre. In puncto Hardware reicht der Raspberry locker aus.
    Ich brauche wie ich gelesen habe:
    OwnCloud "Server"
    Webserver (sollte ja mich Apache+PHP realisierbar sein) -> openSuse
    Nameserver ( Bind? ) -> openSuse
    Dazu kommt noch ein SQL-Server, beispielsweise MySQL. Den Nameserver brauchst du nur, um Anfragen hieran an den zuhause stehenden Server weiterzuleiten.
    Kann ich alle diese Dienste auf einer LinuxMaschine laufen lassen?
    Definitiv ja.
    Ist das überhaupt sinnvoll?
    Das musst du selber wissen
    Mir ist das ganze Prinzip und die Zusammenhänge zwischen Nameserver, DNS-Server (ist ja nur die Software/Funktionalität auf einem Nameserver oder?), Webserver, Domain/Subdomain noch nicht ganz klar.
    Ich erkläre das Setup mal schematisch:

    - Bei mir zuhause steht ein System, auf welches ich auch von außen zugreifen möchte. Der Zugriff kann beispielsweise über die IP-Adresse geschehen. Da sich IP-Adressen im Privatbereich aber zumindest ab und an ändern, ist das nicht wirklich praktisch.
    - Ein DynDNS-Dienst (beispielsweise dyndns.org) erhält regelmäßig von deinem System die aktuelle IP-Adresse. Diese weist er der von dir gemieteten Subdomain (beispielsweise home.dyndns.org) zu. Wenn nun jemand home.dyndns.org aufruft, landet er beim DNS-Server (auch "Nameserver" genannt) auf dyndns.org, welcher die zu home.dyndns.org passende IP-Adresse rausgibt.
    - Für das Setup braucht man also eine öffentlich erreichbare Domain, unter welcher ein DNS-Server läuft.

    Bei mir läuft es im Falle eines Wechsels der IP-Adresse so:
    - Der Wechsel der Adresse löst ein Skript aus, welches eine Seite auf meinem öffentlichen Webserver aufruft.
    - Beim Aufruf der Seite wird ein zweites Skript gestartet, welches sich die IP-Adresse des Absenders greift. Diese übergibt es an ein drittes Skript, welches nun eine Update-Anweisung samt der genannten IP-Adresse an den Nameserver übergibt.
    - Der Nameserver leitet von nun an alle Anfragen an die Subdomain an die genannte IP-Adresse weiter.

    MfG Jimini
    » Guides & HowTos: Server konzipieren / Eigener DynDNS-Dienst / Tunneln von Verbindungen mit SSH / unbeaufsichtigtes 1:1-Backup / Administration eines Linux-Servers
    » nichts ist sicher: Paranoia ist dein Freund!
    » unbeantwortete Themen
    01.10.2002 » Jimini_Grillwurst @ PCG | 24.02.2011 » Jimini @ PCGHX

Seite 1 von 2 12
Netgear Nighthawk S8000

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •