Eigener DynDNS nsupdate schlägt fehl

Garog

New Member
Ich beantworte mich mal selbst, mit einem kleinen Tutorial wie ich erfolgreich und einfach einen eigenen DDNS Dienst/Server/Funktion bei mir eingerichtet habe.


Ich setze vorraus das ihr bind9 einsetzt. (Hier auf Ubuntu 14.04)
Ebenfalls bedarf es einem zweiten DNS Server, bei mir ns2.hans.hosteurope.de
Habt ihr so etwas nicht, bzw bietet euer Domainanbieter diesen nicht an, gibt es genug kostenlose Alternativen im Web.
Vergesst auch nicht deim Registrar der Domain die DNS Server für die Hauptdomain zu registrieren (Nameserverupdate), ging bei mir auch einfach über HE.

Erstmal erstellen wir uns einen Schlüssel diesen nutzen wir um das DDNS Update nur mit ihm durchführen zu können.
Code:
ddns-confgen -q -a hmac-sha512 -k ddnskey

Diesen Key packen wir dann in die named.conf Datei
Code:
vim /etc/bind/named.conf

key "ddnskey" {
        algorithm hmac-sha512;
        secret "abcdefghijklmnopqrst1234567890";
};

Zonedatei erstellen bzw. die Default anpassen
Code:
vim /etc/bind/named.conf.default-zones

zone "webseite.de" {
        type master;
        file "/var/lib/bind/webseite.de";
        allow-query { any; };
};

zone "ddns.webseite.de" {
        type master;
        file "/var/lib/bind/ddns.webseite.de";
        update-policy {
          grant ddnskey name ddns.webseite.de A;
        };
        allow-query { any; };
};

Dann die Zonefiles erstellen, erstmal für die Domain
Code:
vim /var/lib/bind/webseite.de

$ORIGIN webseite.de.
$TTL 300        ; 5 minutes
@       IN      SOA     ns1.webseite.de. webmaster.webseite.de. (
                                2014070701 ; serial
                                10800      ; refresh (3 hours)
                                3600       ; retry (1 hour)
                                604800     ; expire (1 week)
                                300        ; minimum (5 minutes)
                                )
                        A       10.10.10.10
                        NS      ns1.webseite.de.
                        NS      ns2.hans.hosteurope.de.
ns1.webseite.de.       A       10.10.10.10

$ORIGIN ddns.webseite.de.
@       IN      NS      ns3.ddns.webseite.de.
        IN      NS      ns1.webseite.de.
ns3     IN      A       10.10.10.10

Dann für die Subdomain
Code:
vim /var/lib/bind/ddns.webseite.de
$ORIGIN .
$TTL 300        ; 5 minutes
ddns.webseite.de       IN SOA  ns3.ddns.webseite.de. hostmaster.ddns.webseite.de. (
                                2014070710 ; serial
                                7200       ; refresh (2 hours)
                                900        ; retry (15 minutes)
                                1857600    ; expire (3 weeks 12 hours)
                                300        ; minimum (5 minutes)
                                )
                        NS      ns1.webseite.de.
                        NS      ns3.ddns.webseite.de.
$ORIGIN ddns.webseite.de.
$TTL 300        ; 5 minutes
ns3                     A       10.10.10.10

Fertig.

Updates könnt ihr nun mit folgendem machen

Code:
nsupdate -v
> server ns3.ddns.webseite.de
> key hmac-sha512:ddnskey abcdefghijklmnopqrst1234567890
> zone ddns.webseite.de
> update delete ddns.webseite.de. A
> update add ddns.webseite.de 20 A 10.10.10.20
> send
> quit

Hallo,

ich habe (versucht) einen eigenen DynDNS artigen Dienst einzurichten.
Jedoch scheitere ich an dem update mit nsupdate, finde aber leider auch den Fehler nicht.

(Webseite und IPAdressen angepasst)

In der named.conf.local habe ich meine zone angelegt
Code:
zone "dyndns.webseite.de" {
    type master;
    file "/var/lib/bind/dyndns.webseite.de";
    allow-update { any; };
    allow-query { any; };
};
include "/etc/bind/dyndns.webseite.de.keys";

in der dyndns.webseite.de sieht es wie folgt aus
Code:
$ORIGIN .
$TTL 300 ; 5 minutes
dyndns.webseite.de IN SOA dns-server.dyndns.webseite.de. host.webseite.de. (
    21 ; serial
    1H ; refresh (1 hour)
    10M ; retry (10 minutes)
    604800 ; expire (1 week)
    5M) ; minimum (5 minutes)
        NS dns-server.dyndns.webseite.de.
$ORIGIN dyndns.webseite.de.
dns-server.dyndns.webseite.de. A 10.10.10.10

wenn ich nun mit named-checkconf -z prüfe ob alles ok ist bekomme ich dies
Code:
zone dyndns.webseite.de/IN: loaded serial 21
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1

Soweit so gut
Nun möchte ich ein update machen
Code:
nsupdate -k /etc/bind/key.client
> server dns-server.dyndns.webseite.de

und bekomme dort dann den Fehler
Code:
couldn't get address for 'dns-server.dyndns.webseite.de': not found
Und dort weiß ich nicht weiter, das www gibt auch (bisher) nichts brauchbares dazu her.
btw bind9 service habe ich natürlich neugestartet nach dem anlegen der zone und der zonendatei

bei dem Server handelt es sich um einen Linuxserver mit Ubuntu 10 und Plesk
Im KIS (Hosteurope System) ist alles für eine eigene DNS Verwaltung der Domain eingestellt. Richte ich im Plesk eine Subdomain ein, ist diese nach kurzer Zeit auch erreichbar, ohne Einträge im KIS, daher gehe ich mal davon aus, dass soweit alles stimmt

[Edit]
irgendwie vermute ich das es mal wieder mit Plesk zusammen hängt, denn wenn ich
Code:
dns-server.dyndns.webseite.de.	A	10.10.10.10
	dyndns.webseite.de.	NS	dns-server.dyndns.webseite.de.
im Plesk bei der DNS Einstellung der entsprechenden Seite eintrage, dafür aber
Code:
dns-server.dyndns.webseite.de. A 10.10.10.10
aus der Datei dyndns.webseite.de rausnehme, meldet er mir beim named-checkconf -z das kein A Record vorhanden ist für dns-server.dyndns.webseite.de
 
Last edited by a moderator:
Habe ich, sieht nun so aus
Code:
$ORIGIN .
$TTL 300 ; 5 minutes
dyndns.webseite.de IN SOA dns-server.dyndns.webseite.de. host.webseite.de. (
    21 ; serial
    1H ; refresh (1 hour)
    10M ; retry (10 minutes)
    604800 ; expire (1 week)
    5M) ; minimum (5 minutes)
        IN NS dns-server.dyndns.webseite.de.
$ORIGIN dyndns.webseite.de.
dns-server.dyndns.webseite.de. IN A 10.10.10.10

Leider immer noch das gleiche
Code:
couldn't get address for 'dns-server.dyndns.webseite.de': not found

Was ich noch erwähnen sollte, ich habe in der /etc/resolv.conf noch folgendes eingetragen gehabt
Code:
nameserver 127.0.0.1
 
$ORIGIN dyndns.webseite.de.
dns-server.dyndns.webseite.de. IN A 10.10.10.10

Das Origin da würd ich auch mal weglassen. Hast den Host ja komplett benennt.
 
Achja

Das ist vielleicht auch noch hilfreich
Code:
root@lvps:/etc/bind# nslookup -querytype=NS dns-server.dyndns.webseite.de
;; Got SERVFAIL reply from 127.0.0.1, trying next server
;; Got SERVFAIL reply from 80.237.128.144, trying next server
;; Got SERVFAIL reply from 127.0.0.1, trying next server
;; Got SERVFAIL reply from 80.237.128.144, trying next server
Server:         80.237.128.145
Address:        80.237.128.145#53

** server can't find dns-server.dyndns.wenseite.de: SERVFAIL

ich verstehe aber nicht wieso, den auch wenn ich es im Plesk eintrage und ich die subdomain sogar anpingen kann geht es mit dem nsupdate nicht weiter
 
Wenn es nur Schönheistssachen wären, würde ich es nicht schreiben. Es können auch kleinigkeiten (oder Schönheitssachen) probleme verursachen.
 
Habe ich gemacht, leider noch das gleiche Problem :(

[Edit]
nslookup
liefert mir mit -querytype=A oder -querytype=NS beides mal das gleiche, server can't find...

komisch finde ich allerdings, wenn ich einen neuen A Record übers Plesk einrichte, bekomme ich sofort eine Antwort von 127.0.0.1 mit der entsprechenden IP vom Server zurück.
Also irgendwie fehlt da irgendwo das "registrieren" von dem A Record von dns-server.dyndns.webseite.de

[Edit 2.]
Suspekt...
Ich habe nun mal alles aus der named.conf.local rauskommentiert
Im Plesk die Einträge gelöscht und neu angelegt.
Wenn ich nur dns-server.dyndns.webseite.de als A Record anlege, dann bekomme ich mit nslookup -querytype=A meine IP Adresse
Lege ich nun noch einen NS Eintrag an dyndns.webseite.de NS dns-server.dyndns.webseite.de
Dann bekomme ich nicht mal mehr die IP Adresse wieder beim nslookup -querytype=A auf dns-server.dyndns.webseite.de

Der dyndns.webseite.de NS dns-server.dyndns.webseite.de wäre der dritte NS Eintrag zu der Domain, macht das hier Probleme ?
 
Last edited by a moderator:
Also irgendwie fehlt da irgendwo das "registrieren" von dem A Record von dns-server.dyndns.webseite.de
Schaut so aus. Hast Du für "dns-server.dyndns.webseite.de" eine Glue-record in die Zone "webseite.de" gesetzt?
Mir leuchtet sowieso noch nicht ein, warum Du nicht einfach "dns-server.webseite.de" benutzt, das solltedoch die gleiche IP sein.

Geht ein
Code:
nsupdate -k /etc/bind/key.client
> server 10.10.10.10
> zone.dyndns.webseite.de
> update add dns-server.dyndns.webseite.de 300 in a 10.10.10.10
 
Hier mal die gesamten Einträge zur Domain

Code:
webseite-zone.de.	NS	lvps10-10-10-10.dedicated.hosteurope.de.
	webseite-zone.de.	NS	ns2.hans.hosteurope.de.
	webseite-zone.de.	A	10.10.10.10
	webseite-zone.de.	MX (10)	mail.webseite-zone.de.
	dns-server.dyndns.webseite-zone.de.	A	10.10.10.10
	ipv4.webseite-zone.de.	A	10.10.10.10
	mail.webseite-zone.de.	A	10.10.10.10
	ns.webseite-zone.de.	A	10.10.10.10
	test.webseite-zone.de.	A	10.10.10.10
	webmail.webseite-zone.de.	A	10.10.10.10
	www.webseite-zone.de.	CNAME	webseite-zone.de.

Das ist die aktuelle, den Eintrag
Code:
dyndns.webseite-zone.de.	NS	dns-server.dyndns.webseite-zone.de.
habe ich gerade zum ausprobieren raus genommen

Dann habe ich deinen Vorschlag ausprobiert, allerdings habe ich da durch das ganze fummeln nun irgendwas mit den Keys durcheinander gewürfelt.
Code:
; TSIG error with server: tsig indicates error
update failed: NOTAUTH(BADKEY)

werde das ganze morgen noch mal komplett löschen und dann sauber neu aufsetzen, nachdem ich da nun etwas mehr Wissen mitbringen kann.

Wieso ich nicht direkt dyndns.webseite.de nutze... gute Frage, die ich mir langsam auch Stelle.
Ich könnte einfach einen A Record für dyndns.webseite.de auf meine gewünschte IP setzen und es sollte alles gehen, oder ?
Ich meinte ich habe etwas gelesen, dass man das mit dem NS und A Record machen "muss" damit beim ändern der IP Adresse ich nicht warten muss, bis das ganze zu meinem aktuellen DNS, welchen ich dann am Client habe, durchgedrungen ist. Kann mich da aber auch gerade schwer vertun :D
 
Wie lange Du auf ein Update warten mußt, entscheidet Du selber über die TTL, in Deinem Fall also maximal 2 x 5 Minuten.
Ich würde an Deiner Stelle einfach
Code:
dyndns.webseite-zone.de.	NS	ns.webseite-zone.de.
schreiben und den Glue ganz herausnehmen.
Es macht einfach keinen Sinn (und wie Du siehst oft Ärger) den (einzigen) NS in die Zone selbst zu legen.
Das kann man machen, wenn man Namen wie "ns2.hans.hosteurope.de." verstecken will.
In Deinem Fall taucht der aber gar nicht auf, sondern sowieso "webseite-zone.de."
 
okay, aber wenn ich das
Code:
dyndns.webseite-zone.de.	NS	ns.webseite-zone.de.
mache, ist es doch das gleiche wie das was ich am anfang hatte, nur das es jetzt nicht dns-server.dyndns.webseite-zone.de. heißt sondern ns.webseite-zone.de.
mir raucht gerade der Kopf :)
Um das aber noch mal aufzugreifen, wieso sollte ich das den überhaupt so machen.
Kann ich nicht wirklich einfach vom dyndns.webseite-zone.de. den A Record, also die IP Adresse, alle 5 Minuten aktualisieren und die TTL bei 300 Sekunden belassen?
 
...ist es doch das gleiche wie das was ich am anfang hatte, nur das es jetzt nicht dns-server.dyndns.webseite-zone.de. heißt sondern ns.webseite-zone.de....
webseite-zone.de wird auch von ns2.hans.hosteurope.de. als Nameserver bedient und ist damit auch auflösbar, ohne vorher zu wissen, wer ns.webseite-zone.de ist (dazu müßte man ja wiederum webseite-zone.de schon aufgelöst haben oder eben einen Glue-record bekommen).

dns-server.dyndns.webseite.de kann in Deiner Konfiguration nur von dns-server.dyndns.webseite.de. aufgelöst werden.
In diesem Fall bist Du unbedingt auf einen Glue-Record für dns-server.dyndns.webseite.de. unterhalb von webseite.de. angewiesen.
 
Hallo noch mal,

ich habe das ganze noch mal von vorne aufgerollt. Soweit so gut.
Auf einem neuen Server habe ich zum testen einen Nameserver mit bind9 eingerichtet.

Code:
zone "webzone.de" {
        type master;
        file "/var/lib/bind/webzone.de";
        allow-update { any; };
        allow-query { any; };
};

Code:
$TTL 300
$ORIGIN webzone.de.
@ 300 IN SOA ns1.webzone.de. webmaster.webzone.de. (
                                2014070101;
                                10800;
                                3600;
                                604800;
                                300;
                                );
       IN A 10.10.10.10
       IN NS ns1.webzone.de.
       IN NS ns2.hans.hosteurope.de.
ns1.webzone.de.  IN A 10.10.10.10

Nun habe ich ein Update bei HE für die Domain durchführen wollen, bekomme dort dann aber gesagt das ich einen Hostnamen eingeben soll, Hostadresse alleine würde nicht gehen. Also dachte ich mir nehme ich doch einfach meinen PTR Eintrag zum aktuellen Server
ip-10-10-10-10.static.contabo.net
Dieser ist auch im Kundelogin bei contabo eingerichtet und verweißt auf meine IP Adresse.
Nun kann ich den aber nicht auflösen... contabo sagt mir dazu, dass ich meinen hostname setzen muss.
die habe ich allerdings schon getan um einen FQDN zu bekommen, so dass eMail nicht abgewiesen werden.

In meiner hostname steht
Code:
mail

und in meiner hosts steht
Code:
127.0.0.1       localhost
127.0.1.1       ip-10-10-10-10.static.contabo.net    ip-10-10-10-10
10.10.10.10  mail.hauptwebseite.de     mail

hostname -f bringt mir auch korrekterweise dann mail.hauptwebseite.de

Nun weiß ich aber nicht weiter, irgendwie ist das gaaanz grausam gemacht alles :)
Wieso sollte ich den meine hostname jetzt wieder anpassen ?
Ist es nicht ausreichend wenn ich den PTR Eintrag auf mail.hauptwebseite.de ändere und dies als hostname des dns Servers bei dem Domainupdate angebe ?

Grausam wie man mit einem Namen und einer Zahlenkombination so rumspielen kann/muss :(

Im übrigen, wenn ich bei der denic einen DNS Check mache, und ns1.webzone.de. sowie ns2.hans.hosteurope.de. als Nameserver eingebe, dann bekomme ich die Meldung
Missing glue record for the nameserver (NS)
aber habe ich das nicht mit
Code:
ns1.webzone.de.  IN A 10.10.10.10
getan ?

[Edit]
Na wunderbar, ich konnte nun die IP als ersten Nameserver angeben. Ein Nameserver Predelegation Check bei der denic brachte nun endlich mal
Prüfung erfolgreich.
Allerdings nicht immer, irgendwie sucht er ab und zu noch beim alten Nameserver und bringt dann einen Fehler, mal gucken ob sich das Problem von selbst löst oder irgendetwas anderes wieder nicht stimmt...
 
Last edited by a moderator:
Ich komme nicht drauf raus..
Jetzt mäckert die denic immer das die Prüfung fehlschlägt und
Code:
Inconsistent set of NS RRs (IP, NS host names)
/80.237.128.10
[ns1.webzone.de]

Wenn ich bei intodns.com prüfe dann ist alles ok, ausser www und mx, die eben nicht vorhanden sind.

Ich habe jetzt noch mal ein Update der Nameserver der Domain eingereicht mit folgenden Daten (IP und Webseite sind natürlich mit richtigen Werten angeben)
Code:
Primary DNS Hostname    : ns1.webzone.de
Primary DNS Netaddress  : 10.10.10.10
Secondary DNS Hostname  : ns2.hans.hosteurope.de
Secondary DNS Netaddress: 80.237.128.10

Und verstehe ich das richtig das der GLUE Record für ns1.webzone.de beim Registrator stehen muss ?
 
Ich habe mich selbst im ersten Beitrag mal beantwortet, möge es dem ein oder anderen eine Hilfe sein.
 
Back
Top