Notizzettel: Wenn mal wieder sinnlose Fehler auftreten…

Wenn man plötzlich mit recht nichtssagenden Meldungen wie

Version: 2.1.1, Linux Version: 2.1.1, Package Iteration: 
go get -v github.com/tools/godep
github.com/tools/godep
go build github.com/tools/godep: /usr/lib/go/pkg/tool/linux_amd64/link: signal: killed
exit status 1
exit status 1

oder auch

remote: Counting objects: 56476, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 56476 (delta 0), reused 0 (delta 0), pack-reused 56464
Receiving objects: 100% (56476/56476), 94.21 MiB | 6.98 MiB/s, done.
error: index-pack died of signal 92)   
fatal: index-pack failed

beworfen wird, so kann die Ursache auch recht banal und im Log schnell auffindbar sein:

Out of memory: Kill process 2308 (git)

Eyeup, die Kiste hat recht wenig RAM und keinen SWAP eingerichtet – könnte krachen, vor allem wenn Speicherfresser wie node.js mitreden möchten. Auch kann es in diesem Fall helfen /tmp nicht als Ramdisk (tmpfs) laufen zu lassen.

BitBastelei #162 – Wir bauen ein Freifunk-Gluon

BitBastelei #162 - Wir bauen ein Freifunk-Gluon

(38 MB) 00:10:56

2015-08-23 10:00 🛈

Zwischen den ganzen Chaos-Konferenzen muss auch noch etwas Hausarbeit sein: Das auf OpenWRT basierende Freifunk-Framework „Gluon“ ist vor kurzem in der Version 2015.1.2 erschienen – guter Zeitpunkt um die neue Version zu kompilieren und zu zeigen, wie man selbst mit wenigen Schritten seine eigene Firmware baut und so lokale Anpassungen vornehmen kann.

Gluon: https://github.com/freifunk-gluon/gluon
Sit.conf MYK: https://github.com/FreifunkMYK/site-ffmyk

ZFS: Dateien trotz vollem Datenträger löschen

Narf – da war der Bug schneller als der Admin hinter dem Monitoring: 0k freier Speicher vermeldet ein ZFS-Storage. Na kein Problem, kaputtes Programm gestoppt und schnell mal den Schrott gelöscht. Oder auch nicht:

rm: cannot remove file: Disk quota exceeded

Really?!

Ursache wäre wohl „COW“ – Copy on write. Bei Änderungen werden die neuen Daten erst mal auf die Festplatte geschrieben – erst wenn dort kein Fehler auftritt werden die entsprechenden Zeiger im Dateisystem aktualisiert und die vorherigen Daten ungültig.

Die Lösung, welche z.B. bei der Uni Freiburg zu finden ist, ist effektiv, aber mir nicht wirklich verständlich: Anstatt die Datei zu löschen wird sie erst mit /dev/null überschrieben – dies schlägt trotz COW offenbar nicht fehl. Der so freigewordene Speicherplatz, welche zuvor durch den Inhalt der Datei belegt wurde, sollte nun ausreichen um den Löschbefehl umzusetzen:

rm test
#rm: cannot remove file `test': Disk quota exceeded
cp /dev/null test
rm test
stat test
stat: der Aufruf von stat fuer "test" ist nicht moeglich: Datei oder Verzeichnis nicht gefunden

BitNotice #95 – Windows 10 Shenanigans | Edge vs. Firefox | Cortana-Spaß

BitNotice #95 - Windows 10 Shenanigans | Edge vs. Firefox | Cortana-Spaß

(36.6 MB) 00:34:43

2015-08-21 15:36 🛈

Irgnedwo zwischen BitNotice und Ranttime: Ein Linux-User installiert Windows 10.
16:42 Spaß mit Cortana
27:50 Microsoft Edge vs. Mozilla Firefox

Arduino® Pro Mini Pinout Cheat-Sheet

Ich arbeite auf Grund des geringen Preises häufig mit Arduino®-kompatiblen Boards der „Pro Mini“-Serie. Leider sind die Pins auf diesen Boards nicht nach der CPU sondern dem Standard der Arduino-IDE beschriftet. Bisher nutzte ich diverse Pinout Cheat-Sheets aus dem Netz, jedoch haben viele dieser Diagramme vertauschte Pins, welches bei mir in den letzten Wochen zu einigen fehlerhaften Aufbauten führten. Lange Rede kurzer Sinn: Ich werfe ein weiteres Cheat-Sheet in den Raum – hoffentlich mit weniger fehlerhaft beschrifteten Pins. Wenn doch etwas auffällt: Die Kommentare sind offen.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2015/08/prominipinout-1.2-300×212.png
[DA]

BitBastelei #161 – DECT-Ladegerät

BitBastelei #161 - DECT-Ladegerät

(845.3 MB) 00:08:18

2015-08-16 10:00 🛈

Dank der Leute von Eventphone steht auf vielen Veranstaltungen des CCC-Umfeldes ein inzwischen sehr zuverlässiges DECT-Netz zur Verfügung. Ich möchte andere Leute auf dem Chaos Communication Camp erreichen, also suchen wir mal ein solches „Mobiltelefon“ aus den Kisten. Leider konnte ich nur ein Modell auftreiben, welches eine kombinierte Lade/Sendestation hat. Da ich ja das Campnetz nutzen möchte würde die Sendestation nur unnötig die ohnehin knappen Funkkapazitäten belasten. Schauen wir mal, ob wir daraus ein reines Ladegerät gebastelt bekommen.

0:35 – A14, nicht A40

Umbau von Tobias

BitBastelei #160 – Arduino-RGB-LED-Spaß

BitBastelei #160 - Arduino-RGB-LED-Spaß

(347.5 MB) 00:18:04

2015-08-09 10:00 🛈

Das Chaos Communication Camp steht vor der Tür – wichtigste Zutat? Blinkenlights! Gezeigt werden gleich 3 Konzepte für RGB-LEDs am Arduino Pro Mini:
– RGB-Streifen mit HL1606-Controller
– „Klassischer“ RGB-Streifen mit MOSFETs
– RGB-Knoten auf Basis des RGB-CTL aus BitBastelei #11

Weitere Links:

s3cmd: Instabile Verbindung bei PUT

s3cmd ist ein kleines CLI-Tool, welches die Verwaltung von Amazon S3 ermöglicht. Beim hochladen von Dateien mit der Version 1.0.1 aus dem Paketmanager zeigte sich jedoch folgendes Bild:

WARNING: Upload failed: test ([Errno 32] Broken pipe)
WARNING: Retrying on lower speed (throttle=1.25)
WARNING: Waiting 15 sec...
test -> s3://testbucket/test  [1 of 1]
       1234 of 5678     0% in    1s     1.23 kB/s  failed
ERROR: Upload of 'test' failed too many times. Skipping that file.

Ursache ist in meinem Fall, dass mein Bucket nicht in „USA Standard“ liegt. Ältere Versionen von s3cmd greifen jedoch immer dort zu. Zwar leitet Amazon den Request passend um, hierbei scheint sich das Tool jedoch zu verschlucken.

Beheben lässt sich der Fehler auf 2 Arten: Entwerden man nutzt eine neuere Version des Tools, z.B. 1.5.2, diese müssen jedoch meist manuell installiert werden und sind nicht in den Quellen der Paketmanager zu finden. Alternativ kann man der alten Version auf die Sprünge helfen, in dem man die Server direkt richtig hinterlegt, für Irland z.B.:

[default]
...
bucket_location = IE
...
host_base = s3-eu-west-1.amazonaws.com
host_bucket = %(bucket)s.s3-eu-west-1.amazonaws.com
...
use_https = True
    

BitBastelei #159 – Reparatur: Open Bench Logic Sniffer

BitBastelei #159 - Reparatur: Open Bench Logic Sniffer

(315.7 MB) 00:22:23

2015-08-02 10:00 🛈

Mit dem Open Bench Logic Sniffer kann man (in der Grundausstattung) bis zu 16 TTL-Kanäle aufzeichnen und so z.B. Kommunikationsstrecken aufzeichnen und dir dortigen Informationen am PC ansehen. Zumindest wenn er noch funktioniert. Zum Einen sind einige Eingänge an meinem Modell nicht mehr funktionsfähig, zum Anderen war ich etwas schnell und habe den 3.3V-Regler des Boards kurzgeschlossen. Auf zur Reparatur…

Links:

Apache als Reverse Proxy

Apache ist als Webserver den meisten bekannt, mit der üblicherweise mitgelieferten mod_proxy_html kann er jedoch auch als reverse Proxy eingesetzt werden. Ein solcher Proxy nimmt HTTP-Anfragen entgegen und leitet sie an einen anderen Weberver weiter. Dies kann z.B. hilfreich sein um Anfragen auf mehrere Server im Hintergrund zu verteilen, eine zusätzliche Abschottung interner Server bereitstellen oder auch durch die Terminierung der HTTPS-Verbindung oder dem Vorfiltern von Headern die Belastung der nachgeschalteten Systeme zu mindern.

Zur Konfiguration stellt man erst sicher, dass das Modul geladen ist. Hierzu wird in der Apache-Konfiguration (Arch Linux: /etc/httpd/conf/httpd.conf) sichergestellt, dass die folgenden Zeilen aktiv sind:

LoadModule xml2enc_module modules/mod_xml2enc.so
LoadModule proxy_html_module modules/mod_proxy_html.so

Nun kann im gewünschten VHost eine passende Weiterleitung realisiert werden:

#Nur definierte Requests annehmen
ProxyRequests Off

#Fileshare
ProxyPass /dateiserver http://publicfiles.lan.adlerweb.info/upload
ProxyPassReverse /dateiserver http://publicfiles.lan.adlerweb.info/upload

#Requestform
ProxyPass /request https://http.lan.adlerweb.info/request
ProxyPassReverse /request https://http.lan.adlerweb.info/request

#Buildimg
ProxyPass /autobuild https://inferno.lan.adlerweb.info/results
ProxyPassReverse /autobuild https://inferno.lan.adlerweb.info/results

Wenn das interne Ziel per HTTPS angesprochen werden soll, so sollte die jeweilige Zertifizierungsstelle im System bekannt sein. Hierzu kann auch eine eigene CA-Datei verwendet werden:

SSLProxyCACertificateFile /etc/ssl/private/interneca.crt

Wenig Zeilen, große Wirkung: Surft man nun die angegebenen Pfade des Webservers an, so wird die Anfrage an den angegebenen Server weitergeleitet. Der Apache selbst terminiert hierbei die Clientverbindung, entsprechend werden Funktionen (z.B. externes HTTPS-Zertifikat) verwendet. Auch DoS-Angriffe oder versuche mit kaputten HTTP-Headern treffen primär den exponierten Server und schlagen nicht ohne Weiteres zum internen Webserver durch.

Update: ProxyRequests Off fehlte – wenn auf On agiert der Server als offener Proxy-Server. Default ist Off, daher sollte auch ohne explizites definieren nichts passieren, aber vorsichtshalber kann es nichts schaden hier nochmal zu definieren.

Nerd Inside