Mit Wireguard kann ein VPN aufgebaut werden. Es ist schneller als OpenVPN und einfach zu konfugurieren als IPsec.
Erfahrungswerte mit verschiedener Hardware.
| Client | Server | Download | Upload | Quelle |
| -------- | -------------- | -------------- | ------------- | ------- |
| Computer | Raspberry PI 4 | min 100 MBit/s | min 45 MBit/s | cuma |
| Computer | Fritz!Box 7590 | min 85 MBit/s | min 40 MBit/s | cuma |
| Computer | Fritz!Box 7490 | max 35 MBit/s | min 45 MBit/s | cuma |
| Computer | Fritz!Box 7520 | ca 35 MBit/s | ca 35 MBit/s | wall007 |
Die PresharedKey
-Zeilen bzw psk
-Dateien sind optional und können entfernt werden.
Der Port muss gegebenenfalls in der Firewall freigegben werden, zum Beispiel mit AVM-portfw.
Bei Ubuntu heisst der Paketmanager apt-get
.
sudo dnf install wireguard-tools qrencode
Die MTU sollte für Server und Clients gleich gesetzt werden. Die Zeilen sind optional. Möglich Werte liegen von 1280 bis 1420 Bytes. 1280 ist eine “sichere” Wahl, höhere Werte sind besser können aber abhängig vom Netzwerk und Internetanschluss Probleme verursachen.
Diese Variablen werden weiter unten genutzt und sollten angepasst werden.
NUMCLIENTS="9"
HOSTNAME="mein.dyndns.host"
UDPPORT="51820"
IPBEREICH="10.0.0.1/24"
DNSSERVER="192.168.178.1"
MTUBYTES="1280"
Es werden die Schlüsseldateien *.prv
, *.psk
und *.pub
generiert. Mit diesen werden die Konfigurationsdateien erstellt.
for x in SRV $(seq -f "CL%g" $NUMCLIENTS); do
touch $x.prv $x.psk $x.pub
chmod 640 $x.prv $x.psk $x.pub
wg genkey | tee $x.prv | wg pubkey >$x.pub
wg genpsk > $x.psk
[ "$x" == "SRV" ] && rm $x.psk
done
Es wird die Serverkonfiguration in SRV.conf
erstellt die auf der Fritzbox eingefügt werden kann.
touch SRV.conf
chmod 640 SRV.conf
cat > SRV.conf << EOX
[Interface]
ListenPort = $UDPPORT
PrivateKey = $(cat SRV.prv)
MTU = $MTUBYTES
EOX
for x in $(seq -f "CL%g" $NUMCLIENTS); do
cat >> SRV.conf << EOX
[Peer]
PublicKey = $(cat $x.pub)
PresharedKey = $(cat $x.psk)
AllowedIPs = ${IPBEREICH%.*}.1${x#CL}/32
EOX
done
Die Clientkonfigurationen werden in CL*.conf
erstellt.
Die QR-Codes zum scannen mit einer App befinden sich in CL*.txt
und CL*.png
.
for x in $(seq -f "CL%g" $NUMCLIENTS); do
cat > $x.conf << EOX
[Interface]
Address = ${IPBEREICH%.*}.1${x#CL}/32
DNS = $DNSSERVER
PrivateKey = $(cat $x.prv)
MTU = $MTUBYTES
[Peer]
Endpoint = $HOSTNAME:$UDPPORT
PublicKey = $(cat SRV.pub)
PresharedKey = $(cat $x.psk)
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 90
EOX
cat $x.conf | qrencode -t ansiutf8 > $x.txt
cat $x.conf | qrencode -t png -o $x.png
done