Pi-Hole - Blockieren von "Pubnub.com"

Hi,
ich habe ungefähr seit einer Woche einen Raspberry PI 3 mit PiHole am laufen.
Zwei Netzwerkgeräte (Logitech Harmony Hub) sind alle 5 Minuten mit „Pubnub.com“ am kommunizieren. Wenn ich nun in der Blacklist „Pubnub.com“ als Wildcard hinzufüge, wird der ganze Datenaustausch mit Pubnub erfolgreich geblockt. Allerdings versucht der HarmonyHub nun jede Sekunde eine Verbindung mit Pubnub aufzubauen. Dadurch wird das Logfile sicherlich sehr groß.
Jetzt zu meiner eigentlichen Frage: Kann es zu Problemen kommen wenn sich das Logfile so rasant vergrößert, weil jede Sekunde neue Einträge hinzugefügt werden? Habe vorsichtshalber nach einer halben Stunde den Eintrag aus der Blacklist wieder entfernt, bevor das ganze System vielleicht abstürzt oder zusammenbricht.

Ach das dauert etwas... Ein solcher Eintrag hat 75 Bytes

May 10 20:42:1X dnsmasq[4XXX]: query[A] ps639.pubnub.com from 192.168.X.XXX

75byte x 3600s/h x 24h/tag = 6.480.000byte/tag = 6,48Mb/tag
Danach kommt Logrotate und archiviert das Ganze. Rechne dazu jetzt noch die normalen Queries (Bei mir heute Abend 5,58Mb) dann kommst du auf ~12,06Mb/tag. Wird dem PiHole beim Auslesen nicht so gefallen aber naja dann braucht er halt etwas länger. Ansonsten könntest du dir, falls du schnell Auslesen musst eine for-schleife basteln, die du davor einmal ausführst, die dir die Zeilen mit "pubnub.com" rauslöscht.

Edit:
Hoffe das geht:

sudo sed '.pubnub.' /var/log/pihole.log
Vielleicht ein bisschen am RegEx rumschrauben
https://wiki.ubuntuusers.de/sed/

Erstmal besten Dank für deine Antwort.

Da ich Anfänger/Neueinsteiger in der RaspberryPi und Linux Welt bin, habe ich da ein paar Fragen zu deiner Antwort.

  1. Was bedeutet „logrotate“ ?
    Ich vermute mal das nach einer eingestellten Zeit, vermutlich nach 24 Stunden, das Logfile vom jeweiligen Tag archiviert wird und ein neues Logfile erstellt wird. Wie viele Logfiles werden denn gespeichert? Werden die auch irgendwann mal gelöscht?

  2. Was meinst du mit „das Auslesen wird länger dauern“ ? Wenn ich mir die Datei im Editor anschauen möchte ?

  3. Und in welcher Datei muss ich den Befehl „sudo sed '.pubnub.' /var/log/pihole.log“ einfügen, damit die jeweiligen Zeilen aus dem Logfile gelöscht werden ?

Sorry für die vielen Fragen!

Gruss
Matze

  1. Logrotate sorgt dafür, dass ein Logfile nicht ins Unermessliche ansteigt. Das Log wird gepackt und archiviert. Die Anzahl der Archive etc. lässt sich einstellen.
  2. Bei Aufrufen im Abstand von 1s wird das Log recht schnell umfangreich werden. Langes Log => (relativ) langes Auslesen.
  3. Dafür legt du dir eine Datei an (z.B. logaufraeumen.sh), packst dort die gewünschten Befehle ein und stellst einen Cronjob (Stichwort crontab) ein, der das in regelmäßigen Abständen aufruft.

Zu deinem Logproblem: Ich hätte mit dem Vollschreiben vom Log noch ein Problem. Die SD-Karte ist schon eines der schwächeren Glieder im Raspberry. Vielen krepiert die SD-Karte nach ein paar Monaten und eine Neue muss her. Und hier wird die Karte noch zusätzlich jede Sekunde mit einem Eintrag belastet.

Meine bescheidene Meinung: Ein Gerät, welches ich blockiere und dann anfängt "wilde Sau" zu spielen, sprich jede Sekunde einen Aufruf startet, hat jegliche Daseinsberechtigung verloren. Es ist eine Unverschämtheit von Logitech so einen Müll zu programmieren. Falls das Gerät so wichtig zum leben ist, würde ich nach anderen Möglichkeiten suchen es zu bändigen.

1 Like

Logrotate ist ein bei den meisten OS vorinstalliertes Programm, das dir die logs nach einer von dir definierten Periode leert, den Inhalt in eine Datei verschiebt (logname.endung.1) am nächsten Tag in .2.gz (gezippt) umbenennt und die aktuellen logs in die Datei (logname.endung.1) schiebt. Hierbei kannst du definieren:

  • Die Periodendauer (daily, weekly, monthly) oder ob die Dateien erst bei einer bestimmten Größe archiviert werden (size ZAHLM/k)
  • Ob die Datei umbenannt und eine neue Datei erstellt wird die die Rechte "user:group" hat ODER ob der Inhalt nur kopiert und die Datei geleert wird (parameter "copytruncate")
  • Ob ein Script vor oder nach der Ausführung gestartet wird
  • Ob das log.1 gleich gezippt wird oder erst das log.2 (delaycompress)
  • ob überhaupt gezippt wird (compress)
  • wie viele Archive der Vergangenheit erhalten bleiben (rotate ZAHL)
  • ob die Datei auch wenn sie leer ist archiveirt werden soll (ifempty) (sinnvoll bei scripten, wenn das Script anhand der Endung den Tag ausrechnet oder du was kompliziertes vorhast)
  • ob bei fehlender Datei eine Fehlermeldung ausgegeben werden soll oder nicht (missingok)

Die Konfiguration ist in /etc/logrotate.d zu finden.
Das hier wird dir weiterhelfen: ln - (link) erzeugt einen Verzeichniseintrag einer existierenden Datei unter anderem Namen - LINUX - PRAXIS
Hier eine Anleitung von intern: Implement logrotation for /var/log/pihole.log (Der Pfad dort ist /etc/.pihole/advanced/logrotate, weil logrotate durch pihole angestoßen wird (/usr/sbin/logrotate --force /etc/.pihole/advanced/logrotate))

Dass das Auslesen länger dauert, damit meine ich, dass der lighttp server länger braucht, um die Datei auszulesen und dein Browser länger braucht, das Ganze schön zu sortieren. Du wirst das als vielleicht 5- bis 10-sekündige Verspätung wahrnehmen.

Ich häng mich mal hier mit dran, da es bei mir auch um die Harmony geht:

Wird durch das neue FTLDNS der Raspberry/SD mehr geschont?