OPNsense Unbound DNS:

Warum die Whitelist nicht funktioniert (und wie man es richtig macht)

Wer in OPNsense die Unbound-DNS-Blocklisten nutzt (z. B. Steven Black oder YoYo), kennt vermutlich das Problem: Man trägt eine Domain in die Whitelist ein — und sie wird trotzdem geblockt. Was auf den ersten Blick wie ein Bug aussieht, hat zwei konkrete Ursachen.

Das Problem: Einfache Domain-Einträge reichen nicht

Angenommen, man möchte beispiel-domain.com freigeben und trägt sie brav in das Feld Whitelist Domains unter Services → Unbound DNS → Blocklist ein. Das Ergebnis: Die Hauptdomain wird vielleicht durchgelassen, aber Subdomains wie track.beispiel-domain.com oder click.beispiel-domain.com bleiben weiterhin geblockt.

Ursache 1: CNAME-Bug

Es gibt einen bekannten Bug in der DNSBL-Implementierung: Wenn eine freigegebene Domain ein CNAME-Record ist, der auf eine geblockte Domain zeigt, wird sie trotzdem geblockt. Man müsste also zusätzlich die Zieldomain des CNAME-Records whitelisten — was mühsam und fehleranfällig ist.

Ursache 2: Subdomains werden nicht erfasst

Ein einfacher Eintrag wie beispiel-domain.com matcht eben nur genau diese Domain. Subdomains sind nicht automatisch eingeschlossen.

Die Lösung: Regex in der Whitelist

Was viele nicht wissen: Das Whitelist-Feld unterstützt reguläre Ausdrücke. Damit lässt sich eine Domain inklusive aller Subdomains auf einen Schlag freigeben.

Das Pattern dafür sieht so aus:

(.*)?(\.)?beispiel-domain.com

Dieser Ausdruck matcht sowohl beispiel-domain.com selbst als auch beliebige Subdomains wie track.beispiel-domain.com, click.beispiel-domain.com usw.

Wo wird das eingetragen?

Ganz normal im Feld Whitelist Domains unter Services → Unbound DNS → Blocklist. Pro Zeile ein Eintrag — entweder eine einfache Domain oder eben ein Regex-Pattern.

Fehlerdiagnose

Wenn ein Regex-Ausdruck ungültig ist, erscheint im Log unter /var/log/resolver/latest.log eine Meldung wie:

blocklist download : skip invalid whitelist exclude pattern "custom_pattern_1" (*\.example.net)

Der Stern allein (*\.example.net) ist kein gültiger Regex — man braucht das vollständige Pattern mit (.*)?(\.)?.

Fazit

Wer Domains in der OPNsense-Unbound-Blocklist zuverlässig whitelisten will, sollte immer das Regex-Pattern (.*)?(\.)?domain.com verwenden. Der einfache Domain-Eintrag ohne Regex funktioniert in vielen Fällen schlicht nicht — insbesondere bei Subdomains und CNAME-Auflösungen.


Quelle: OPNsense Forum – White Listed Domains not working in Unbound DNS: Blocklist

-GF