PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DNS-Auflösung von dynamischer Zone funktioniert nur manchmal



z0ny
08.05.14, 09:18
Hallo, auf meinem Gentoo Server läuft BIND 9.9.4. Nun habe ich bei einer meiner Domains als DynDNS-Ersatz eine dynamische Zone eingerichtet. Der Eintrag in der named.conf sieht wie folgt aus:


zone "dyndns.domain.de" {
type master;
file "pri/dyndns.domain.de";
update-policy { grant dyndns-key zonesub ANY; };
allow-transfer { none; };
};

Die zugehörige Zonendatei dyndns.domain.de:


$TTL 60 ; 1 minute
@ IN SOA ns1.domain.de. admin.domain.de. (
2014050800 ; serial
300 ; refresh (5 minutes)
1800 ; retry (30 minutes)
1209600 ; expire (2 weeks)
60 ; minimum (1 minute)
)
NS ns1.domain.de.

Ausgelöst wird das Update via:


# echo -e "
update delete dyndns.domain.de A
update add dyndns.domain.de 60 A 1.2.3.4
send
" | /usr/bin/nsupdate -k /etc/bind/dyndns.key

Lokal auf dem Server funktioniert die Auflösung des dynamischen Namens bestens, auf anderen DNS-Servern (egal ob Telekom, Google, ...) allerdings nur in rund 50% der Abfragen:


# dig dyndns.domain.de

; <<>> DiG 9.9.4 <<>> dyndns.domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53824
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;dyndns.domain.de. IN A

;; ANSWER SECTION:
dyndns.domain.de. 59 IN A 1.2.3.4

;; Query time: 11 msec
;; SERVER: 194.25.0.60#53(194.25.0.60)
;; WHEN: Thu May 08 09:08:31 CEST 2014
;; MSG SIZE rcvd: 60

# dig dyndns.domain.de

; <<>> DiG 9.9.4 <<>> dyndns.domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 45283
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;dyndns.domain.de. IN A

;; AUTHORITY SECTION:
domain.de. 3600 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400

;; Query time: 25 msec
;; SERVER: 194.25.0.60#53(194.25.0.60)
;; WHEN: Thu May 08 09:08:31 CEST 2014
;; MSG SIZE rcvd: 90

Die "statischen" Domains funktionieren ohne bekannte Probleme. Woran könnte das liegen? Benötige ich in der "Hauptzonendatei" domain.de vielleicht noch einen Eintrag? Dort ist der dynamische Name nicht erwähnt.

Danke vorab.

Kernel-Error
12.05.14, 21:03
Hast du per DIG mal die TTL abgefragt, ob sie wie gewünscht vorgehalten wird. Der Slave DNS ist auch immer über alles informiert?

Der DNS steht natürlich nicht hinter der wechselnden IP, oder?

z0ny
12.05.14, 21:20
Danke für deine Antwort. Was genau meinst du mit "vorgehalten"? Was kann ich wie genau prüfen? Die dynamische Zone liegt nur auf dem Primärserver, sprich der Slave ist gar nicht involviert (in der Zone ist auch nur ns1 aufgeführt). Ist das ein Problem? Und nein, der DNS steht natürlich nicht hinter der dynamischen IP.

Kernel-Error
12.05.14, 21:33
Nein, nur ein Nameserver ist erstmal kein Problem. Je nach TLD werden mal mehr oder weniger Vorschriften dahingehend gemacht.

Zur TTL... Frag doch mal einen deiner Problem DNS-Server welche TTL er für deinen Record führt.

z0ny
13.05.14, 10:33
Hier mal ein Auszug von mehreren hintereinander ausgeführten Abfragen:


$ for i in {1..60}; do dig dyndns.domain.de|grep domain|grep -ve "^;"; sleep 1; done
dyndns.domain.de. 60 IN A 1.2.3.4
domain.de. 3544 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3118 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3184 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3140 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3139 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 54 IN A 1.2.3.4
domain.de. 3115 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3530 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3529 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3153 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3176 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3110 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3532 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3129 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3129 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3106 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3103 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3145 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3517 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3142 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3098 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 37 IN A 1.2.3.4
domain.de. 3160 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3513 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3161 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3160 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3510 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3114 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 30 IN A 1.2.3.4
domain.de. 3091 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3505 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3089 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3153 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3510 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3509 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3085 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3105 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3081 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3123 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 19 IN A 1.2.3.4
domain.de. 3121 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3120 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 16 IN A 1.2.3.4
domain.de. 3139 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3491 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3491 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3497 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3094 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3134 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3494 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3068 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3485 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3483 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3067 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3131 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3065 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
domain.de. 3487 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400
dyndns.domain.de. 60 IN A 1.2.3.4
domain.de. 3103 IN SOA ns1.domain.de. admin.domain.de. 2014050800 43200 1800 1209600 86400

Die TTL dürfte ja in der zweiten Spalte stehen. Wie man sieht ist die Ausbeute an erfolgreichen Antworten nicht ganz optimal. :o

Auch interessant: ich habe gerade auf heise (http://www.heise.de/netze/tools/dns/) eine A-Record Abfrage gemacht, dort verringerte sich dann die TTL mit jeder Abfrage (etwa sekündlich, von 60 beginnend, jede aber erfolgreich) bis am Ende nur noch die Meldung "Die Anfrage lieferte keine Ergebnisse zurück." kam - bis jetzt übrigens.

Eine Erhöhung der Werte des SOA-Eintrags gemäß DENIC Richtlinien sowie der TTL auf 180s haben nichts gebracht.

Es sieht so aus, als würde manchmal nicht die Subzone "dyndns.domain.de" abgefragt, sondern die Hauptzone "domain.de", in der es die "dyndns" Subdomain natürlich nicht gibt.

Kernel-Error
13.05.14, 17:22
Ich glaube noch nicht ganz verstanden zu haben was du gemacht hast...

Ist es so (mäßige idee)?

Du hast die Domain: example.com und zuständig für diese Domain ist der Nameserver: n1.example.com Dieser Nameserver steht im Internet mit fester IP.

Nun hast du eine Subdomain erstellt: wurst.example.com und für diese zuständig ist der Nameserver ?ns.wurst.example.com? und dieser Nameserver steht auch im Internet?

Dann hast du dir ein Script gemacht welches auf der Kiste hinter deiner dynamischen IP läuft und per ?ssh?/?php? ein nsupdate für den Host: dynip.wurst.example.com durchführt.

Oder ist es so (schlechte Idee)?

Du hast die Domain: example.com und zuständig für diese Domain ist der Nameserver: n1.example.com Dieser Nameserver steht im Internet mit fester IP. Du hast eine subdomain dynip.example.com gemacht und dafür zuständig ist der nameserver dynip.example.com der hinter der dynamischen ip steht.

Oder wie ist es...?

Kannst du mir mal den echten DNS Namen von dem host mit der dynamischen ip geben? Wenn du angst hast gerne als pn. Ich verstehe aus deinen Configs einfach noch nicht was du da gebaut hast.

z0ny
13.05.14, 21:01
Danke für den Denkanstoß, ich habe selbst noch einmal darüber nachgedacht und die Konfiguration angepasst. Ich glaube, es funktioniert jetzt.

Bisher war es wie folgt (so hatte ich es aus einem Howto):
Ich habe die Domain domain.de, für die die Nameserver ns1.domain.de und ns2.domain.de zuständig sind. Beide Nameserver laufen auf verschiedenen Servern im Internet je mit fester IP. Auf ns1 habe ich eine Subdomain dyndns.domain.de angelegt, jedoch nicht in der Zonendatei von domain.de, sondern in einer eigenen Zonendatei (siehe 1. Beitrag von mir).

Die Änderung:
Ich habe die zusätzliche Zone der Subdomain gelöscht, dyndns.domain.de regulär in der Zonendatei von domain.de angelegt und für diese Subdomain in der named.conf eine update-policy eingefügt, durch die mit einem Key der A-Record der Subdomain geändert werden kann. Damit scheint es zu funktionieren.

Aktualisiert wird die Subdomain übrigens durch ein PHP-Script, welches "nsupdate" ausführt.

Kernel-Error
13.05.14, 21:20
Na dann war es ja einfach... Böse Falle ist immer blind auf irgendein HowTo zu hören :-)

z0ny
13.05.14, 21:21
Stimmt. Das schlimme ist ja, dass es manchmal sogar funktioniert hat. :o