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.
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:
Ä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