Skip to main content

Wireguard

Server

Wireguard installieren: sudo apt install wireguard

Konfiguration anlegen:

sudo tee /etc/wireguard/wg0.conf <<END
[Interface]
PrivateKey = $(wg genkey)
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = sysctl net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i eth0 -o %i -j ACCEPT
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = sysctl net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i eth0 -o %i -j ACCEPT
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
END
  • Der private Schlüssel wird automatisch genenriert.
  • Für das VPN wir der IP Bereich 10.0.0.0/24 verwendet.
  • Der Server verwendet die IP Adresse 10.0.0.1.
  • Der Server lauscht auf dem UDP Port 51820, der in der Firewall freigegeben sein muss. Die Portnummer 51820 ist der Standard-Port für Wireguard.
  • PostUp und PostDown wird benutzt um die Netzwerk-Routen und Weiterleitungen einzurichten.

Im Anschluss kann der Server mit dem Befehl sudo systemctl start wg-quick@wg0 gestartet werden. Der Befehl sudo systemctl enable wg-quick@wg0 sorgt dafür dass der Server automatisch beim Systemstart gestartet wird.

Wenn die ufw Firewall verwendet wird, kann der UDP Port 51820 mit dem Befehl sudo ufw allow 51820/udp geöffnet werden. Anschließend kann die Regel mit sudo ufw reload und sudo ufw enable angewendet werden.

Clients auf dem Server einrichten

Jeder Client muss auf dem Server eingerichtet werden. Die Konfiguration kann z.B. in ~\wg-clients gesichert werden.

Erzeugen einer neuen Client-Konfiguration:

peers_count="$(sudo grep '\[Peer\]' /etc/wireguard/wg0.conf | wc -l)"
tee ~/wg-clients/client${peers_count}.conf <<END
[Interface]
PrivateKey = $(wg genkey)
Address = 10.0.0.$(( peers_count + 2 ))/24
DNS = 8.8.8.8,8.8.4.4
END

Anchließend muss der Client in der Server-Konfiguration hinzugefügt werden:

sudo tee -a /etc/wireguard/wg0.conf <<END
[Peer]
PublicKey = $(grep PrivateKey ~/wg-clients/client.conf | awk '{print $3}' | wg pubkey)
AllowedIPs = $(grep Address ~/wg-clients/client.conf | awk '{print $3}' | sed 's/\/.*//')/32
END

Und der Wireguard Server neu gestartet werden: sudo systemctl stop wg-quick@wg0 && sudo systemctl start wg-quick@wg0

Um die Client-Konfiguration zu vervollständigen muss der öffentliche Schlüssel des Server hinzugefügt werden:

wgservip="$(ip -4 -br address show dev eth0)" && tee -a ~/wg-clients/client.conf <<END

[Peer]
PublicKey = $(sudo grep PrivateKey /etc/wireguard/wg0.conf | awk '{print $3}' | wg pubkey)
Endpoint = $(awk '{print $3}' <<<"$wgservip" | sed 's/\/.*//'):51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
END

Client

Um den Client mit den Server zu verbinden muss zuerst Wireguard installiert werden: sudo apt install wireguard. Zusätzlich wird openresolv benötigt: sudo apt install openresolv.

Anschließend kann die auf dem Server erstellte Client-Konfiguration wg-clients/client.conf als /etc/wireguard/wg0.conf auf den Client kopiert werden. Danach kann Wireguard gestart werden: sudo systemctl start wg-quick@wg0 && sudo systemctl enable wg-quick@wg0.