Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10835
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von Baxxy » 16.06.2020, 15:42

Zuallererst mal ein Dankeschön an jmaus für die Integration des Wireguard-Protokolls in RaspberryMatic!

Wenn man schon ein bisschen mit Wireguard herumgespielt hat sollte es kein allzu großes Problem sein ein VPN damit zu etablieren,
dachte ich. :wink:
Leider sind die nützlichen wireguard-tools bei RaspberryMatic (noch) nicht mit an Board so das meine alte Herangehensweise mit...

Code: Alles auswählen

wg-quick up wg0
natürlich nicht funktioniert.

Also für den Test alles erstmal separat per shell eintippeln...
1.Wireguard Interface hinzufügen:

Code: Alles auswählen

ip link add wg0 type wireguard
2.IP-Adresse für das Wireguard Interface festlegen:

Code: Alles auswählen

ip addr add 100.64.113.9/24 dev wg0
3.vorher angelegte Konfigurationsdatei für das Wireguard Interface laden:

Code: Alles auswählen

wg setconf wg0 /usr/local/addons/wireguard/rmtest2.conf
4.Wireguard Interface starten:

Code: Alles auswählen

ip link set wg0 up
5.Ergebnis: Wireguard VPN Verbindung steht. :)

Da ich nun aber kein Linux-Kenner bin stellt sich mir die Frage wie und wohin mit den ganzen Befehlen, damit die Wireguard VPN Verbindung beim Start von RaspberryMatic aufgebaut wird. :?: (Bei einem Raspbian OS geht das einfach mit...

Code: Alles auswählen

sudo systemctl enable wg-quick@wg0
Danke schon mal für Eure Tipp's, Anregungen und Lösungen.

Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von jmaus » 16.06.2020, 16:10

Baxxy hat geschrieben:
16.06.2020, 15:42
Da ich nun aber kein Linux-Kenner bin stellt sich mir die Frage wie und wohin mit den ganzen Befehlen, damit die Wireguard VPN Verbindung beim Start von RaspberryMatic aufgebaut wird. :?: (Bei einem Raspbian OS geht das einfach mit...

Code: Alles auswählen

sudo systemctl enable wg-quick@wg0
Na entweder portiert einer dieses ominöse "wg-quick" Paket von Debian zu Buildroot oder es bastelt einer ein CCU Addon oder du führst die von dir genannten Befehle einfach in der Datei /usr/local/etc/rc.local (die du ggf. erst selbst anlegen, ausführrechte geben und mit "#!/bin/sh" am anfang versehen musst). Dann sollten die Befehle automatisch beim hochfahren der Zentrale ausgeführt werden.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10835
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von Baxxy » 16.06.2020, 16:21

Bitte folgendes keinesfalls als "meckern" verstehen!
jmaus hat geschrieben:
16.06.2020, 16:10
dieses ominöse "wg-quick" Paket
Naja, so "ominös" kann es nicht sein. :wink:
Das wg-quick gehört ja zu den wireguard-tools welche bei anderen Distribution bei der Installation von Wireguard mit installiert werden. Leider bin ich planlos was Portierungen oder bauen von CCU Add-Ons's betrifft.
Gefunden habe ich nur das hier: https://git.busybox.net/buildroot/tree/ ... uard-tools
jmaus hat geschrieben:
16.06.2020, 16:10
einfach in der Datei /usr/local/etc/rc.local
Das hilft mir schon mal weiter, probiere ich gleich aus. Danke!

Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von jmaus » 16.06.2020, 17:00

Baxxy hat geschrieben:
16.06.2020, 16:21
jmaus hat geschrieben:
16.06.2020, 16:10
dieses ominöse "wg-quick" Paket
Naja, so "ominös" kann es nicht sein. :wink:
Das wg-quick gehört ja zu den wireguard-tools welche bei anderen Distribution bei der Installation von Wireguard mit installiert werden. Leider bin ich planlos was Portierungen oder bauen von CCU Add-Ons's betrifft.
Gefunden habe ich nur das hier: https://git.busybox.net/buildroot/tree/ ... uard-tools
Und genau das ist auch schon bei RaspberryMatic dabei. Allerdings ist es so das es "wg-quick" nur gibt wenn es auch eine "bash" shell gibt, denn wg-quick ist nichts anderes als ein bash shell script. Nun liefere ich aber eben RaspberryMatic nicht mit bash aus um ingesamt den footprint gering zu halten. Müsste also mal jemand wg-quick auf die ash shell portieren :)
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10835
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von Baxxy » 16.06.2020, 17:13

jmaus hat geschrieben:
16.06.2020, 16:10
einfach in der Datei /usr/local/etc/rc.local
Das hat super funktioniert und ich bin einen Schritt näher dran den extra Wireguard Raspi wegzurationalisieren. :)
Scheinbar brauche ich wg-quick gar nicht mehr. :mrgreen:

Eine Hürde gibt es aber noch zu nehmen, und das betrifft die DNS-Namensauflösung. Das Wireguard Interface löst die IP-Adresse anhand des DNS-Namens nur einmalig beim Start auf. (für den Peer/Server) Beispiel aus der Config vom Peer:

Code: Alles auswählen

Endpoint = meinzuhause.hinterderfirewall.org:55555
Ändert sich die IP-Adresse bspw. durch 24h Zwangstrennung bekommt Wireguard davon nichts mit und die VPN Verbindung ist futsch.

Dafür gibt es innerhalb der wireguard-tools ein Script "reresolve-dns.sh" (https://wiki.archlinux.org/index.php/Wi ... hanging_IP) welches (nach meinem Verständnis) mit folgendem (beispielhaften) Aufruf:

Code: Alles auswählen

/usr/local/etc/reresolve-dns.sh /usr/local/addons/wireguard/rmtest2.conf
die DNS-Adressen aller Endpoints in meiner Config aktualisieren sollte.

Das Script habe ich mir von einem anderen Raspi geholt und nach /usr/local/etc/ kopiert sowie ausführbar gemacht.
Aber egal was ich probiere, es kommt immer...

Code: Alles auswählen

root@homematic-raspi:/# /usr/local/etc/reresolve-dns.sh /usr/local/addons/wireguard/rmtest2.conf
-sh: /usr/local/etc/reresolve-dns.sh: not found
Ist das Script nicht "kompatibel" mit RaspberryMatic oder mache ich grundlegend etwas falsch?

Hier noch das original Script:

Code: Alles auswählen

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.

set -e
shopt -s nocasematch
shopt -s extglob
export LC_ALL=C

CONFIG_FILE="$1"
[[ $CONFIG_FILE =~ ^[a-zA-Z0-9_=+.-]{1,15}$ ]] && CONFIG_FILE="/etc/wireguard/$CONFIG_FILE.conf"
[[ $CONFIG_FILE =~ /?([a-zA-Z0-9_=+.-]{1,15})\.conf$ ]]
INTERFACE="${BASH_REMATCH[1]}"

process_peer() {
	[[ $PEER_SECTION -ne 1 || -z $PUBLIC_KEY || -z $ENDPOINT ]] && return 0
	[[ $(wg show "$INTERFACE" latest-handshakes) =~ ${PUBLIC_KEY//+/\\+}\	([0-9]+) ]] || return 0
	(( ($(date +%s) - ${BASH_REMATCH[1]}) > 135 )) || return 0
	wg set "$INTERFACE" peer "$PUBLIC_KEY" endpoint "$ENDPOINT"
	reset_peer_section
}

reset_peer_section() {
	PEER_SECTION=0
	PUBLIC_KEY=""
	ENDPOINT=""
}

reset_peer_section
while read -r line || [[ -n $line ]]; do
	stripped="${line%%\#*}"
	key="${stripped%%=*}"; key="${key##*([[:space:]])}"; key="${key%%*([[:space:]])}"
	value="${stripped#*=}"; value="${value##*([[:space:]])}"; value="${value%%*([[:space:]])}"
	[[ $key == "["* ]] && { process_peer; reset_peer_section; }
	[[ $key == "[Peer]" ]] && PEER_SECTION=1
	if [[ $PEER_SECTION -eq 1 ]]; then
		case "$key" in
		PublicKey) PUBLIC_KEY="$value"; continue ;;
		Endpoint) ENDPOINT="$value"; continue ;;
		esac
	fi
done < "$CONFIG_FILE"
process_peer
Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von jmaus » 16.06.2020, 17:40

Baxxy hat geschrieben:
16.06.2020, 17:13
[...]
Ist das Script nicht "kompatibel" mit RaspberryMatic oder mache ich grundlegend etwas falsch?
Der Grund wieso der Skript nicht geht steht doch ganz oben in der allerersten Zeile:

Code: Alles auswählen

#!/bin/bash
[...]
Also ja, der wird so nicht gehen unter RaspberryMatic weil der Skript eben eine "bash" shell braucht welche RaspberryMatic nicht standardmäßig mitliefert.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10835
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von Baxxy » 16.06.2020, 18:00

jmaus hat geschrieben:
16.06.2020, 17:40
Also ja, der wird so nicht gehen unter RaspberryMatic
Ach schade, dann wäre die Integration für mich perfekt gewesen. Aber ohne die Möglichkeit die DNS-Adressen auf diese Weise zu aktualisieren muss ich mir was anderes einfallen lassen.
Vielleicht das VPN per Ping überwachen und bei Ping-Verlust die RaspberryMatic veranlassen das Wireguard Interface zu stoppen und neu zu starten.
Nicht gerade ideal, mal schauen.
Vielleicht hat ja noch jemand eine zündende Idee. Wireguard mit RaspberryMatic ist ja auch noch ganz frisch.

Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von jmaus » 16.06.2020, 18:07

Baxxy hat geschrieben:
16.06.2020, 18:00
jmaus hat geschrieben:
16.06.2020, 17:40
Also ja, der wird so nicht gehen unter RaspberryMatic
Ach schade, dann wäre die Integration für mich perfekt gewesen. Aber ohne die Möglichkeit die DNS-Adressen auf diese Weise zu aktualisieren muss ich mir was anderes einfallen lassen.
Vielleicht das VPN per Ping überwachen und bei Ping-Verlust die RaspberryMatic veranlassen das Wireguard Interface zu stoppen und neu zu starten.
Nicht gerade ideal, mal schauen.
Vielleicht hat ja noch jemand eine zündende Idee. Wireguard mit RaspberryMatic ist ja auch noch ganz frisch.
Schau dir doch einfach an was dieser Skript im einzelnen macht. Der ruft ja auch nur irgendwelche wireguard (wg) befehle auf um den peer neu dem wireguard mitzuteilen. Nicht mehr und nicht weniger. Sollte sich recht einfach portieren lassen und dann mittels cronjob umsetzen. Oder so ähnlich. Oder du suchst nach dem Skript bei google. Wirst nicht der erste sein der das gleiche bei einer nicht-bash umgebung erledigen möchte.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10835
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von Baxxy » 19.06.2020, 22:31

jmaus hat geschrieben:
16.06.2020, 18:07
Sollte sich recht einfach portieren lassen und dann mittels cronjob umsetzen. Oder so ähnlich.
Ich kann zwar inzwischen gut mit Homematic-Scripten aber Linux shell-Scripte waren völliges Neuland für mich.
Gefunden habe ich im WWW trotz ausgiebiger Recherche nicht wirklich was passendes. Aber angespornt durch deinen Post und meinen Ehrgeiz,
sowie viel Trial and Error, habe ich mir ein shell-Script geschrieben was die Funktionen des (nicht funktionierendem) original-Scripts rudimentär für ein einziges Wireguard Interface nachstellt.
Das ganze läuft erstmal auf einem Raspi3B mit "nackter" RaspberryMatic an einer FritzBox6820LTE im Testbetrieb. Sieht soweit gut aus, momentan greife ich von einem Hotel-WLan drauf zu. Sollte sich das ganze als praktikabel und stabil erweisen werde ich vielleicht ein kleines How-To dazu veröffentlichen.

Grüße
Baxxy

Benutzeravatar
ihno
Beiträge: 228
Registriert: 02.12.2012, 11:19
Hat sich bedankt: 25 Mal
Danksagung erhalten: 10 Mal

Re: Wireguard VPN mit RaspberryMatic - Startschwierigkeiten

Beitrag von ihno » 14.02.2024, 07:52

Moin,

…und ? Läuft es stabil ?
Teilst Du Dein Script ?
cu Ihno

Zwei RaspberryMatic auf Raspberry 3b - über 200 Kanäle in über 100 Geräten und 18 CUxD-Kanäle in 3 CUxD-Geräten
Weatherman 1, Rainyman, 2xWiffi für CO2, ioBroker, NodeRed, Fronius, Tibber

Antworten

Zurück zu „RaspberryMatic“