Fryboyter

Probleme mit dem Rate-Limit von Pi-hole

Morgens halb zehn in Deutschland. Na ja eigentlich war es heute kurz nach 6 Uhr. Ich wollte noch kurz Dateien verschicken bevor ich zur Arbeit fahre. Was aber nicht funktioniert hat. Kein Gerät in meinem privaten Netzwerk konnte eine Internetverbindung aufbauen.

Wenn der Tag schon so beginnt, kann es nur besser werden. Oder noch viel schlechter. Die Lösung des Problems war dann aber doch relativ einfach. Aber erst einmal muss ich etwas ausholen.

Auf einem Raspberry Pi ist, unter anderem, eine Kombination von Pi-Hole und unbound installiert. Im Router ist Pi-Hole als DNS eingetragen. Alle im Netzwerk vorhandenen Geräte sind so konfiguriert, dass der Router der einzige DNS ist.

Gestern Nacht hat nun ein Mobiltelefon versucht den F-Droid-Client über das Netzwerk zu aktualisieren. Was aber die ganze Nacht nicht funktioniert hat. Warum kann ich nicht sagen. Da hierbei so hartnäckig vorgegangen wurde, wurden im gesamten Netzwerk durchgehend mehr als 1000 Anfragen pro Minute an Pi-hole gestellt. Und das mag Pi-hole nicht. In der Standardkonfiguration ist Pi-hole so konfiguriert, dass ein Client für einen bestimmten Zeitraum geblockt wird, wenn dieser mehr als 1000 Anfragen pro Minute stellt. Stellt der betreffende Client danach weiterhin zu viele Anfragen, wird er wieder für einen bestimmten Zeitraum geblockt. Und so weiter.

Da nun alle DNS-Anfragen über den Router laufen, ist das für Pi-hole der einzige Client. Und schon ist alles lahmgelegt. DoS sozusagen.

Seit Jahren hat das Limit kein Problem gemacht. Daher gehe ich hier von einem Einzelfall aus. Da allerdings der Raspberry Pi nicht einmal ins Schwitzen gekommen ist, habe ich das Rate-Limit testweise komplett deaktiviert.

In der Datei /etc/pihole/pihole-FTL.conf habe ich die Zeile RATE_LIMIT=1000/60 auf RATE_LIMIT=0/0 geändert. Stattdessen kann man natürlich das Limit auch entsprechend erhöhen. Was in dem Fall aber nicht viel gebracht hätte.

Laut https://github.com/pi-hole/FTL/pull/1052 bin ich wohl nicht der Erste, bei dem das Limit überschritten wurde. Ich kann allerdings die Entwickler von Pi-hole durchaus verstehen, warum sie sich für das Limit entschieden haben.

OSBN

Gefälschte USB-Sticks erkennen

Letzte Woche hat mich ein Bekannter um Hilfe gebeten. Er hat Daten auf seinen neuen USB-Stick verschoben, was ohne Fehlermeldung funktioniert hat. Allerdings waren einige Daten danach nicht auf dem Stick vorhanden. Backups sei Dank hat er das mehrmals mit dem gleichen Ergebnis probiert.

Noch bevor ich mir den Stick überhaupt angesehen habe, habe ich schon vermutet, dass er sich einen gefälschten USB-Stick angeschafft hat, bei dem mehr vorhandener Speicherplatz angezeigt wird als tatsächlich vorhanden ist.

Um meine Vermutung belegen zu können, habe ich mir das Tool F3 (https://github.com/AltraMayor/f3) installiert und den Stick mittels f3probe –destructive –time-ops /dev/sdX getestet. Und siehe da, der Stick hat tatsächlich deutlich weniger Speicherplatz als angegeben. Es handelt sich daher klar um eine Fälschung.

Von daher, testet neu gekaufte USB-Sticks unbedingt bevor ihr sie das erste mal nutzt. Denn auch ein Kauf bei einem bekannten Händler ist nicht unbedingt eine Garantie, dass es sich wirklich um ein Original handelt.

Neben f3probe besteht F3 noch aus weiteren Befehlen.

Mit f3write werden mehrere 1 GB große Dateien auf den USB-Stick geschrieben bis kein Speicherplatz mehr vorhanden ist. Mit f3read werden diese anschließend gelesen. Neben dem Test, ob der Stick tatsächlich über den angegebenen Speicherplatz verfügt, wird hierbei somit noch die Lese- und Schreibgeschwindigkeit getestet. Dies dauert allerdings deutlich länger als f3probe.

Hat man einen gefälschten USB-Stick und kann oder will man diesen nicht beim Händler reklamieren, kann man den Befehl f3fix nutzen. Damit lässt sich eine Partition erstellen, die dem tatsächlich vorhanden Speicherplatz entspricht. Somit ist eine Nutzung zumindest halbwegs sicher möglich.

Wer lieber eine grafische Oberfläche will, kann noch zusätzlich https://github.com/zwpwjwtz/f3-qt installieren.

OSBN

Hugo - Tote Links mit der Wayback Machine wiederbeleben

Seit 2009 veröffentliche ich nun schon diverse Artikel. Bei einigen sind inzwischen die Links auf andere Internetseiten nicht mehr aufrufbar, weil die Betreiber der jeweiligen Seite entweder den Artikel gelöscht haben oder weil es die Seite gar nicht mehr gibt. Daher will ich in den nächsten Tagen etwas aufräumen, ohne hierbei viele Artikel komplett zu löschen.

Ich habe mir daher überlegt, ob es wohl machbar ist, dass ich so viele Links wie möglich durch eine, beim Internet Archive gespeicherte, Version ersetzen kann. Machbar ja, aber manuell ist das ziemlich aufwändig.

Nehmen wir als Beispiel den Artikel https://fryboyter.de/microsoft-eula-fuer-englischsprachige-dummies/ aus dem Jahre 2009. Der darin genannte Link auf dailycupoftech.com funktioniert nicht mehr. Händisch würde ich nun den Link unter https://web.archive.org eingeben und mir eine der gespeicherten Versionen heraussuchen (z. B. https://web.archive.org/web/20080609041611/http://www.dailycupoftech.com/2008/05/21/ms-eula-in-plain-english/) und diesen beim Artikel anstelle des ursprünglichen Links eintragen.

Das hat zwei Nachteile. Das Heraussuchen einer Version benötigt mehr Zeit. Und ich muss aufpassen, dass ich eine Version erwische, die möglichst nahe am Veröffentlichungsdatum meines Artikels liegt. Was wiederum mehr Zeit benötigt.

Also kommt das nicht infrage. Was also machen? Wenn man Hugo zum Erzeugen der Internetseite nutzt, dann wäre eine Lösung ein sogenannter Shortcode. Dieser könnte wie folgt aussehen.

<a
	href="https://web.archive.org/web/{{ $.Page.Params.PublishDate.Format "20060102150405" }}/{{ .Get 0 }}"
	class="archive"
>
	{{ .Inner }}
	<img src="{{ "images/wayback.svg" | relURL }}" alt="" />
</a>

Und hier dazu gehörenden CSS-Anweisungen.

.archive img {
	vertical-align: super;
	height: 12px;
	width: 12px;
}

Um beim bereits genannten Artikel zu bleiben, trägt man einfach {{< wayback "http://www.dailycupoftech.com/2008/05/21/ms-eula-in-plain-english" >}}Daily Cup of Tech{{< /wayback >}} anstelle des ursprünglichen Links im Artikel ein.

Aufgrund von $.Page.Params.PublishDate.Format "20060102150405" sucht sich der Shortcode die beim Internet Archive gespeicherte Version heraus, die möglichst nahe am Veröffentlichungsdatum des Artikels liegt.

Unter https://fryboyter.de/microsoft-eula-fuer-englischsprachige-dummies/ kann man sich dann das Ergebnis ansehen. Was das zusätzliche Icon beim Link betrifft, bin ich mir noch nicht sicher, ob ich es so lasse wie es ist, bzw. ob ich es überhaupt haben will.

Einen Nachteil hat der Shortcode allerdings. Wenn die betreffende Seite nicht bei der Wayback Maschine gespeichert ist, funktioniert er nicht. Etwas Handarbeit ist also weiterhin nötig. Es erspart also nur die Version herauszusuchen, die möglichst nahe am Veröffentlichungsdatum des Artikels liegt.

OSBN

Alternative zu IFTTT

Bei IFTTT (If This Then That) handelt es sich um einen Dienst, mit dem sich diverse Dinge automatisieren lassen. In meinem Fall wird geprüft, ob über den RSS-Feed ein neuer Artikel veröffentlicht wurde. Wenn ja, dann wird bei Mastodon einen Beitrag mit der Überschrift und einem Link auf den Artikel erstellt. Hierzu hatte ich vor ein paar Wochen erst einen Artikel veröffentlicht.

Technisch gesehen funktioniert es ohne Probleme. Allerdings habe ich mir trotzdem Gedanken gemacht, da ich zwei mögliche Probleme sehe.

Zum einen läuft das Ganze über Server Dritter. In dem Fall ist es kein Problem, da nur der frei zugängliche RSS-Feed abgefragt wird, der wiederum nur den Blödsinn enthält, den ich veröffentliche. Aber trotzdem…

Was ich problematischer finde ist, dass ich das kostenlose Angebot von IFTTT nutze. Dies könnte eines Tages eingestellt werden. Prinzipiell bin ich bereit für einen Dienst zu bezahlen. Allerdings nicht in diesem Fall, weil ich auch gut ohne Mastodon leben kann.

Daher habe ich mir mal rein aus Interesse mögliche Alternativen angesehen. Im Grunde sind das alles ähnliche Dienste, die von Dritten angeboten werden. Und deren Funktionsumfang oft geringer, und die Nutzung schwieriger ist.

Als Alternative die man selbst hosten kann, habe ich Huginn gefunden. Das Tool begeistert mich auf der einen Seite, schreckt mich allerdings auf der anderen Seite ab.

Huginn bietet von Haus aus viele Möglichkeiten. Zum Beispiel, dass man automatisch informiert wird, wenn bei einem Wetterbericht ein regnerisches Wetter gemeldet wird. Oder eben, dass über meinen RSS-Feed ein neuer Artikel bei Mastodon veröffentlicht wird.

Allerdings ist die Einrichtung nicht so einfach zu erledigen wie bei IFTTT. Vor allem, wenn man eigene Agents anstelle der fertigen nutzen will. Huginn erfordert also Einarbeitszeit. Und die Dokumentation könnte besser sein.

Daher ist das ganze eher kein Wochenendprojekt für mich, sondern eher eines für den Jahresendurlaub. Daher gebe ich an der Stelle auch kein Beispiel, was man wie mit Huginn alles machen kann.

OSBN

PDF-Dateien mit durchsuchbarer Textebene erstellen

Sicherlich hat jeder schon einmal eine PDF-Datei erhalten, deren Text man beispielsweise nicht markieren und kopieren kann. Dies liegt in der Regel daran, dass der eingescannte Text als Bild in der PDF-Datei eingebettet wurde. Der Multifunktionsdrucker, den ich beruflich nutze, macht das zum Beispiel. Das Problem lässt sich allerdings relativ leicht und zuverlässig lösen.

Das Tool OCRmyPDF fügt in die PDF-Datei eine zusätzliche Textebene über dem Bild ein, deren Inhalt man markiere und kopieren sowie durchsuchen kann. Für die Texterkennung wird Tesseract verwendet.

Im besten Fall führt man einfach ocrmypdf input.pdf output.pdf aus. Input.pdf ist hierbei die Originaldatei und output.pdf ist die Datei, die mit der zusätzlichen Textebene gespeichert wird. Weitere Funktionen und mögliche Optimierungsmöglichkeiten kann man in der Dokumentation nachlesen. Je nachdem in welcher Sprache der Inhalt der Originaldatei vorliegt, muss man ggf. vorher noch ein Sprachpaket wie beispielsweise tesseract-data-eng (englische Sprachpaket) installieren. Fehlt diese, gibt ORCmyPDF aber auch einen entsprechenden Hinweis aus und bricht ab.

Getestet habe ich OCRmyPDF mit ein paar einfachen PDF-Dateien mit gut lesbarem Text getestet. Bei diesen wurde die zusätzliche Textebene sehr gut über die Bilddatei gelegt, so dass der Text beider Ebenen sehr genau übereinander lag, so dass das Markieren und Kopieren des Textes kein Problem war. Auch das Durchsuchen der Datei hat funktioniert. Die neue Datei benötigt logischerweise mehr Speicherplatz aber es hält sich meiner Meinung nach in Grenzen. Die originale PDF-Datei mit einer DIN-A4-Seite mit den ersten Zeilen von “Der Rabe” von Edgar Allan Poe ist beispielsweise 49,4 KB groß. Die um die Textebene erweiterte PDF-Datei ist 49,8 KB groß.

OSBN