Wireguard installieren
Wireguard installieren und Clients anlegen
Installation von Wireguard
Pakete laden
Zunächst müssen die benötigten Pakete geladen werden. Iptables wird für das spätere Routen genutzt und Wireguard wird später zum Serve rumgebaut.
apt-get install iptables -y
apt-get install wireguard -y
System Control bearbeiten
Das System muss angewiesen werden IPv4 zu forwarden. Dies ist standardmäßig ausgeschaltet.
nano /etc/sysctl.conf
Folgende Zeile muss verändert werden. Die Raute muss entfernt werden.
...
#net.ipv4.tcp_syncookies = 1
...
Nun sollte der Eintrag wie folgt aussehen:
net.ipv4.tcp_syncookies = 1
Die Datei muss neu eingelesen werden, damit die Änderung wirksam wird:
sysctl -p
Verzeichnisse erstellen und öffnen
Nun erstellt man die benötigten Verzeichnisse. In diesen Verzeichnissen werden später die Benutzerkonfiguration und die Serverkonfiguration liegen.
mkdir /etc/wireguard/
mkdir /etc/wireguard/clients/
cd /etc/wireguard/
Schlüssel für den Server generieren
Zunächst legt man den Privatekey für den Server an. Dieser darf nicht an dritte weitergegeben werden.
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Schlüssel für Client1 generieren
Zunächst geht man in das zuvor erstellte Verzeichnis wo die Benutzerkonfiguration abgelegt werden sollen.
cd /etc/wireguard/clients/
Hier erstellt man nun einen Private- und einen Publickey
wg genkey | tee /etc/wireguard/clients/client1_privatekey | wg pubkey > /etc/wireguard/clients/client1_publickey
Wireguard Interface erstellen
Es muss die Konfigurationsdatei für Wireguard und deren Schnittstelle erstellt werden. Diese kann benannt werde, wie man möchte. In der Community wird standardmäßig das Interface wg0
genannt.
nano /etc/wireguard/wg0.conf
Nun wird die Konfigurationsdatei angepasst.
Es ist wichtig das unter PostUp und PostDown das Interface des Systems angegeben wird. Es muss der Punkt <INTERFACE> geändert werden.
[Interface]
Address = 10.8.0.1/24 #VPN Netz welches zwischen Client und Host augebaut wird (Kann frei gewählt werden)
ListenPort = 51820 #Port der Freigegeben werden soll (Kann frei gewählt werden)
PrivateKey = <server-private-key> #Key aus der Datei /etc/wireguard/privatekey
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <INTERFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <INTERFACE> -j MASQUERADE
In diesem Zustand ist zwar der Server und das Interface eingerichtet aber es können sich noch keine Clients verbinden.
Wireguard Interface Aktivieren/Deaktivieren
Interface starten
wg-quick up wg0
Interface stoppen
wg-quick down wg0
Interface beim Start des Servers mit starten
systemctl enable wg-quick@wg0.service
Interface nicht mehr beim Start des Servers mit starten:
systemctl disable wg-quick@wg0.service
Wireguard Clients einrichten
Client am Interface anmelden
Es muss die Konfigurationsdatei von dem Wireguard-Interface geöffnet werden:
nano /etc/wireguard/wg0.conf
Fügen Sie folgendes hinzu:
[Interface]
...
[Peer]
PublicKey = <Client1_publickey> #Key muss geändert werden
AllowedIPs = 10.8.0.2/16 # IP muss im selben VPN Netz liegen
Die Datei sollte nun wie folgt aussehen:
[Interface]
Address = 10.8.0.1/24 #IP im VPN Netz
ListenPort = 51820 #Prot der Freigegeben werden
PrivateKey = <server-private-key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <INTERFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <INTERFACE> -j MASQUERADE
[Peer]
PublicKey = <Client1_public.key> #Key muss geändert werden
AllowedIPs = 10.8.0.2/16 #IP muss im selben VPN Netz liegen
Hiermit erstellt man einen Peer [Verbindung]. Man erklärt Wireguard, wenn sich dieser Client meldet, darf mit diesem gearbeitet werden.
Interface neu starten
wg-quick down wg0
wg-quick up wg0
systemctl disable wg-quick@wg0.service
systemctl enable wg-quick@wg0.service
Erstellen der Client-Konfigurationsdatei
Die Konfigurationsdatei muss nicht auf dem Host Server liegen! Sie wird nur auf dem Client benötigt und kann da eingefügt werden. Die IP muss immer an den Peer in der wg0.conf gleich sein.
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.8.0.2/24
DNS = 172.0.0.1
[Peer]
PublicKey = <SERVER-PUBLIC-KEY>
Endpoint = <IP/DOAMIN>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25