Dienstag, 19. September 2017

IPSec VPN mit StrongSwan auf Debian Stretch (auch für Android 6+)

Nachdem ich Jahrelang Racoon aus den IPSec-Tools als IPSec VPN verwendet habe, musste ich mir für die Debian Stretch Installation etwas Neues suchen.

Seit Racoon 0.8.x funktionierte die PrivilegeSeparation nicht unter Linux - d.h. der Prozess kann nicht als non-root Benutzer laufen (Versuche enden immer in einem Segfault).
Daher hatte ich immer ein altes Lenny-Racoon  Paket im Einsatz; unter Sicherheitsaspekten ebenfalls ein Alptraum...

StrongSwan ist einer der Nachfolger des FreeS/WAN-Projekts, wird mit Debian Stretch geliefert und soll Racoon nun ersetzen.

Andriod VPN Dialog

Apache /tmp Ordnerzugriff unter Debian Stretch (Systemd Service Override)

Nach dem Upgrade von Debian Jessie auf Stretch funktionierte plötzkich eine Webanwendung nicht mehr, die sich eine SQLite-Datenbank mit anderen Prozessen im /tmp-Verzeichnis teilt.

PHP gab mir immer nur den nichtsagenden Fehler (conferences lautet der Tabellename, auf den zugegriffen werden soll):

no such table "conferences"


Samstag, 28. Januar 2017

HomeAutomation and multi-room audio revisited

In älteren Beiträgen hatte ich bereits meine Begeisterung über Multi-Room Audio und dessen Bedeutung für die HomeAutomation geteilt.
Inzwischen gibt es viele neue Entwicklungen, die den Möglichkeiten eines SONOS Systems etwas näher kommen.

Ich nutze nach wie vor kleine Router mit USB-Soundkarte auf OpenWRT Basis als Netzwerklautsprecher in jedem Raum. Es gibt drei Möglichkeiten, Sound auf diese Geräte zu schicken, wobei ich auf den letzten Punkt insbesonders eingehen möchte:
  1. AirPlay (iPhone, iPad, iPod touch)
  2. DLNA / UPNP-AV (Android)
  3. EsounD/PulseAudio (HomeAutomation Server)

AirPlay mit ShairPort-Sync

Auch wenn man AirPlay als geschlossenes System verachten müsste, es funktioniert einfach! Mit der neuen Implementierung des ShairPort Dienstes ist es kinderleicht Audio-Inhalte über mehrere Räume synchronisiert abzuspielen - selbst über WLAN.
Wer nur Apple Zuspieler besitzt, kommt hiermit am besten zum Ziel.

DLNA/UPNP-AV

Ich hatte mich mit meinem Blog-Post gefeiert, als ich mit Rygel nach jahrelanger Suche endlich einen DLNA Renderer für OpenWRT kompiliert bekam.
Für aktuelle OpenWRT Releases klappt das aufgrund der neuen GStreamer Version leider nicht mehr, so dass ich mich nach Alternativen umgesehen habe.
Eine ordentliche Lösung ist der GMRender-Resurrect, der deutlich mehr Meta-Daten Unterstützung liefert als mein alter Rygel (Installation auf OpenWRT). Abhängigkeiten in GStreamer - die ich nicht ganz durchschaue - führen leider dazu, dass das PlayBin Modul für MP3-Files einen komplizierten Abspielpfad wählt (ohne MadPlay), welcher zu einem stotternden Ergebnis führt.

In einem Kommentar zu meinem alten Post hat ein Benutzer UPMPDCLI als Weg für seine Lösung gefunden. Zumindest für MP3 Dateien sollte die MPD-basierte Lösung gut funktionieren.

EsounD/PulseAudio

Bei mir verrichtet ein kleines WD Mybook Live NAS seinen Dienst als HomeAutomation Server. Neben der Heizungs- und Lichtsteuerung ist auch Multi-Room Audio eine wichtige Aufgabe davon. Ich nutze seltener mein iPod/Handy um per Airplay/DLNA eine Playlist zusammenzustellen, sondern setze vielmehr auf Event-gesteuerte Aktionen (nach Hause kommen/ morgens aufstehen). Daher favorisiere ich einen Server-basierten Ansatz und hier kommt PulseAudio ins Spiel.

Inzwischen gibt es PulseAudio auch als Paket zum nachinstallieren für OpenWRT. Früher nutzte ich gern EsounD wegen des sehr geringen Footprints und minimalen Abhängigkeiten. Da PulseAudio das alte EsounD Protokoll unterstützt, lassen sich weiterhin alte EsounD Anwendungen nutzen.

Für die Netzwerkübertragung (Server zu Client) gibt es bei PulseAudio drei Möglichkeiten (Protokolle):

load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 auth-anonymous=1
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-rtp-recv

Während sich das module-esound-protocol wie ein alter EsounD ESD-Server verhält, ist das module-native-protocol sozusagen dessen moderner Nachfolger mit deutlich besserem Puffer-Verhalten.
Auf dem Server lassen sich auf diese Weise mit paplay/pacat/padsp Streams direkt auf die Netzwerkplayer schicken.
Alternativ kann man auf dem Server aber auch virtuelle Lautsprecher einrichten (mein NAS hat nichtmal einen USB-Port, geschweige denn eine Soundkarte). Dazu nutzt man dort:

load-module module-tunnel-sink server=<OpenWRT-ClientIP> sink_name=openwrt

Um auf mehrere Clients den gleichen Stream zu schicken, fasst man diese zu einer virtuellen Soundkarte zusammen:

load-module module-combine-sink sink_name=all slaves=openwrt1,openwrt2 adjust_time=2

Die Qualität ist ausreichend aber nicht überragend. Besser geeignet wäre ein Multicast Verfahren.
Um auf alle Empfänger mit geladenem module-rtp-recv zu spielen, benutzt man im Server:

load-module module-null-sink sink_name=rtp
load-module module-rtp-send source=rtp.monitor mtu=16384

Leider führt Multicast im WLAN zu einer Bandbreitensättigung, so dass an den Clients meistens nur ein Stottern ankommt

Mittwoch, 28. September 2016

OpenMediaVault 3.0 auf WD MyBook Live

Nachdem ich Debian Jessie auf meinem WD MyBook Live installiert habe, wollte ich das nackte System für etwas sinnvolles einsetzen. Ich hatte schon viel Gutes von OpenMediaVault gehört, da trifft es sich, dass an einer neuen 3er Release auf Debian Jessie Basis gearbeitet wird.

Das System macht einen Schlüsselfertigen Eindruck, es gibt diverse Images zum herunterladen.
Bei der Installation in ein bestehendes Debian muss lediglich eine APT-Sources Datei ergänzt werden:

#/etc/apt/sources.list.d/openmediavault.list
deb http://packages.openmediavault.org/public erasmus main

Leider wurden für die MBL Plattform (PowerPC) noch nicht alle aktuellen Pakete gebaut, so dass ich das kurz nachholen musste.
Nun kann die Installation beginnen:

apt-get update
apt-get install hdparm proftpd-basic php5-common openmediavault-keyring

wget http://loetzimmer.de/patches/php5-pam_1.0.3-4_powerpc.deb
wget http://loetzimmer.de/patches/php5-proctitle_0.1.2-4_powerpc.deb
wget http://loetzimmer.de/patches/proftpd-mod-vroot_0.9.3-1_powerpc.deb

dpkg -i php5-pam_1.0.3-4_powerpc.de
dpkg -i php5-proctitle_0.1.2-4_powerpc.deb
dpkg -i proftpd-mod-vroot_0.9.3-1_powerpc.deb

apt-get install openmediavault

Nach ein paar Minuten sind alle Pakete heruntergeladen und installiert.

Erwartungsgemäß zwingt OpenMediaVault das System sehr in die Knie. Ein sinnvolles arbeiten ist nicht möglich, da es aufgrund des mageren Speichers (256MB) ständig am Swappen ist.
Hinzu kommt der Single-Core Prozessor, der die vielen parallelen Prozesse kaum rechtzeitig abarbeiten kann.
Das ist in keiner Weise ein Problem von OpenMediaVault (das System sieht schick aus und hat einen gewaltigen Funktionsumfang!). Vielmehr ist das MBL ein acht Jahre altes Stück Hardware, welches eine bedachte Software-Auswahl zum sinnvollen Betrieb benötigt.

Debian Jessie auf WD MyBook Live (MBL) - Teil 3: Anpassungen

Nach erfolgter, sauberer Debian Jessie Intallation auf dem WD MyBook Live braucht es noch ein paar Handgriffe zum perfekten Heimserver.

Man sollte sich in jedem Fall im Klaren sein, dass mit 256MB Ram heute kein Blumentopf mehr zu gewinnen ist, aber eine bedachte Paketauswahl macht das System zu einem schnellen und leisen Server. (Ich habe z.B. mini-httpd statt Apache installiert, PHP ist bei mir der größte Speicherfresser, daher nutze ich es sehr sparsam. Eine Datenbank kommt nicht zum Einsatz - die Festplatte soll schließlich die meiste Zeit schlafen.)


Debian Jessie auf WD MyBook Live (MBL) - Teil 2: Bootstrap

Mein Anfangspost zu Jessie auf dem MyBook Live ist deutlich umfangreicher geworden als zunächst gedacht. Daher folgen nun die Schritte für die eigentliche Installation analog zu Wheezy Installation auf dem MBL.

(Ausgehend von einer frischen Installation aus dem Western Digital Original Image.)

Debian Jessie auf WD MyBook Live (MBL) - Teil 1: 4.x Kernel bauen

Nachdem ich nun schon einige Jahre Debian Wheezy auf meinem MyBookLive einsetze, bin ich neulich mal wieder über den Aktualitätsstand der Pakete gestolpert - so dass ich dem Leidensdruck nachgeben musste und auf Debian Jessie updaten musste.

Da uDev und Systemd nicht mit dem 2.6er Kernel zusammenarbeiten, musste ich zuerst einen aktuellen 4er Kernel kompilieren. Es gibt verschiedene Portierungen der 2.6er Patches auf die aktuellen Kernel, ausgehend von der Kernel 4.0 Portierung bis Kernel 4.1 Anpassungen.

Gestern habe ich gesehen, das das LEDE-Projekt (quasi Nachfolger von OpenWRT) ebenfalls seit einigen Monaten die Platform unterstützt. Ursprünglich fanden sich die Patches im GitHub von Christian Lamparter, inzwischen sind sie aber auch im offiziellen LEDE Repository.