NAS

x86-64 NAS: Wireguard VM in Proxmox installieren und mit einer Vodafone Station nutzen

Für mich als Vodafone Kabel Kunde ist die verwendung eines VPN nicht so leicht. Ich habe keine Fritz!Box sondern eine sogenannte Vodafone Station mit Dual Stack Lite als Router. Mit einer Fritz!Box wäre das Einrichten eines VPN relativ einfach zu realisieren da AVM dafür einen eigenen Service mitbringt.

Daher jetzt der umständlichere Weg mit der Vodafone Station.

Voraussetzung dafür ist das man bei Vodafone eine IPv4 Adresse bestellt hat (kostenlos möglich via Hotline) und eine Domain besitzt die DynDNS fähig ist. Das geht auch kostenlos über Duckdns https://www.duckdns.org/. Ich besitze aber schon eine Domain bei Strato. Wenn sich die eigene IPv4 Adresse aber nicht ändert kann man sich den DynDNS Teil auch sparen und direkt mit seiner IP arbeiten.

Ubuntu Server VM installieren

Um Wireguard auf meinem Server installieren zu können benötige ich eine eigene VM dafür. Wireguard ist tief mit dem Linux Kernel verknüpft. Und weil ein LXC keinen eigenen Kernel besitzt funktioniert Wireguard nicht ohne das ich Veränderungen am Host Betriebssystem machen müsste. Und das möchte ich nicht. Daher die VM.

Ich lade mir die aktuelle Ubuntu Server LTS Version herunter https://ubuntu.com/download/server

Bei mir ist das Version 20.04.2 LTS

Wenn der Download abgeschlossen ist melde ich mich bei meinen Proxmox Server an und gehe auf local (server), ISO Images. Mit Upload lade ich das eben heruntergeladene Image auf den Server hoch.

Ich klicke ich oben links auf Create VM. Als Name vergebe ich Wireguard und klicke auf next.

Jetzt wähle ich das eben hochgeladene Image aus und klicke auf next.

Bei System lasse ich alles wie es ist und klicke auf next.

Unter Harddisk vergebe ich 8 GiB und wähle VirtlO Block als Bus. Next.

Unter CPU vergebe ich 1 Socket, 1 Core und klicke auf next.

Unter Memory vergebe ich 1024 MiB RAM und klicke auf next.

Unter Network belasse ich alles wie es ist.

Bei der Bestätigung setze ich ein Häkchen bei start after created und klicke ich auf finish.

Jetzt wechsle ich in die Console der neuen VM und sehe den Installationsscreen.

Ich stelle als Sprache deutsch ein.

Als Tastatur wähle ich auch deutsch.

Die Netzwerkverbindung stelle ich auf manuell.

Subnetz 192.168.0.0/24

Adresse 192.168.0.3

Gateway 192.168.0.1

Nameserver 1.1.1.1

Dann belasse ich alles auf default bis ich die Partitionierung machen muss. Bei nur 4 GB funktioniert das anscheinend nicht automatisch. Ich erstelle eine Bootpartition und weiter gehts.

Ich erstelle einen User und als Passwort vergebe ich test.

Natürlich setze ich ein Häkchen zur SSH-Server Erstellung.

Den Rest belasse ich auf default. Ich installiere keine fertigen Snaps.

Wenn die installation abgeschlossen ist und bevor ich die VM Reboote muss ich in Proxmox auf Hardware gehen und beim CD/DVD Laufwerk das Image auswerfen indem ich „kein Medium verwenden“ wähle. Wenn ich das nicht mache bootet die VM wieder in die Installation.

Wenn dann in der Console dann alles grün und ok aussieht kann man die Console schließen und per SSH auf die VM zugreifen.

Das geht über die festgelegte IP, bei mir die 192.168.0.3

Ich melde mich als den User markus und dem Passwort test an.

Mit

sudo passwd markus

kann ich das Passwort in etwas vernünftiges ändern. Jetzt funktioniert nämlich copy und paste.

Zusätzlich kann ich den user root hinzufügen mit

sudo passwd root

wo ich ein root Passwort vergeben muss.

Anschließend muss ich SSH für root aktivieren.

Zuerst werde ich mit

sudo -s

zu root und öffne die ssh config mit

nano /etc/ssh/sshd_config

Hier ändere ich die Zeile

#PermitRootLogin prohibit-password

zu

PermitRootLogin yes

mit Strg+O, Strg+M und Strg+X speichere und schließe ich die Datei.

Ich starte den SSH Daemon neu mit

systemctl restart sshd

so kann ich direkt per SSH als root auf die VM zugreifen.

DynDNS bei Strato aktivieren

Bei meinem Domain-Anbieter Strato muss ich dynDNS für eine Subdomain aktivieren. Hier gibt es eine Anleitung: https://www.strato.de/faq/domains/so-einfach-richten-sie-dyndns-fuer-ihre-domains-ein/

Bei Strato erstelle ich mir eine Subdomain, aktiviere DynDNS dafür und vergebe ein dynDNS Passwort.

DynDNS in der Vodafone Station aktivieren

Ich rufe das Webinterface der Vodafone Station auf indem ich die 192.168.0.1 im Browser eingebe. Dort melde ich mich an und klicke auf Internet und DynDNS.

Dort gebe ich ein:

DynDNS-Anbieter http://www.DynDns.org

Domainname subdomain.domain.de

Benutzername domain.de

Kennwort dyndns Passwort das das man bei Strato festgelegt hat

und klicke auf Anwenden.

Alternativ: DynDNS mit ddclient einrichten

Das sollte mit jeden beliebigen Router funktionieren.

Ich installiere in der erstellten Ubuntu VM per SSH den ddclient (https://wiki.ubuntuusers.de/DDNS-Clients/)

Ich wechsle zu root Rechten mit

sudo -s

und installiere ddclient

apt-get install ddclient

Server dyndns.strato.com/nic/update

Host subdomain.domain.de

User domain.de

Passwort dyndns Passwort das das man bei Strato festgelegt hat

Wenn ddclient installiert ist greife ich auf die Konfigurationsdatei zu

nano /etc/ddclient.conf

Den Inhalt ändere ich zu

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
#use=if, if=ppp0
use=web, web=checkip.dyndns.org

server=dyndns.strato.com/nic/update
login=domain.de
password='dyndns Passwort'
subdomain.domain.de

mit Strg+O, Strg+M und Strg+X speichere und schließe ich die Datei.

Ob alles funktioniert prüfe ich mit

ddclient -daemon=0 -debug -verbose -noquiet

Das sollte dann in etwa so aussehen

Wireguard Port in der Vodafone Station freigeben

Ich rufe das Webinterface der Vodafone Station auf und klicke auf Internet und Port-Forwarding. Ich klicke auf das Plus Symbol.

Dort finde ich die VM anhand ihrer Mac Adresse, die IP Adresse der VM wird dann automatisch eingetragen.

Die Mac Adresse finde ich in Proxmox unter den Reiter Hardware der VM bei Network Device.

Wireguard beherrscht momentan nur das UDP Protokoll daher wähle ich dieses aus.

Dann gebe ich den WAN und LAN Port 51820 frei.

Ich klicke unten auf Anwenden.

Wireguard in der VM einrichten

Anleitungen an denen ich mich orientiert habe:

https://teqqy.de/wireguard-unter-ubuntu-20-04-installieren/

https://schroederdennis.de/tutorial-howto/wireguard-vpn-server-installieren-client-to-server/

Per SSH wähle ich mich in die VM ein und werde zu root mit

sudo -s

ich installiere Wireguard mit

apt install wireguard

Mit

nano /etc/sysctl.conf

öffne ich die sysctl Datei

und entfernen das #-Symbol vor der Zeile

net.ipv4.ip_forward=1

mit Strg+O, Strg+M und Strg+x speichere und schließe ich die Datei.

Jetzt lese ich sie mit

sysctl -p

neu ein.

Mit

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

lege ich die Konfigurationsdatei für Wireguard mit den richtigen Rechten an.

Ich gehe ins Wireguard Verzeichnis mit

cd /etc/wireguard

Dort lege ich private und public Keys für den Server an mit

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

Und zeige den private Key an mit

cat server_priv

Den kopiere ich mir in ein separates Dokument, zb in den Editor von Microsoft.

Das netzwerk interface der VM benötige ich auch, ich finde es mit

ip link 

heraus. Bei mir ist es ens18.

Die Konfigurationsdatei öffne ich mit

nano wg0.conf

Dort füge ich ein

[Interface]
PrivateKey = private key vom server
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE
ListenPort = 51820

Der PrivateKey muss natürlich durch den vorher kopierten ersetzt und das Netzwerk Interface angepasst werden.

Mit Strg+O, Strg+M und Strg+x speichere und schließe ich die Datei.

Nun aktiviere ich die Konfiguration, starte sie und schaue mir den output an mit

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

Das sieht dann in etwa so aus

Diesen Status Bildschirm verlasse ich indem ich zweimal Strg+c drücke.

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

Neuen client zu Wireguard hinzufügen

Ich gehe ins Wireguard Verzeichnis mit

cd /etc/wireguard

Für den neuen client muss ich auch ein Private und Public Keypaar erstellen

umask 077; wg genkey | tee client1_priv | wg pubkey > client1_pub

Wieder zeige ich mir den Private Key an mit

cat client1_priv

Den kopiere ich mir in ein separates Dokument, zb in den Editor von Microsoft.

Das gleich mache ich mit dem Public Key

cat client1_pub

Den public Key vom Server zeige ich mir an mit

cat server_pub

Die Konfigurationsdatei für den client öffne ich mit

nano client1.conf

Dort füge ich ein

[Interface]
PrivateKey = private key vom client
Address = 10.0.0.2/32
#DNS = 1.1.1.1

[Peer]
PublicKey = public key vom server
Endpoint = subdomain.domain.de:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Der Private und Public Key muss natürlich durch den vorher kopierten ersetzt werden. Als Endpoint verwende ich meine vorher eingerichtete Subdomain mit DynDNS. Alternativkann auch eine feste IPv4 eingegeben werden sofern man so eine besitzt.

Mit Strg+O, Strg+M und Strg+x speichere und schließe ich die Datei.

Jetzt stoppe ich die config mit

systemctl stop wg-quick@wg0

Ich öffne die config Datei des Servers mit

nano wg0.conf

dort füge ich unten ein

[Peer]
PublicKey = public key vom client
AllowedIPs = 10.0.0.2/32

Jetzt starte ich wieder Wireguard mit

systemctl start wg-quick@wg0

Android Handy per QR Code mit Wireguard verbinden

Ich installiere qrencode um einen QR Code für das Handy zu erstellen

apt install qrencode -y

Den QR Code für die Wireguard Verbindung erzeuge ich mit

qrencode -t ansiutf8 < client.conf

Ich lade mir die Wireguard App auf mein Android Handy https://play.google.com/store/apps/details?id=com.wireguard.android und scanne den QR Code damit. Jetzt ist der VPN Tunnel für das Handy auf den Server eingerichtet.

Ob das Handy mit dem VPN verbunden ist kann ich prüfen mit

sudo -s

und

wg show

Windows 10 PC mit Wireguard verbinden

Ich lade mir das Wireguard Programm für Windows 10 herunter https://www.wireguard.com/install/

Ich installiere und öffne das Programm.

Ich klicke auf den kleinen Pfeil unten links neben Tunnel hinzufügen und klicke dann auf einen leeren Tunnel hinzufügen.

Jetzt lege ich wie oben beschrieben einen neuen client in meiner Wireguard VM an.

Den Inhalt der client.conf kopiere ich dann in das Wireguard Programm.

Zusätzlich dazu muss ich das Häkchen bei „Blockiere Verkehr außerhalb des Tunnels“ entfernen. Sonst kann ich nicht auf lokale Netzwerkadressen zugreifen.

Der Zugriff aufs locale Netzwerk funktioniert jetzt nur noch mittels IP Adressen. Hostnamen wie z.B. pihole.local funktionieren nicht mehr über VPN.

Ich klicke auf Speichern und aktiviere den Tunnel.

Damit ist Wireguard eingerichtet.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s