OPNsense Forum

International Forums => German - Deutsch => Topic started by: t0mc@ on December 30, 2017, 04:02:56 PM

Title: Restart unbound-dns via commandline
Post by: t0mc@ on December 30, 2017, 04:02:56 PM
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@
Title: Re: Restart unbound-dns via commandline
Post by: franco on December 30, 2017, 07:48:11 PM
Am besten über den Neustart des DNS-Subsystems:

# pluginctl dns


Grüsse
Franco
Title: Re: Restart unbound-dns via commandline
Post by: 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.
Title: Re: Restart unbound-dns via commandline
Post by: t0mc@ on December 30, 2017, 09:00:26 PM
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...
Title: Re: Restart unbound-dns via commandline
Post by: 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
Title: Re: Restart unbound-dns via commandline
Post by: t0mc@ on December 30, 2017, 09:07:35 PM
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);?>





Title: Re: Restart unbound-dns via commandline
Post by: t0mc@ on December 30, 2017, 09:08:53 PM
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?
Title: Re: Restart unbound-dns via commandline
Post by: franco on December 30, 2017, 09:13:03 PM
Ja, sauberer Neustart des Subsystems. Auch Dnsmasq und die Generierung der "hosts".
Title: Re: Restart unbound-dns via commandline
Post by: Evil_Sense on April 07, 2018, 03:00:36 PM
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


Title: Re: Restart unbound-dns via commandline
Post by: franco on April 07, 2018, 05:18:04 PM
command:/usr/home/update-hosts.sh;pluginctl dns


Grüsse
Franco
Title: Re: Restart unbound-dns via commandline
Post by: Evil_Sense on April 09, 2018, 01:11:32 PM
Danke Franco, dachte nicht, dass das so einfach wäre  ::) ;D

Gruss  :)
Title: Re: Restart unbound-dns via commandline
Post by: franco on April 09, 2018, 01:54:13 PM
Hehe, machmal schon :)


Grüsse
Franco