Hallo,
ich habe den Unbound Patch aus Trac auf den aktuellen Stand gebracht.
Änderungen:
- Es wird nicht mehr DLV (DNSSEC Lookaside Validation) benutzt, sondern mit Hilfe des DNS-Rootkeys validiert (sei Juni ist DNSSEC bei den Root-Server aktiv, deswegen ist DLV nicht mehr nötig...)
- rc.unbound entsprechend angepasst, so dass der root-key an die passende Stelle kopiert wird.
- Das Web-Frontend aus dem älteren Patch in trac habe ich auch gleich mit integriert.
Bei mir funkioniert die DNSSEC-Validierung in folgendem Setup:
- Dnsmasq forwarded alle DNS-Anfragen an unbound. Dazu unter "zusätzlich diese Upstream Nameserver nutzen (durch Leerzeichen getrennt): " die lokale IP und Port von unbound eintragen (also 192.168.178.1#533) und die Option "Durch AVM/Provider zugewiesene Upstream Nameserver nutzen" deselektieren.
- Unbound muss automatisch gestartet werden, ansonsten hat man kein DNS nach dem Reboot
- Damit DNSSEC funkioniert, benötigt die Fritz-Box die korrekte Systemzeit! Beim booten hat die Box dann folgendes Problem: sie will die Namen der Time-Server resolven, das geht aber noch nicht da das DNS noch nicht geht weil bei unbound die DNSSEC Validierung (bzw. eigentlich das holen der aktuellen Root-Signaturen) wg. der falschen Systemzeit fehlschlägt. Das ist dann ein klassischer Deadlock... Dafür gibt es zwei Lösungen entweder unbound so konfigurieren, dass er auch ohne DNSSEC arbeitet (val-permissive-mode: yes im config eintragen, aber dann braucht man DNSSEC eigentlich auch gar nicht aktivieren) oder für die Time-Server statt DNS-Namen einfach die IP-Adressen eintragen (im normalen fritz.box Webfrontend die IPs von den PTB-Servern eintragen: "192.53.103.108 192.53.103.103 192.53.103.104").
Ob DNSSEC funktioniert kann man ganz einfach unter linux testen mit dem Kommandos (funkioniert natürlich nur für DNSSEC signierte Domains wie z.B. isc.org):
dig -p 533 @192.168.178.1 www.isc.org +dnssec (Anfrage direkt an Unound welcher an Port 533 lauscht)
dig @192.168.178.1 www.isc.org +dnssec (Anfrage über dnsmasq, welcher ja nur die Anfrage an unbound weiterreicht)
Die Ausgabe sollte dann folgendermaßen aussehen (wichtig ist das bei flags der Wert "ad" für authenticated data vorkommt):
; <<>> DiG 9.7.1-P2 <<>> @192.168.178.1 www.isc.org +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21206
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 13
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;www.isc.org. IN A
;; ANSWER SECTION:
www.isc.org. 528 IN A 149.20.64.42
www.isc.org. 528 IN RRSIG A 5 3 600 20101115233208 20101016233208 31518 isc.org. HcMfYvpUUP0u4tO9YfbQ/2tBGvB+1d9tikMdEY+Xc6USsTYaU3jBNZG0 BMJhMhy7vdVU1WOkciY7JhFC+6nZcXqwrJrbThY+S5DnKzXr3qIS4qTX 7JX9l3U4AiIoJQ2YVJrY4mkzSnzvynyRbDyv1TMyXjwh7Pk0UGxRlD9L IzA=
Um im Browser zu sehen ob DNSSEC funktioniert kann man bei Firefox die Erweiterung DNSSEC Validator installieren.
Wer mehr über DNSSEC wissen will, sollte sich den Artikel in einer der letzten c'ts zu Gemüte führen.
Grüße,
Jörg
ich habe den Unbound Patch aus Trac auf den aktuellen Stand gebracht.
Änderungen:
- Es wird nicht mehr DLV (DNSSEC Lookaside Validation) benutzt, sondern mit Hilfe des DNS-Rootkeys validiert (sei Juni ist DNSSEC bei den Root-Server aktiv, deswegen ist DLV nicht mehr nötig...)
- rc.unbound entsprechend angepasst, so dass der root-key an die passende Stelle kopiert wird.
- Das Web-Frontend aus dem älteren Patch in trac habe ich auch gleich mit integriert.
Bei mir funkioniert die DNSSEC-Validierung in folgendem Setup:
- Dnsmasq forwarded alle DNS-Anfragen an unbound. Dazu unter "zusätzlich diese Upstream Nameserver nutzen (durch Leerzeichen getrennt): " die lokale IP und Port von unbound eintragen (also 192.168.178.1#533) und die Option "Durch AVM/Provider zugewiesene Upstream Nameserver nutzen" deselektieren.
- Unbound muss automatisch gestartet werden, ansonsten hat man kein DNS nach dem Reboot
- Damit DNSSEC funkioniert, benötigt die Fritz-Box die korrekte Systemzeit! Beim booten hat die Box dann folgendes Problem: sie will die Namen der Time-Server resolven, das geht aber noch nicht da das DNS noch nicht geht weil bei unbound die DNSSEC Validierung (bzw. eigentlich das holen der aktuellen Root-Signaturen) wg. der falschen Systemzeit fehlschlägt. Das ist dann ein klassischer Deadlock... Dafür gibt es zwei Lösungen entweder unbound so konfigurieren, dass er auch ohne DNSSEC arbeitet (val-permissive-mode: yes im config eintragen, aber dann braucht man DNSSEC eigentlich auch gar nicht aktivieren) oder für die Time-Server statt DNS-Namen einfach die IP-Adressen eintragen (im normalen fritz.box Webfrontend die IPs von den PTB-Servern eintragen: "192.53.103.108 192.53.103.103 192.53.103.104").
Ob DNSSEC funktioniert kann man ganz einfach unter linux testen mit dem Kommandos (funkioniert natürlich nur für DNSSEC signierte Domains wie z.B. isc.org):
dig -p 533 @192.168.178.1 www.isc.org +dnssec (Anfrage direkt an Unound welcher an Port 533 lauscht)
dig @192.168.178.1 www.isc.org +dnssec (Anfrage über dnsmasq, welcher ja nur die Anfrage an unbound weiterreicht)
Die Ausgabe sollte dann folgendermaßen aussehen (wichtig ist das bei flags der Wert "ad" für authenticated data vorkommt):
; <<>> DiG 9.7.1-P2 <<>> @192.168.178.1 www.isc.org +dnssec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21206
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 5, ADDITIONAL: 13
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;www.isc.org. IN A
;; ANSWER SECTION:
www.isc.org. 528 IN A 149.20.64.42
www.isc.org. 528 IN RRSIG A 5 3 600 20101115233208 20101016233208 31518 isc.org. HcMfYvpUUP0u4tO9YfbQ/2tBGvB+1d9tikMdEY+Xc6USsTYaU3jBNZG0 BMJhMhy7vdVU1WOkciY7JhFC+6nZcXqwrJrbThY+S5DnKzXr3qIS4qTX 7JX9l3U4AiIoJQ2YVJrY4mkzSnzvynyRbDyv1TMyXjwh7Pk0UGxRlD9L IzA=
Um im Browser zu sehen ob DNSSEC funktioniert kann man bei Firefox die Erweiterung DNSSEC Validator installieren.
Wer mehr über DNSSEC wissen will, sollte sich den Artikel in einer der letzten c'ts zu Gemüte führen.
Grüße,
Jörg