Restart unbound-dns via commandline

Started by t0mc@, December 30, 2017, 04:02:56 PM

Previous topic - Next topic
Hallo zusammen,

(wie) kann der unbound-dns service per commandline neu gestartet werden? Dieser wird ja nicht (mehr) per "systemctl" verwaltet, sondern wird über die Web-GUI per Klick neu gestartet.

Hintergrund:
Ich habe ein kleines Script geschrieben, welches eine unbound-dns Config Datei aus Online Quellen erstellt, um per DNS zentrales Ad-Blocking zu betreiben. Das funktioniert auch so, wie es soll.
Dieses Script soll nun per cron mehrmals am Tag aufgerufen werden um die geblockten Hosts aktuell zu halten. Damit die neu erstellte config im unbound-dns geladen wird, muß der Dienst neu gestartet werden. Die Config-Datei ist per "include: ..." in der Erweiterten Konfiguration des Unbound-DNS eingetragen.

Hat jmd. einen Tip?
Vielen Dank schon mal und viele Grüße
T0mc@

Am besten über den Neustart des DNS-Subsystems:

# pluginctl dns


Grüsse
Franco

Hallo T0mc@,

wäre es möglich, dass du dein Skript posten könntest? Hab das Gleiche vor.

Danke und Grüße

M.

Quote from: franco on December 30, 2017, 07:48:11 PM
Am besten über den Neustart des DNS-Subsystems:

# pluginctl dns


Grüsse
Franco
Hi Franco,

vielen Dank für den "Schubs", das scheint zu klappen. pluginctl kannte ich noch nicht, was genau macht das und gibt es noch optionen dafür? Ich kann nirgendwo ne Doku, man-page oder --help option dazu finden...

Ist aktuell nur ein internes Tool mit dem man das Plugin-System teilweise konfigurieren kann. Wir denken noch über die mittelfristige Verwendung nach, daher auch keine Doku. So viele Anwendungsfälle gibt es noch nicht.


Grüsse
Franco

Quote from: Micky on December 30, 2017, 08:22:42 PM
Hallo T0mc@,

wäre es möglich, dass du dein Skript posten könntest? Hab das Gleiche vor.

Danke und Grüße

M.
Hi Micky,

habe als "Anregung" das hier benutzt:

https://devinstechblog.com/block-ads-with-dns-in-opnsense/

Darin wird ein Shell - Script verlinkt, welches die unbound-config Datei auf Basis von Online Quellen erstellt.
Darin gibt es auch die Möglichkeit, per Whitelist diverse Ad - Hosts von der Aufnahme in die Blacklist auszuschließen, aber das hat bei mir irgendwie nicht richtig funktioniert. Daher habe ich das Very Quick and Dirty noch mal schnell in PHP geschrieben (kenne mich mit awk, welches im Shell Script benutzt wird, nicht wirklich gut aus):


<?php$blacklists=array('http://winhelp2002.mvps.org/hosts.txt','http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext','https://adaway.org/hosts.txt');$whitelist=array('cdn1.smartadserver.com','acdn.adnxs.com');$arHosts=array();$flHosts=fopen("/var/unbound/ad-blacklist.conf","w");$hosts=array();foreach($blacklists as $url) {        $hosts=array_merge($hosts,file($url));}foreach($hosts as $line) {        $arLine=explode(" ",trim($line));        if($arLine[0]=="127.0.0.1" || $arLine[0]=="0.0.0.0") {                $host=trim($arLine[1]);                if(!in_array($host,$whitelist) && !in_array($host,$arHosts) && $host!="") {                        $arHosts[]=$host;                        fwrite($flHosts,"server:\n");                        fwrite($flHosts,'local-data: "'.$host.' A 0.0.0.0"'."\n");                }        }}fclose($flHosts);?>






Quote from: franco on December 30, 2017, 09:02:05 PM
Ist aktuell nur ein internes Tool mit dem man das Plugin-System teilweise konfigurieren kann. Wir denken noch über die mittelfristige Verwendung nach, daher auch keine Doku. So viele Anwendungsfälle gibt es noch nicht.


Grüsse
Franco
Alles klar, vielen Dank für die Erläuterung. D.h. das Teil startet (unter anderem) das genannte Plugin (in dem Fall DNS) neu, egal, ob es schon läuft?

Ja, sauberer Neustart des Subsystems. Auch Dnsmasq und die Generierung der "hosts".

Ich habe dasselbe Shell Script im Einsatz und habe dafür eine Action geschrieben, um das Script per cron ausführen zu können.
Nun würde ich gerne den Neustart des DNS-Subsystems integrieren.. Am liebsten direkt in der action und im selben Block (update-hosts), notfalls angehängt am Script.

/usr/local/opnsense/service/conf/actions.d/actions_udapte-hosts.conf
[update-hosts]
command:/usr/home/update-hosts.sh
type:script_output
message:updating adblock file
description:Update adblock file



command:/usr/home/update-hosts.sh;pluginctl dns


Grüsse
Franco

Danke Franco, dachte nicht, dass das so einfach wäre  ::) ;D

Gruss  :)