WireGuard VPN
WireGuard wird ja als neues VPN Wunder gehandelt befindet sich aktuell aber noch in der Entwicklung. Für den Privatgebrauch und keine sehr starken Sicherheitsanforderungen kann man es aber schon nutzen. Der Plan ist von einem mobilen Gerät z.B. meinem Smartphone eine VPN Verbindung zu meinem Kabelrouter bzw. dem Raspberry Pi hinter dem Router aufzubauen und dann "sicher" im Internet zu surfen. Eine Verbindung mit dem Rest meines Heimnetzwerks soll dabei ausgeschlossen werden.
Installation
Nun soll der WireGuard Server auf dem Pi installiert werden und das mache ich nicht folgender Anleitung:
sudo apt install raspberrypi-kernel-headers
echo "deb http://httpredir.debian.org/debian buster-backports main contrib non-free" | sudo tee --append /etc/apt/sources.list.d/debian-backports.list
wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install wireguard
echo "deb http://httpredir.debian.org/debian buster-backports main contrib non-free" | sudo tee --append /etc/apt/sources.list.d/debian-backports.list
wget -O - https://ftp-master.debian.org/keys/archive-key-$(lsb_release -sr).asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install wireguard
perl -pi -e 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sudo reboot
Wireguard ist nun installiert und das IPv4 Forwading (letzter Befehl) aktiviert. Nun geht es weiter mit der Konfiguration. Nach dem Neustart kann man noch kontrollieren, ob das IPv4 Forwarding aktiviert ist und eine 1 zurückgibt.
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Schlüssel generieren
Dann geht es ans generieren der Schlüssel.
sudo su
cd /etc/wireguard
umask 077
wg genkey | tee peer1_private.key | wg pubkey > peer1_public.key
wg genkey | tee server_private.key | wg pubkey > server_public.key
ls
cd /etc/wireguard
umask 077
wg genkey | tee peer1_private.key | wg pubkey > peer1_public.key
wg genkey | tee server_private.key | wg pubkey > server_public.key
ls
peer1_private.key peer1_public.key server_private.key server_public.key
Konfiguration Server
Das IPv4 Forwarding haben wir ja bereits durchgeführt, daher können wir direkt die Konfigurationsdatei des Servers auf dem Pi bearbeiten.
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 100.64.0.1/24
ListenPort = 51820
PrivateKey = <insert server_private.key>
#replace eth0 with the interface open to the internet (e.g might be wlan0)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#Client1 Smartphone
[Peer]
PublicKey = <insert peer1_public.key>
AllowedIPs = 100.64.0.2/32
Konfiguration Client
Nach dem Server muss eine Konfigurationsdatei für jeden Client / Peer erstellt werden.
sudo nano /etc/wireguard/peer1.conf
[Interface]
Address = 100.64.0.2/32DNS = 192.168.178.1PrivateKey = <insert peer1_private.key>#Server[Peer]PublicKey = <insert server_public.key>Endpoint = t6bibneqwcjxplum.myfritz.net:51820AllowedIPs = 0.0.0.0/0, ::/0#PersistentkeepAlive = 25Server startenJetzt können wir den Server manuell starten und anschließend kontrollieren wie der Status ist.sudo wg-quick up wg0sudo wgDen Server beenden können wir mit folgendem Befehl.sudo wg-quick down wg0Damit der Server nach dem Systemstart automatisch startet richten wir ihn als Service ein.sudo systemctl enable wg-quick@wg0