==== WireGuard Server auf Linux ====
Paket installieren
apt install wireguard
\\
cd /etc/wireguard
Alle nachfolgenden Kommandos im Ordner /etc/wireguard durchführen \\
\\
=== Vorbereitungen ===
Ordner für die Clients anlegen
mkdir clients
Ordner für die Certs anlegen
mkdir ssl
=== Server Zertifikate ===
Server Zertifikat erstellen
wg genkey | tee ssl/server_private.key
chmod 600 ssl/server_private.key
Server PublicKey erstellen
cat ssl/server_private.key | wg pubkey | tee ssl/server_public.key
\\
=== Client Zertifikate ===
Client Zertifikat erstellen
wg genkey | tee ssl/client1_private.key
Client Pubkey erstellen
cat ssl/client1_private.key | wg pubkey | tee ssl/client1_public.key
=== Verbindung erstellen ===
Jetzt wird die Konfigurationsdatei für die Serverseite Verbindung erstellt. Hierbei werden Firewallregeln hinzugefügt, die es ermöglichen, dass die Clients sich untereinander, das Internet und des Server erreichen können.
Dem Server wird der eigene Private Key bekannt gemacht, als auch **alle* Public Keys der Clients.
Dateipfad ist /etc/wireguard/wg0.conf
cat << EOF > /etc/wireguard/wg0.conf
[Interface]
PrivateKey = $(cat /etc/wireguard/ssl/server_private.key)
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = sysctl net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i $(ip a | grep 2: | head -n1 | awk '{print $2}' | awk -F: '{print $1}') -o %i -j ACCEPT
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o $(ip a | grep 2: | head -n1 | awk '{print $2}' | awk -F: '{print $1}') -j MASQUERADE
PostDown = sysctl net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i $(ip a | grep 2: | head -n1 | awk '{print $2}' | awk -F: '{print $1}') -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o $(ip a | grep 2: | head -n1 | awk '{print $2}' | awk -F: '{print $1}') -j MASQUERADE
[Peer]
PublicKey = $(cat /etc/wireguard/ssl/client1_public.key)
AllowedIPs = 10.0.0.2/32
EOF
\\
Das Ergebnis sollte ungeähr so aussehen
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Private Key des Servers
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = sysctl net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i ens6 -o %i -j ACCEPT
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o ens6 -j MASQUERADE
PostDown = sysctl net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i ens6 -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o ens6 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Public Key des Clients
AllowedIPs = 10.0.0.2/32
\\
Jetzt wird pro Client eine Eigene Konfigurationsdatei erstellt. Diese Datei beinhaltet die Adresse und den PubKey des Servers. Ebenso den PrivateKey des Clients.
cat < /etc/wireguard/clients/client1.conf
[Interface]
PrivateKey = $(cat /etc/wireguard/ssl/client_private.key) # Client-Private-Key
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = $(cat /etc/wireguard/ssl/server_public.key) # Server-Public-Key
AllowedIPs = 0.0.0.0/0
Endpoint = $(hostname -f):51820 # Server Adresse
PersistentKeepalive = 15
EOF
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Client-Private-Key
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Server-Public-Key
AllowedIPs = 0.0.0.0/0
Endpoint = wireguard.mydomain.de:51820 # Server Adresse
PersistentKeepalive = 15