ads@UDM (extended)
Wie ich in meinem ersten Artikel vor einigen Tagen bereits geschrieben hatte, bietet Unifi (zumindest für die UDM-SE) ab der Version 3.0.13 eine integrierten Werbeblocker ein. Dieser basiert, wie auch PiHole darauf einzelne zu blockende Domainnamen auf 0.0.0.0 aufzulösen und somit nicht auffindbar zu gestalten.
Was mir dabei eigentlich von vornherein suspect war, ist der Inhalt der geblockten DNS-Einträge bzw. woher die genommen werden. Kann ich mich bei Ubiquity auf die „whitelist kaufen“ wenn ich auf der Liste lande damit ich nicht geblockt werde? Das ist mir alles zu undemokratisch und intransparent.
Auf der USG hatte ich bereits einen script-basierten Ansatz der die öffentlich verfügbaren PiHole Listen nutzte aber auch andere einbinden kann. Sowas wollte ich auch!
Gesagt, getan. Ich habe mich also mal durch das filesystem der UDM-SE „ge-grep-ed“ um den Ansatz zu verstehen und mir zu überlegen, „wie ich da meine eigenen Listen rein bekomme“.
Unter /run/dnsfilter liegen die eigentlich vom dnsmasq genutzten Datein, die je Subnetz, welches in der UI für die Anwendung des Werbeblockers ausgewählt wurde, erstellt werden:
Die eigentliche Liste wird aus dem Script /usr/share/ubios-udapi-server/ips/bin/getsig.sh erstellt. Dazu wird erst eine Liste von DNS Einträgen heruntergeladen und dann je Netzwerk auf o.g. Dateien generiert, so dass das Ergebnis der …-ads.list in etwa wie folgt aussieht:
Das ganze wird sowohl für IPv4 als auch für IPv6 gemacht (insofern letzteres genutzt wird).
Ich habe mir also nun das alte von der USG stammende Script genommen und entsprechend angepasst. Im Wesentlichen basiert getBlacklistHosts.sh auf dem buildhosts script von Matthew Headlee und steht unter der GPL3 auch in meinem GitHub Repository zur Verfügung.