Schlagwort: Featured

Wireguard unter Ubuntu 20.04 installieren

Wireguard ist eines der populärsten VPN Verfahren die wir zur Zeit auf dem Markt haben. Zumindest für den Privatgebrauch. In diesem Tutorial installieren wir Wireguard unter Ubuntu 20.04.

Voraussetzungen

  • System mit Ubuntu 20.04 (am besten eine virtuelle Maschine)
  • Router/Firewall mit konfigurierbaren NAT Regeln
  • VPN Client

NAT Regeln konfigurieren

Ich habe eine Firewall der Firma Ubiquity und zwar eine USG-3P. Dort gehen wir in die Einstellungen -> Routing und Firewall -> Port Forwarding und legen eine neue Regel an.

Name: Wireguard (natürlich kannst du auch einen anderen nehmen)
Enabled: Häkchen setzen
From: Anywhere
Port: 51820
Forward IP: {IP Adresse deiner VM}
Forward Port: 51820
Protocol: UDP

Wireguard NAT Konfiguration
Wireguard NAT Konfiguration

Wireguard unter Ubuntu 20.04 installieren

Nun können wir uns an die eigentliche Installation wagen. Ich gehe davon aus, dass du ein System mit Ubuntu 20.04 installiert hast, das SUDO Passwort kennst und das System alle Updates erhalten hat.

Als erstes fügen wir das Repository von Wireguard zu den Paketquellen hinzu:

sudo add-apt-repository ppa:wireguard/wireguard

Durch das hinzufügen werden auch direkt die Paketquellen eingelesen. Wir starten also direkt mit in der Installation:

sudo apt install wireguard -y

Nach ein paar Sekunden ist Wireguard auch schon installiert. Damit wir später auch den Server als „Router“ missbrauchen können, bedarf es eine Anpassung am System. Wir öffnen die sysctl Datei

vim /etc/sysctl.conf

und entfernen das #-Symbol vor der Zeile

net.ipv4.ip_forward=1

:wq! um abzuspeichern und die Datei zu verlassen. Anschließend muss diese noch neu eingelesen werden

sysctl -p

Nun können konfigurieren wir den „Server“. Eigentlich ist jedes System Server und Client gleichzeitig und wird als sogenannte Peer-Node betrieben.

sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Legt das notwendige Config File an und gibt ihm die richtigen Rechte.

Anschließend wechseln wir zum root Benutzer mit

sudo -s

Und wir wechseln in das Wireguard Verzeichnis

cd /etc/wireguard

Für jeden Peer werden ein Private Key sowie ein Public Key verwendet. Dieser lässt sich recht schnell mit dem Wireguard Tool erstellen.

umask 077; wg genkey | tee server_priv | wg pubkey > server_pub

Für die Konfiguration benötigen wir gleich den Private Key. Wir lassen uns den also anzeigen und kopieren diesen in die Zwischenablage

cat server_priv

Jetzt können wir die eigentlich Konfigurationsdatei einrichten

vim wg0.conf

Ich verwende für mein Tutorial diese Konfiguration. Eventuell musst du sie an deine Bedürfnisse anpassen:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens160 -j MASQUERADE
ListenPort = 51820
PrivateKey = gIbyfBnNH56ZRwp+vq2R4f2yO6PK7EM7lSrnLyxw9nI=

Unter „Address“ ist das VPN Netzwerk angegeben. Ich verwendet hier ein Class-A Netz um direkt optisch die IP-Adressen unterscheiden zu können. Natürlich kannst du auch gewohnt ein Class-C Netz (z. B. 192.168.100.0/24) verwenden.

Das war es quasi schon mit der Konfiguration. Nun aktivieren wir die Konfiguration, starten sie und schauen uns den Output an:

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

Jetzt sollte eine Ausgabe ähnlich zu dieser erscheinen:

● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2020-06-03 17:05:28 CEST; 40min ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 112602 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 112602 (code=exited, status=0/SUCCESS)

Jun 03 17:05:28 wireguard systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link add wg0 type wireguard
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] wg setconf wg0 /dev/fd/63
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link set mtu 1420 up dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
Jun 03 17:05:28 wireguard systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Wichtig ist der Punkt „Active: active“. Das zeigt uns an, dass der „VPN-Server“ korrekt hoch gefahren wurde.

Client Konfiguration einrichten

Als Client soll in meinem Fall ein Mobiltelefon herhalten. Ich nehme dafür mein iPhone. Die Wireguard App ist aber die gleiche und lässt sich entsprechend leicht adaptieren. Ich nutze ein split tunneling. Heißt, ich möchte nur Zugriff auf meine Netze zuhause haben.

Zuerst erstellen wir uns wieder einen private und public Key für den Client:

umask 077; wg genkey | tee iphone_priv | wg pubkey > iphone_pub

Auch hierfür kopieren wir uns den Private Key in die Zwischenablage:

cat iphone_priv

Natürlich benötigen wir auch eine Konfigurationsdatei für den Client:

vim iphone.conf

Dann packen folgendes da rein (evtl. an deine Wünsche anpassen).

[Interface]
PrivateKey = WEmfArJoJ8BZW01hONF5FPpAHsrM+PpMMRM4/xMCGng=
Address = 10.0.0.2/32

[Peer]
PublicKey = zDubCWfjdKiklSJIiCZeCWDfZq94eAJWBG/9wVyIaSE=
Endpoint = {Deine public ip}:51820
AllowedIPs = 10.0.0.0/24
AllowedIPs = 192.168.10.0/24

Möchtest du, dass der gesamte Trafik durch den VPN Tunnel geht, ersetzt du die zwei Zeilen der AllowedIPs durch

AllowedIPs = 0.0.0.0/8

Natürlich müssen wir dem „Server“ noch sagen, dass er einen „Client“ hat. Vorher die config stoppen

systemctl stop wg-quick@wg0

Dann öffnen wir nochmal die wg.conf Datei und fügen am Ende ein:

[Peer]
PublicKey = 6pLqvUO8nEbGevwhiV4/VY9jWet4XHqCoRNZR0jFSCQ=
AllowedIPs = 10.0.0.2/32

Und starten nun wieder Wireguard

systemctl start wg-quick@wg0

Konfiguration an Client übertragen

Jetzt muss der Client ja noch irgendwie wissen wohin er sich verbinden soll. Du installierst also am besten die offizielle Wireguard App aus dem AppStore oder PlayStore.

Am Server installieren wir uns noch ein Paket mit dem wir QR-Codes erzeugen können. Damit lässt sich die Konfiguration spielend einfach übertragen.

apt install qrencode -y

Dann erzeugen wir den QR-Code mit

qrencode -t ansiutf8 < iphone.conf
Ersteller Wireguard QR Code
Ersteller Wireguard QR Code

In der App auf dem Mobiltelefon fügen wir ein neues VPN hinzu und scannen den QR Code ein. Die Anwendung konfiguriert die notwendigen Schritte. Gegebenenfalls benötigt diese noch Rechte Einstellungen an eurem Telefon machen zu dürfen.

Nextcloud Docker Tutorial – Step by step zum Erfolg

Vor einiger Zeit gab es von mir ein Nextcloud Docker Tutorial bereits auf meinem YouTube Kanal. Dies ist soweit auch weiterhin aktuell. Allerdings bedarf es für eine gute Nextcloud Installation noch weiterer Konfiguration.

Um Nextcloud immer von überall aus erreichen zu können, empfehle ich dir die Installation auf einem virtuellen Server bei einem Hosting Provider. Ich nutze hierfür Netcup, welche ich sehr empfehlen kann.

Weiterlesen