WireGuard VPN Server mit Web Interface einrichten - adminForge (2024)

Wer aktuell OpenVPN und IPsec als VPN Software einsetzt und sich schon immer mal mit WireGuard auseinander setzen wollte, dem helfe ich mit diesem Tutorial auf die Sprünge.

WireGuard ist eine freie Software zum Aufbau eines virtuellen privaten Netzwerkes (VPN) über eine verschlüsselte Verbindung.

WireGuard ist im Aufbau wesentlich einfacher gestaltet als beispielsweise OpenVPN und verwendet nur ein eingeschränktes Set an Algorithmen. So wird unter anderem für den Schlüsselaustausch das Verfahren Curve25519 und für die eigentliche Verschlüsselung ChaCha20 verwendet.

Vorteile von WireGuard zusammengefasst:

  • schneller, auch auf älteren und schwächeren Systemen
  • sicherer, dank neuster Verschlüsselungstechnologie
  • wirklich einfach einzurichten dank wireguard-ui

Was wird für dieses Tutorial benötigt?

Ziel in diesem Tutorial?

  • Ein VPN Netzwerk mit Server und Client innerhalb weniger Minuten einrichten
  • Ein Web Interface zur einfachen Einrichtung von Server und Clients
  • Mobile Clients einfach per QR Code einrichten

Punkt 1: Debian Pakete installieren

Quelle: https://www.wireguard.com/install/

Wir installieren alle nötigen Pakete und wechseln den Ordner.

1

2

apt update && apt install -y wireguard curl tar

cd /etc/wireguard

Punkt 2: Firewall Port öffnen

Der Port 51820 für das UDP Protokoll muss auf dem Server erreichbar sein. Beispielsweise so zu öffnen:

1

ufw allow 51820/udp

Punkt 3: IP Forwarding aktivieren

Das IP Forwarding sorgt dafür, dass alle Pakete der WireGuard-Schnittstelle weitergeleitet werden.

1

2

3

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf

sysctl -p

Punkt 4: WireGuard UI Startscript erstellen

Dieses Startscript wird von der Systemd Service Unit (Punkt 5) verwendet um WureGuard UI zu staren und die Datenbank im Ordner /etc/wireguard/db/ abzulegen.

1

2

3

4

5

6

cat <<EOF > /etc/wireguard/start-wgui.sh

#!/bin/bash

cd /etc/wireguard

./wireguard-ui -bind-address 0.0.0.0:5000

EOF

ACHTUNG: Die -bind-address 0.0.0.0:5000 sollte aus Sicherheitsgründen, sobald der erste Tunnel steht, gegen die WireGuard Server IP-Adresse 10.252.1.0 ausgetauscht werden!

Wir machen das Script ausführbar.

1

chmod +x start-wgui.sh

Punkt 5: WireGuard UI

Quelle: https://github.com/ngoduykhanh/wireguard-ui

Zuerst legen wir die Systemd Service Unit an.

1

2

3

4

5

6

7

8

9

10

11

cat <<EOF > /etc/systemd/system/wgui-web.service

[Unit]

Description=WireGuard UI

[Service]

Type=simple

ExecStart=/etc/wireguard/start-wgui.sh

[Install]

WantedBy=multi-user.target

EOF

Nun legen wir das WireGuard UI Download und Update Script an.

1

2

3

4

5

6

7

8

9

10

11

12

13

cat <<EOF > /etc/wireguard/update.sh

#!/bin/bash

VER=\$(curl -sI https://github.com/ngoduykhanh/wireguard-ui/releases/latest | grep "location:" | cut -d "/" -f8 | tr -d '\r')

echo "downloading wireguard-ui \$VER"

curl -sL "https://github.com/ngoduykhanh/wireguard-ui/releases/download/\$VER/wireguard-ui-\$VER-linux-amd64.tar.gz" -o wireguard-ui-\$VER-linux-amd64.tar.gz

echo -n "extracting "; tar xvf wireguard-ui-\$VER-linux-amd64.tar.gz

echo "restarting wgui-web.service"

systemctl restart wgui-web.service

EOF

Jetzt können wir das WireGuard UI Update Script das erste Mal ausführen. Der Download startet automatisch und das Web Interface von WireGuard wird gestartet.

1

2

chmod +x /etc/wireguard/update.sh

cd /etc/wireguard; ./update.sh

Punkt 6: WireGuard Konfigurationsdatei von Systemd überwachen lassen

Die folgenden beiden Systemd Units erstellen wir um die WireGuard Konfiguration wg0.conf zu überwachen und den Service automatisch bei Änderung neustarten zu lassen.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

cat <<EOF > /etc/systemd/system/wgui.service

[Unit]

Description=Restart WireGuard

After=network.target

[Service]

Type=oneshot

ExecStart=/bin/systemctl restart wg-quick@wg0.service

[Install]

RequiredBy=wgui.path

EOF

cat <<EOF > /etc/systemd/system/wgui.path

[Unit]

Description=Watch /etc/wireguard/wg0.conf for changes

[Path]

PathModified=/etc/wireguard/wg0.conf

[Install]

WantedBy=multi-user.target

EOF

Punkt 7: Dienste aktivieren und starten

1

2

3

touch /etc/wireguard/wg0.conf

systemctl enable wgui.{path,service} wg-quick@wg0.service wgui-web.service

systemctl start wgui.{path,service}

Punkt 8: WireGuard UI öffnen und einstellen

  1. Das WireGuard UI öffnen wir nun im Webbrowser: http://<PUBLIC IP>:5000
  2. Melden uns als Benutzer admin und dem Passwort admin an
  3. Klicken links im Menü auf Global Settings
  4. Wir prüfen zuerst ob die Endpoint Address stimmt (kann eine Public IP oder Hostname sein)
  5. Nun löschen wir 1.1.1.1 unter DNS Servers
  6. Fügen diese beiden dnsforge.de DNS Server hinzu: 176.9.93.198, 176.9.1.117
  7. Drücken Save
  8. Im Menü gehen wir nun auf Wireguard Server

  9. Damit die VPN Clients auch ins Internet können, tragen wir bei Post Up Script diese Zeile ein (anstelle eth0 trage dein öffentliches Interface vom Server ein):
    iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  10. Bei Post Down Script (anstelle eth0 trage dein öffentliches Interface vom Server ein):
    iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  11. Save anklicken
  12. Im Menü auf Wireguard Clients gehen
  13. Oben rechts auf New Client klicken
  14. Einen Namen eingeben
  15. Email kann auch leer bleiben
  16. IP Allocation ist die IP, die der Client erhält (WireGuard UI zählt die IP automatisch hoch für jeden neuen Client)
  17. Allowed IPs ist das Netzwerk, welches der Client über den VPN Tunnel erreichen darf. Dort tragt ihr zusätzlich 10.252.1.0/24 ein. Default ist das komplette Internet 0.0.0.0/0 und somit auch das Routing des gesamten Traffics durch den Tunnel hinterlegt. Ihr könnt dort auch nur eurer VPN Netzwerk eintragen und der normale Internet Traffic geht dann nicht mehr durch den Tunnel.
  18. Mit Use server DNS werden die WireGuard Nameserver im Client verwendet
  19. Auf Submit drücken
  20. Um alles zu aktivieren drücken wir oben rechts auf Apply Config dann auf Apply

Der WireGuard Server ist fertig konfiguriert und eine erste Client-Konfiguration wurde erstellt.

Punkt 9: Android App installieren und einrichten

  1. Wir installieren uns aus dem F-Droid oder Google Play Store die WireGuard App (gibt es auch für iOS):
    https://f-droid.org/en/packages/com.wireguard.android
    https://play.google.com/store/apps/details?id=com.wireguard.android
  2. Öffnen die App und klicken unten rechts auf das Plus Zeichen
  3. Nun drücken wir auf VON QR_CODE SCANNEN und lesen den QR Code des erstellten Clients ein
  4. Der Tunnel erhält nun einen Namen
  5. Wir klicken auf den Tunnel und aktivieren diesen am Schalter
  6. Der Tunnel ist erfolgreich aufgebaut wenn ihr unter Transfer ein paar gesendete Daten seht
  7. Im Webinterface unter dem Menüpunkt Status seht ihr die aktive Verbindung

Punkt 10: Windows Client einrichten

Der Windows Client lässt sich hier herunterladen: https://www.wireguard.com/install/ (auch für andere Betriebssysteme werdet ihr dort fündig).

  1. Im WireGuard Webinterface auf Download klicken
  2. Startet WireGuard
  3. Klickt auf Tunnel hinzufügen und wählt eure test.conf Datei aus
  4. Nun klicken wir auf Aktivieren
  5. Der Tunnel ist nun Aktiv und es werden Daten übermittelt
  6. Automatisch verbinden bei Windows Start erreichen wir mit diesem Befehl – Eingabeaufforderung als Administrator öffnen (einmalig ausführen reicht!):
    wireguard.exe /installtunnelservice "C:\Program Files\WireGuard\Data\Configurations\test.conf.dpapi"

Punkt 11: Absichern

Auf dem Server bearbeiten wir nun unser Startscript und setzen folgende bind-address.

/etc/wireguard/start-wgui.sh

1

2

3

4

#!/bin/bash

cd /etc/wireguard

./wireguard-ui -bind-address 10.252.1.0:5000

Das default Passwort admin ändern wir in dieser Datei ab.

/etc/wireguard/db/server/users.json

1

2

3

4

{

"username": "admin",

"password": "<neues passwort>"

}

Nun starten wir den WireGuard UI Dienst neu.

1

systemctl restart wgui-web.service

Ab sofort ist euer Webinterface unter http://10.252.1.0:5000 mit eurem neuen Passwort erreichbar.

Euer adminForge Team

Das Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld.
Unterstütze unsere Arbeit mit einer Spende.

11

WireGuard VPN Server mit Web Interface einrichten - adminForge (2024)
Top Articles
Latest Posts
Article information

Author: Dr. Pierre Goyette

Last Updated:

Views: 6164

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Dr. Pierre Goyette

Birthday: 1998-01-29

Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

Phone: +5819954278378

Job: Construction Director

Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.