JensBlawatt

Wireguard Endpoint IP zur Laufzeit ändern

Es kann vorkommen, dass für eine Domain sowohl eine IPv4 sowie IPv6 Adresse im Nameserver hinterlegt ist. WireGuard verwendet dann automatisch die IPv6 Adresse.

Nach dem Start von Wireguard lässt sich der Endpoint des Peers über einen Hook ändern. Innerhalb dieses Hooks lösen wir ausschließlich die IPv4 Adresse auf und setzten diese als neuen Endpoint.

Mit folgendem Befehl lässt sich die IPv4 Adresse zu einer Domain auflösen:

$ host -t A home.meine-domain.de | awk '/has address/ { print $4 }'
92.113.60.212

Mit folgendem Befehl lässt sich der Endpoint für das laufende WireGuard Interface ändern:

$ wg set wg0 peer <public-key> endpoint "<die-ipv4-adresse>:51820"

Diese lassen sich als PostUp Hook kombiniert in der Configdatei /etc/wireguard/wg0.conf verwenden:

[Interface]
PrivateKey = <private-key>
Address = 192.168.60.2/24
DNS = 192.168.60.1

# set ipv4 ip as peer endpoint
PostUp = wg set %i peer <public-key> endpoint "$(host -t A home.meine-domain.de | awk '/has address/ { print $4 }'):51820"

[Peer]
PublicKey = <public-key>
AllowedIPs = 192.168.60.0/24
Endpoint = home.meine-domain.de:51820
PersistentKeepalive = 1