Android-Dateisystem zuverlässig unter Linux mounten

Ich wollte heute einige Gigabyte an Fotos von meinem -Telefon auf meinen -Rechner kopieren. Per USB-Kabel hat dies leider nicht zuverlässig geklappt. Die Verbindung ist immer wieder abgebrochen. Letztendlich bin ich bei gelandet. Das Einbinden des Telefons mittels sshfs über mein WLAN funktioniert bei mir deutlich stabiler und auch etwas schneller als über ein USB-Kabel.

Grob gesagt habe ich folgende Schritte unternommen:

  1. Die App Termux unter Android installieren (https://f-droid.org/en/packages/com.termux/)
  2. Termux unter Android Zugriff auf den Speicher erteilen (Berechtigungsverwaltung unter Android).
  3. sshd unter installieren, konfigurieren und starten. Siehe https://wiki.termux.com/wiki/Remote_Access.
  4. Android-Dateisystem auf dem lokalen Rechner mittels sshfs einbinden: sshfs -p 8022 user@[IP des Telefons im WLAN]:/storage/emulated/0 [Verzeichnis, in das gemountet werden soll]

Nach Abschluss der Arbeiten kann sshd auf dem Telefon in Termux über „pkill sshd“ beendet werden.

ssh ist einfach super!

Überschussladesoftware für Wallboxen und PV-Anlagen

Freie Open Source Software zum Steuern des Überschussladens für viele verschiedene Wallboxen und Wechselrichter bzw. PV-Anlagen: https://evcc.io/

Die Software kann beispielsweise auf einem Raspberry Pi installiert werden und über ein Netzwerk Daten vom Wechselrichter abrufen und die Ladeleistung der steuern (sofern beide Geräte von der Software unterstützt werden).

Ich benutze diese Software nicht selbst und kann daher keine Bewertung abgeben. Sie soll aber gut funktionieren.

Wenn der DNS-Server nicht startet

Wenn der -Server mit der folgenden Meldung nicht startet…

„Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use“

…dann DNS-Resolver deaktivieren:

https://www.turek.dev/posts/disable-systemd-resolved-cleanly

Mit openHAB auf openWB-Wallbox zugreifen

Auf dem -Server:

  • MQTT-Binding installieren (ein MQTT-Server ist nicht nötig)
  • Neues Thing anlegen: MQTT-Broker mit dem Hostname bzw. der IP der Wallbox:
Bridge mqtt:broker:openwbbroker "OpenWBBroker" [ host="hostnameOpenWB", secure=false, clientID="openhabian",port=1883, username="",password=""]
  • Neues Thing für die anlegen:

// Beispielhaft Leistung der PV-Anlage und Hausverbrauch auslesen
Thing mqtt:topic:openwb "OpenWB" (mqtt:broker:openwbbroker) {

   Channels:
     Type number : pvpower "PV-Leistung" [
        stateTopic="openWB/pv/W",unit="W" 
      ] 
     Type number : powerconsumption "Hausverbrauch" [ 
        stateTopic="openWB/global/WHouseConsumption",
        unit="W"
      ] 
}

Die MQTT-Topics der Wallbox habe ich mit MQTT-Explorer ausgelesen.

  • Für die Channels können anschließend Items angelegt werden:
Number:Power pvpower "PV-Leistung" { channel="mqtt:topic:openwb:pvpower" }
Number:Power powerconsumption "Hausverbrauch" { channel="mqtt:topic:openwb:powerconsumption" }

Traefik: Zertifikate mittels Bash-Script exportieren

Ich habe heute TLS-Zertifkate mit einer modifizierten Version dieses Scripts exportiert:

https://blog.cubieserver.de/2021/minimal-traefik-v2-certificate-export/

Zu beachten ist, dass mittig im Script der Besitzer der Zertifikatsdateien geändert wird. Neben den Pfaden, die am Anfang des Scripts einzutragen sind, und dem Namen des Resolvers, muss diese Stelle ggf. angepasst werden.

Eigener DNS-Server als Upstream-Server für Fritzbox mit lokalen DNS-Einträgen

Ich habe einen eigenen DNS-Server, den ich bei meiner Fritzbox für DNS-Anfragen eingetragen habe. Der lokale DNS-Server ‚überschreibt‘ von ein paar öffentlichen Domains die IP-Adressen mit lokalen Adressen in meinem Netzwerk. Dabei ist zu beachten, dass der Rebind-Schutz der Fritzbox für diese Domains aufgehoben wird, weil die Fritzbox ansonsten die entsprechenden DNS-Einträge filtert.

Wichtig: DNS-Einträge, die ins „normale“ lokale Netz zeigen, funktionieren im Gästenetz nicht, weil das Gästenetz nicht auf das normale Netz zugreifen kann.

Portfreigabe für openWB

Wer eine hinter einer Firewall betreibt, muss die Ports 80 und 9001 freigeben, um auf das Webinterface zugreifen zu können. Außerdem dürfen die Ports nicht umgeleitet werden. D. h. der http-Zugriff muss zwingend über Port 80 erfolgen. Wenn ein anderer Port (z. B. 8080) verwendet wird, funktioniert der Zugriff nicht.

Für den Zugriff mittels MQTT muss zusätzlich Port 1883 freigegeben werden. Hinweis: Die MQTT-Brücke der Wallbox muss dafür nicht aktiviert werden.

Außerdem steht im Forum von openWB, dass man die Wallbox besser nicht über das Internet zugreifbar macht…

Zugriff vom internen Netz auf das Gästenetz einer Fritzbox

Ich verwende einen Raspberry Pi, dessen Ethernetanschluss an das „normale“ Netz angeschlossen ist. Wlan0 befindet sich im Gästenetz. Der Raspberry Pi leitet die Ports 8787 bis 8789 an drei verschiedene Hosts im Gästenetz weiter.

nftables-Konfiguration:

table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
                iifname "wlan0" drop
        }

        chain forward {
                type filter hook forward priority filter; policy drop;
                ct status dnat accept
        }
}
table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                oifname "wlan0" masquerade
        }

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                tcp dport 8787 dnat to 192.168.179.31:80
                tcp dport 8788 dnat to 192.168.179.35:80
                tcp dport 8789 dnat to 192.168.179.30:80
        }
}

Die Tabelle „filter“ soll dafür sorgen, dass über wlan0 keine Verbindungen eingehen oder weitergeleitet werden, sofern sie nicht durch die Portweiterleitung aufgebaut wurden.

Alternativ: Konfiguration als Shell-Script:

#!/bin/bash
nft add table inet filter 
nft 'add chain inet filter input { type filter hook input priority 0;policy accept;}'
nft 'add chain inet filter forward { type filter hook forward priority 0; policy drop;}'
nft add rule inet filter forward ct status dnat accept
nft add rule inet filter input iifname "wlan0" drop
nft add table nat
nft 'add chain nat postrouting { type nat hook postrouting priority 100 ; }'
nft 'add chain nat prerouting { type nat hook prerouting priority -100; }'
nft add rule ip nat prerouting tcp dport 8787 dnat to 192.168.179.31:80
nft add rule ip nat prerouting tcp dport 8788 dnat to 192.168.179.35:80
nft add rule ip nat prerouting tcp dport 8789 dnat to 192.168.179.30:80

nft add rule nat postrouting oifname "wlan0" masquerade

Zusätzlich muss in der Datei /etc/sysctl.conf folgende Einstellung gemacht werden:

net.ipv4.ip_forward = 1