Statische ipv4 für Zuhause.

Wie man eine feste ipv4 für zuhause bekommt. Schnell und günstig.
Die meisten Internetanschlüsse wechseln alle 24 Stunden die IP Adresse. Wer zuhause seine Cloud oder was anderes hosten möchte, braucht eine statische ipv4. Wie ihr die einfach über einen kleinen vServer nach hause weiterleitet, erkläre ich euch in diesem Video.

Was wir machen;

  • VPN Server erstellen und Clients anlegen
  • Traffic für Port 80 und 443 an einen Client umleiten.
  • Server absichern & Firewall einrichten

Kosten

Eine statische ipv4 kostet, falls man sie überhaupt von seinem ISP angeboten bekommt, zischen 5 EUR und 12 EUR im Monat. Bei meinem ISP gibt es das nur für Business-Pakete. Daher habe ich mir eine eigene Lösung gebaut.
Wir brauchen einen kleinen vServer, mit einer ipv4.
Ich habe mich für Netcup entscheiden. Da kostet der kleinste Server im Monat gerade mal 1 EUR und er hat eine feste ipv4 und ein ipv6 Netz.

Anleitung Wireguard Installation

Die Server werden mit einer Minimal-Installation von Debian 12 ausgeliefert. Das passt für uns perfekt.
Logt euch über die SSH Konsole ein.
Aktualisiert die Paketquellen und installiert die neusten Updates;

sudo apt update && sudo apt dist-upgrade -y

installiere curl

sudo apt install curl

installiert euch pivpn.org, ein Script das WirreGuard installiert und es erlaubt einfach Konfigurationen für Clients anzulegen.

curl -L https://install.pivpn.io | bash

Wenn ihr als Root eingeloggt seid, bitte das Script euch einen neuen User anzulegen. In dessen Home-Verzeichniss wird später die Klientkonfiguration gespeichert.

Danach bittet das Script um einen DNS Server den die Clients nutzen sollen. Nehmt den DNS eurer Wahl aus der Liste.
Wählt bitte Wirreguard als VPN Protokoll aus.
Der Port ist egal, nehmt einfach das voreingestellte.

Jetzt fragt das Script unter welcher Ip-Adresse der Server erreichbar sein soll. Wählt eure IP aus. Bei den meisten sollte nur eine zur Auswahl stehen.

Lasst das Script unattendet upgrades installieren, dann werden Updates automatisch installiert.
Am Ende fragt es ob der Server neu gestartet werden soll. Macht das bitte.
Nach dem Neustart loggen wir uns wieder ein.

WireGuard bedienen

testet ob wireguard automatisch gestartet wurde mit dem Befehl „wg“ oder „sudo wg“
Das Ergebnis sollte so aussehen;

Jetzt erstellen wir uns eine neue Konfiguration für unseren Computer

pivpn -a

Gebt den Namen des neuen Clients ein; z.B. Computer, Laptop, iPhone oder so.
Bei mir ist das Desktop_Linux

Jetzt wird eine Datei mit allein Informationen angelegt die wir brauchen.

Diese schauen wir uns mit dem Befehl cat an;

cat /home/homwer/configs/Desktop_Linux.conf

Achtet darauf dass euer User evt. Nicht homwer heißt 😀

Kopiert die Infos.

Client einrichten

Installiert auf eurerm Computer Wireguard.
Unter linux mit;

sudo apt installl wireguard

Für Windows und Mac bekommt ihr die Pakete hier;

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

Unter Windows und MacOS bekommt ihr ein schönes Gui zum verwalten der Tunnel.

Unter Linux nehmen wir einfach die Konsole.

sudo nano /etc/wireguard/wg0.conf

fügt die kopierten Infos aus der Client Datei des Servers ein.

Speichert die Datei uns startet wireguard mit dem Befehl

sudo wg-quick up wg0

Sollte es einen Fehler geben, installiert evt. Noch das Paket resolvconf mit

apt install resolvconf

Jetzt sollten wir mit dem Wireguard-Server verbunden sein und unser Traffic wird über diesen geroutet.

Testet welche IP als eure Public Ip ausgegeben wird z.B. auf

https://www.wieistmeineip.de/

oder in der console mit dem Befehl;

curl ifconfig.me

Dabei sollte euch jetzt die IP eures Servers angezeigt werden.

Traffic weiterleiten.

Jetzt haben wir einen Server online und können über diesen im Internet Surfen. Als IP wird dabei immer die IP des Servers ausgegeben und nicht mehr die IP eures Anschlusses zuhause.

Jetzt gehen wir einen Schritt weiter und wollen den Web-Traffic http und https auf den Ports 80 und 443 an einen Client im WireGuard-Netzwerk weiterleiten.
Dieser Client verbindet sich dann mit dem Netzwerk und der Server schickt alles an diesen weiter.
Wenn wir eine neue IP vom ISP bekommen, stellt der Client, in meinem Fall das NAS, automatisch wieder eine Verbindung her und ist sofort wieder über die Public IP erreichbar.

Erstellt eine Konfigurationsdatei für euren Homeserver / NAS indem ihr in der Konsole des Wireguard-Servers folgendes eingebt;

pivpn -a

dann gebt ihr der Konfiguration einen Namen z.B. NAS

Lest die neue Config aus mit dem Befehl

cat /home/homwer/configs/NAS.conf

Fügt diese config auf dem NAS ein unter /etc/wireguard/wg0.conf

startet auf dem NAS das WireGuard VPN;

sudo wg-quick up wg0

schaut mit „ip addr“ welche ip das WG interface auf dem NAS hat.
Die ip brauchen wir jetzt auf dem WireGuard-Server

Traffic weiterleiten

Auf dem Wireguardserver nutzen wir nun iptables um den Traffic der Ports 80 und 443 an unser NAS weiterzuleiten.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 443:443 -j DNAT --to-destination 10.152.246.2
iptables -t nat -A PREROUTING -p tcp --dport 80:80 -j DNAT --to-destination 10.152.246.2

Mit dem ersten Befehl aktivieren wir die Weiterleitung für ipv4 Pakete.
Dann sorgen wir dafür dass die ausgehenden Pakete von unserem NAS, so umgeschrieben werden, dass sie aussehen als ob sie vom Server kommen.
Am Ende sagen wir der Firewall dass Protokoll TCP auf Port 80 an die IP unseres NAS weitergegeben werden soll. In meinem Fall ist das die 10.152.246.2.

Jetzt ist das NAS unter der Adresse des vServers auf dem WireGuard läuft erreichbar.
Diese IP könnt ihr auch für einen DNS Eintrag nutzen.

Bitte beachtet dass nur Port 80 und 443 weitergeleitet werden. Alle anderen Ports landen auf dem Server! Aber ihr könnt natürlich auch Weiterleitungen für den Port 22 oder ähnliches anlegen.

Geschwindigkeit

Der 1 Core vServer reicht bei mir für ca. 300 Mbit Geschwindigkeit.

Es läuft aber auch absolut nichts anderes auf dem System. Der 1GB Ram wird auch nur mit 400 Mbit ausgelastet.
Für meine Bedürfnisse reicht das vollkommen aus. Wer mehr Geschwindigkeit braucht sollte etwas einen Server mit mehr Power wählen.

Denkt immer daran dass der Wireguard Server ein Tunnel ist. Wenn bei euch 300 Mbit ankommen, dann sendet der Server an euch 300 Mbit und empfängt zeitlich 300 Mbit, er braucht also das doppelte eurer Bandbreite. Daher halte ich Erwartungen von mehr als 500 Mbit/s für unrealistisch.

Zum Testen habe ich das identische Setup auf einem 2Core Server mit 2 GB Ram installiert;

Dort erreiche ich (leider) auch nur um die 300 Mbit, aber mit wesentlich weniger Schwankungen. Die CPU-Auslastung liegt auch nur bei 25% vs. 50% beim 1 Core Server.


Sicherheit

Um die Sicherheit des WireGuard-Servers zu erhöhen empfehle ich euch sämtlichen Traffic zu Blocken, den ihr nicht braucht. Also alles außer 443 und 80 in unserem Fall. Auch Port 22 solltet ihr sperren und nur über das Webinterface, also der KVM Konsole arbeiten.
Alternativ sollte zumindest fail2ban installiert werden und login mit Passwörtern deaktiviert werden.
Ich werden bei Gelegenheit ein ganzes Tutorial zum banalen Absichern schreiben.

Fazit.

Mit wenig Aufwand und wenigen Kosten habt ihr nun eine feste, statische ipv4 Adresse, über die euer Homeserver jederzeit aus dem Internet erreichbar ist.
Bei bedarf könnt ihr den VPN auch mir anderen Geräten nutzen um über euer eigenes Netzwerk zu surfen. Dies ist vor allem in fremden WLAN’s sehr praktisch oder zum umgehen von lokalen sperren.

ACHTUNG: Auch wenn wir hier ein VPN nutzen, sind wir nicht Anonym! Euer Traffic wird nach außen hin mit der IP eures Servers ausgegeben! Also gebt keine Logindaten für den VPN weiter und macht keinen Scheiß über den Anschluss.