Hallo zusammen,
da ich im Heimnetzwerk ein wenig umgebaut habe und einige Zeitfresser unterwegs aufkamen, dachte ich mir ich teile einmal meine Erfahrung mit der Community
2. Ein Endgerät auf dem WireGuard läuft, welcher als Gateway in das interne Netz dient. Bei mir ist das eine Proxmox VM basierend auf debian12. Es ist aber auch ein RaspberryPi, BananaPi oder sonstiges Gerät möglich, auf dem Linux läuft (Toaster )
3. Grundlegendes Wissen über Konsole
4. Private und Public Keys für Wireguard, z.B. hier: https://www.wireguardconfig.com
Die blauen IP Adressen sind die WireGuard IPs, die grünen die internen Heimnetzwerk IPs und die schwarzen die normalen im Internet verfügbaren IPs.
Zur Erklärung der IP Routing Regeln:
iptables -t mangle: Dies bedeutet, dass die Regel in der "mangle"-Tabelle angewendet wird. Die "mangle"-Tabelle wird benutzt, um spezielle Paketänderungen vorzunehmen.
-A PREROUTING: Die "PREROUTING"-Kette wird verwendet, um Pakete zu manipulieren, bevor eine Routing-Entscheidung getroffen wird.
-i wg0: Die Regel gilt nur für Pakete, die über das Interface "wg0" eintreffen, also über eure wg0.conf Datei konfiguriert wird.
-j MARK --set-mark 0x45: Dies bedeutet, dass alle Pakete, die diese Regel passieren, mit dem Wert "0x45" markiert werden. Da kann jeder beliebige Byte Wert stehen. Also von 0x00 bis 0xFF.
Damit hätten wir unseren "Server" fertig konfiguriert. Dies spielen wir jetzt in die wg0.conf ein und können den Adapter starten.
Damit haben wir schon das meiste abgeschlossen. Jetzt fehlt es nur noch daran, die Peers zu verbinden, welche auf das Heimnetzwerk Zugriff erhalten sollen.
Nachdem man diese Konfiguration vom Host "A" auf seinen "Client" übertragen hat, und nun sich mit dem VPS verbindet, erlangt man Zugriff auf das Heimnetzwerk.
Ich habe bei meinem VPS z.B. nur einen einzigen Port offen und das ist der Wireguard Port. Sollte man per SSH auf den VPS drauf wollen, geht das getunnelt über Wireguard, ohne die Verbindung dem bösen Internet preiszugeben.
Ich weiß es ist eine kurze Anleitung und vielleicht baue ich diese in Zukunft noch ein wenig weiter aus, aber ich hoffe, dass ich damit trotzdem einigen helfen kann, die eben nicht auf der Fritz!Box oder anderen Routern Wireguard laufen lassen können oder wollen.
Gruß,
Xiao
Disclaimer: Es wird keine Garantie oder ähnliches für irgendwas übernommen. Es ist eine Anleitung im Internet von einem Foren-Dude, sollte wohl klar sein?
da ich im Heimnetzwerk ein wenig umgebaut habe und einige Zeitfresser unterwegs aufkamen, dachte ich mir ich teile einmal meine Erfahrung mit der Community
Zielgruppe
Die Zielgruppe sind Personen, welche hinter einem CG-NAT oder Ähnlichem sitzen und eine WireGuard-Verbindung ins Heimnetz über einen VPS herstellen möchten. Die Verbindung wird dabei nicht über den Router realisiert, sondern über ein anderes beliebiges Gerät (z.B. RapberryPi), welches sich im Subnet befindet. Es ist somit kein Router mit Wireguard-Funktionalität notwendig.Was benötigt wird
1. Der VPS natürlich. Ich habe den kleinsten IONOS Server für 1€/Monat dafür angemietet, welcher auf Ubuntu 24.04 läuft. Wichtig ist die öffentliche IPv4.2. Ein Endgerät auf dem WireGuard läuft, welcher als Gateway in das interne Netz dient. Bei mir ist das eine Proxmox VM basierend auf debian12. Es ist aber auch ein RaspberryPi, BananaPi oder sonstiges Gerät möglich, auf dem Linux läuft (Toaster )
3. Grundlegendes Wissen über Konsole
4. Private und Public Keys für Wireguard, z.B. hier: https://www.wireguardconfig.com
Der Aufbau gestaltet sich wie folgt:
Die blauen IP Adressen sind die WireGuard IPs, die grünen die internen Heimnetzwerk IPs und die schwarzen die normalen im Internet verfügbaren IPs.
Konfiguration des "Servers" / Host "S"
Das ist unsere wichtigste Konfigdatei und diese muss den folgenden Aufbau haben:
Code:
[Interface]
Address = 10.0.0.1/24 ## Adresse eures Adapters im WG Netz
ListenPort = 45678 ## Hier kommt eure Portnummer rein, über die man sich verbinden kann
PrivateKey = ## Private Key vom Server
# IP forwarding
PreUp = sysctl -w net.ipv4.ip_forward=1
# IP masquerading
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x45
PreUp = iptables -t nat -A POSTROUTING ! -o wg0 -m mark --mark 0x45 -j MASQUERADE
PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x45
PostDown = iptables -t nat -D POSTROUTING ! -o wg0 -m mark --mark 0x45 -j MASQUERADE
# Gateway Peer, Host "H"
[Peer]
PublicKey = ## Public Key vom Host "H"
PresharedKey = ## Optional einen PSK für erhöhte Sicherheit hinzufügen
AllowedIPs = 10.0.0.2/32, 172.16.1.0/24 ## IP vom WG Adapter des Host "H" zzgl. zu benutzendem Subnet im Heimnetzwerk
# Peer von außen, Host "A"
[Peer]
PublicKey = ## Public Key vom Host "A"
PresharedKey = ## Optional einen PSK für erhöhte Sicherheit hinzufügen
AllowedIPs = 10.0.0.3/32 ## Hier wird NUR die IP des WG Adapter des Host "A" eingetragen
Zur Erklärung der IP Routing Regeln:
iptables -t mangle: Dies bedeutet, dass die Regel in der "mangle"-Tabelle angewendet wird. Die "mangle"-Tabelle wird benutzt, um spezielle Paketänderungen vorzunehmen.
-A PREROUTING: Die "PREROUTING"-Kette wird verwendet, um Pakete zu manipulieren, bevor eine Routing-Entscheidung getroffen wird.
-i wg0: Die Regel gilt nur für Pakete, die über das Interface "wg0" eintreffen, also über eure wg0.conf Datei konfiguriert wird.
-j MARK --set-mark 0x45: Dies bedeutet, dass alle Pakete, die diese Regel passieren, mit dem Wert "0x45" markiert werden. Da kann jeder beliebige Byte Wert stehen. Also von 0x00 bis 0xFF.
Damit hätten wir unseren "Server" fertig konfiguriert. Dies spielen wir jetzt in die wg0.conf ein und können den Adapter starten.
Konfiguration des Gateway Peers, Host "H"
Die Konfiguration des Gateway Peers in unserem Heimnetzwerk muss folgendermaßen aussehen:
Code:
[Interface]
Address = 10.0.0.2/32 ## IP Adresse des WG Adapters
PrivateKey = ## Private Key vom Host "H"
# IP forwarding
PreUp = sysctl -w net.ipv4.ip_forward=1
# IP masquerading ## Der IP Marker muss hier der selbe sein wie oben festgelegt, damit das Routing funktioniert.
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x45
PreUp = iptables -t nat -A POSTROUTING ! -o wg0 -m mark --mark 0x45 -j MASQUERADE
PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x45
PostDown = iptables -t nat -D POSTROUTING ! -o wg0 -m mark --mark 0x45 -j MASQUERADE
[Peer]
PublicKey = ## Public Key vom Host "S"
PresharedKey = ## Optional einen PSK für erhöhte Sicherheit hinzufügen
AllowedIPs = 10.0.0.0/24 ## Hier ist nur das WG Subnet einzutragen
Endpoint = 12.23.12.12:45678 ## Öffentliche IP und Port eures VPS
PersistentKeepalive = 25 ## Damit die Verbindung am Leben gehalten wird
Konfiguration eines Teilnehmers, Host "A"
Hier kommt jetzt der Part, der beliebig vervielfältigt werden kann, man muss nur die Adapter IP + Keys anpassen und den Peer im Host "S" eintragen und dann hat man einen weiteren Teilnehmer hinzugefügt.
Code:
[Interface]
Address = 10.0.0.3/32 ## IP Adresse des WG Adapters
PrivateKey = ## Private Key vom Host "A"
[Peer]
PublicKey = ## Public Key vom Host "S"
PresharedKey = ## Optional einen PSK für erhöhte Sicherheit hinzufügen
AllowedIPs = 10.0.0.0/24, 172.16.1.0/24 ## Subnet vom WG Netz "H" zzgl. zu benutzendem Subnet im Heimnetzwerk
Endpoint = 12.23.12.12:45678 ## Öffentliche IP und Port eures VPS
PersistentKeepalive = 25 ## Damit die Verbindung am Leben gehalten wird
Nachdem man diese Konfiguration vom Host "A" auf seinen "Client" übertragen hat, und nun sich mit dem VPS verbindet, erlangt man Zugriff auf das Heimnetzwerk.
Ich habe bei meinem VPS z.B. nur einen einzigen Port offen und das ist der Wireguard Port. Sollte man per SSH auf den VPS drauf wollen, geht das getunnelt über Wireguard, ohne die Verbindung dem bösen Internet preiszugeben.
Ich weiß es ist eine kurze Anleitung und vielleicht baue ich diese in Zukunft noch ein wenig weiter aus, aber ich hoffe, dass ich damit trotzdem einigen helfen kann, die eben nicht auf der Fritz!Box oder anderen Routern Wireguard laufen lassen können oder wollen.
Gruß,
Xiao
Disclaimer: Es wird keine Garantie oder ähnliches für irgendwas übernommen. Es ist eine Anleitung im Internet von einem Foren-Dude, sollte wohl klar sein?
Zuletzt bearbeitet: