Auskunft mit Siegel: dnsmasq als DNSSEC-validierender Resolver

Seite 2: dnsmasq mit DNSSEC bauen

Inhaltsverzeichnis

Wer den etwa auch im Router-Betriebssystem OpenWRT steckenden, schlanken dnsmasq als validierenden DNS-Resolver einsetzen will, muss ihn eventuell von Hand übersetzen und konfigurieren. Das geht mit der bei Redaktionsschluss aktuellen Version 2.72 unter OpenSuse 13.1 so: Zunächst laden Sie die SSL-Bibliothek Nettle in Version 2.71 herunter. Entpacken Sie sie, bauen Sie alle Komponenten (./configure ; make all) und installieren Sie diese (sudo make install). Zwischendurch angemeckerte fehlende Pakete ziehen Sie mit dem Paketmanager Ihrer Distribution nach. Anschließend entpacken Sie dnsmasq und bauen es statisch mit:

make all COPTS='-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC -DHAVE_DBUS'

Danach installieren Sie dnsmasq (sudo make install). Dabei landet das Binary dnsmasq in /usr/local/sbin. Benennen Sie als Root das originale dnsmasq in /usr/sbin in dnsmasq.orig um und setzen Sie einen symbolischen Link auf die neue Version (ln -s /usr/local/sbin/dnsmasq /usr/sbin/dnsmasq).

Aus dem Quellenverzeichnis kopieren Sie die Datei trust-anchors.conf nach /etc. Den dnsmasq-Aufruf ergänzen Sie an der für Ihre Distribution richtigen Stelle um die DNSSEC-Parameter, bei Opensuse 13.1 steckt er in /usr/lib/systemd/system/dnsmasq.service:

/usr/sbin/dnsmasq ... --dnssec --dnssec-check-unsigned

Hängen Sie an die dnsmasq-Konfigurationsdatei (typischerweise /etc/dnsmasq.conf) diesen Eintrag an:

conf-file=/etc/trust-anchors.conf

Falls Sie einen internen DNS-Resolver betreiben, der Anfragen nach lokalen Hosts beantwortet, kann dnsmasq fĂĽr bestimmte Domains diesen statt des externen verwenden. Dazu fĂĽgen Sie fĂĽr jeden lokalen Resolver eine Zeile Ă  la

server=/heise.de/ct.de/ix.de/ 10.10.10.32

ein. Weisen Sie dnsmasq ferner an, als externe Server welche zu nehmen, die DNSSEC liefern:

server=IP-Adresse1
server=IP-Adresse2

Die Adressen finden Sie wie vorn bei Opensuse beschrieben. Stellen Sie nun den Host so ein, dass er sich selbst befragt (nameserver 127.0.0.1 in /etc/resolv.conf).

Damit DNSSEC funktioniert, muss der Host die richtige Zeit haben, die das Betriebssystem beim Booten normalerweise aus der batteriegestĂĽtzten Mainboard-Uhr (RTC) holt. Die gibt es auf Routern nicht, weshalb dort beim Booten ein Tool wie Chrony oder NTP die Zeit aus dem Netz holt.

Weil das Tool aber Servernamen per DNS auflösen muss, weist der zusätzliche Parameter --dnssec-no-timecheck dnsmasq beim Start an, bei Validierungen zunächst nicht die Zeit zu überprüfen. Bauen Sie im Bootprozess an passender Stelle – nachdem die Zeit gestellt ist – den Befehl killall -HUP dnsmasq ein. Das Signal lässt dnsmasq seinen Cache leeren und setzt das No-Timecheck-Flag zurück, sodass die folgenden Validierungen auch die Zeit berücksichtigen. (ea)