Viele Internetnutzer haben eine Dual Stack Internetverbindung mit einer nicht eigenen IPv4 und/oder IPv6 Adresse. Dabei hat man schnell das Problem wenn man auf seine eigenen Dienst zugreifen möchte, keine Verbindung zu Stande kommt. Die IPv4 und die IPv6 Verbindung wechselt eventuell oder die IPv4 ist eine NAT Adresse usw. Es gibt also viele Hürden wieso man nicht an seine Dienst immer dran kommt.
Im besten Fall sucht man sich also einen Punkt im Internet der gut erreichbar ist und der die Anfragen an deine Dienste weiterleitet. Hier in diesem Beispiel mieten wir uns einen Cloud Server mit einer eigenen IPv4 & IPv6 Adresse. Somit sind die Dienste immer über beide Internet Protokolle erreichbar.
Lösungsbeschreibung
Du brauchst folgendes
- Cloud Server -> z.B. Hetzner Cloud (kleinster Server) HIER 20€ STARTGUTHABEN
- VPN Gateway -> z.B. pfSense // Hardware Appliance
Es wird zwischen dem Cloud Server und deinem VPN Gateway ein Wireguard VPN Tunnel aufgebaut. Diese Verbindung kann über IPv4 oder IPv6 aufgebaut werden. Da diese Verbindung sowieso durch deine pfSense initiiert wird, ist es egal ob v4 oder v6.
Auf dem Cloud Server wird die unten stehen WireGuard Konfiguration genommen und somit auch die 4 Wunderregeln für das DNAT (Destination NAT).
[Interface] Address = 10.0.0.2/24 ListenPort = 51820 PrivateKey = <YOUR-PRIVATE-KEY> PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT PostUp = iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dport 3000 -j DNAT --to 192.168.77.1 PostUp = iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT PostDown = iptables -t nat -D PREROUTING -i eth0 -p tcp -m multiport --dport 3000 -j DNAT --to 192.168.77.1 PostDown = iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE [Peer] PublicKey = <YOUR-PUBLIC-KEY> AllowedIPs = 192.168.77.0/24, 10.0.0.0/24
Mit dieser Konfiguration wird der Port 3000 eingehend auf dem Server mittels DNAT auf die Zieladresse 192.168.77.1 weitergeleitet. (PREROUTING)
Mit dem PORTROUTING wird dem Daten-Paket die IP-Adresse des Wireguard Tunnel aufgezwungen.
Die beiden FORWARD Regeln geben dem System die Freigabe Pakete zwischen beiden Interfaces zu verschieben.
Natürlich kann die besonders wichtige Regel „PREROUTING“ so angepasst werden das diese für euch passt. Man kann auch UDP Freigaben oder mehrere Ports gleichzeitig freigeben.
Alle weitere Informationen natürlich wie immer im Video.
10. Mai 2023 um 10:54 Uhr
Hallo Dennis,
sehr schönes Video, vielen Dank 🙂
Was hälst du von einem Portmapper auf dem Cloudserver, um komplett über Wireguard vom Mobilen Endgerät (IPV4) aufs DS-Lite Heimnetz zuzugreifen?
Grüße, Sven
11. Mai 2023 um 11:40 Uhr
Hallo,
danke für diese super Anleitung! Mit meinen Edgerouter X und meinem VPS Server geht der Tunnel ohne Probleme. Von der Console Richtung Heimnetzwerk kann ich alle Geräte anpingen (192.xxx).
Jetzt habe ich nur das Problem, dass ich über den VPS nicht auf diese zugreifen kann.
Z.B. auf mein NAS – in der wg0.conf habe ich die 192er IP und den Port 5000 angegeben. Leider passiert da nichts.
Via tcpdump sehe ich, dass 0 traffic entsteht – sobald ich vom root aus pinge, entsteht traffic.
Irgendwo habe ich einen Fehler drin – sehe ich nicht, da langsam Betriebsbilnd ^^
Danke für jede Hilfe.
Gruß Mathias
8. Oktober 2023 um 16:03 Uhr
Hallo,
ich habe denke ich das gleiche Problem. VPS bei Hetzner mit WG Server drauf. 1 x RPI als WG-client, 1 x mikrotik & 2 „road warrior“ (android, laptop). ich kann alles von überall pingen: tunnel-addressen, netze hinter den wg-clients.
reverse proxy traffic klappt auch. also scheint ein „round-trip“ der packete über wg0 ja prinzipiell zu klappen.
der versuch port 5222 (xmpp, prosody) auf der public IP am hetzner WG server via iptables in den wg0 tunnel durchzuschleifen geht aber schief.
ähnlich wie von mathias k. oben beschrieben:
– ich sehe mit tcpdump, daß der xmpp traffic auf port 5222 die public-ip vom hetzner vps auf dessen eth0 „trifft“. ankommen tun die IP packete also mal korrekt.
– am wg0 IF ist aber kein traffic feststellbar für port 5222 in das private netz hinein in dem der xmpp server steht.
NAT table nach wg0 up:
iptables -t nat -L –line-numbers
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DNAT tcp — anywhere anywhere multiport dports 5000 to:192.168.88.19
2 DNAT tcp — anywhere anywhere multiport dports 5280 to:192.168.88.19
3 DNAT tcp — anywhere anywhere multiport dports xmpp-server to:192.168.88.19
4 DNAT tcp — anywhere anywhere multiport dports xmpp-client to:192.168.88.19
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all — anywhere anywhere
was mach ich falsch? was hab ich nicht kapiert oder übersehen?
hinweis: ich bin „interessierter laie“, kein IP & routing & NAT profi.
10. Juni 2023 um 10:06 Uhr
Es gibt auch noch die Möglichkeit mit zwei Befehlen das eigene Netzwerk zu schützen.
(Nicht auf dem VPS sondern dem Client „Zuhause“)
PreUp = iptables -I INPUT -s 10.0.0.2/32 -p tcp –dport 3000 -m state –state NEW,ESTABLISHED -j ACCEPT
PreUp = iptables -A INPUT -i wg0 -j DROP
PostDown = iptables -D INPUT -s 10.0.0.2/32 -p tcp –dport 3000 -m state –state NEW,ESTABLISHED -j ACCEPT
PostDown = iptables -D INPUT -i wg0 -j DROP
Hoffe ich irre mich nicht (auf eigene Gefahr)
iptables -I >> wird zuerst beachtet
iptables -A >> wird zuletzt beachtet
😉 LG
16. Juni 2023 um 01:03 Uhr
Hier fehlt und auch im Video natürlich noch der Spannende Teil der Konfiguration eines Tunnels vor weck. 🙁
Vielleicht hier noch ergänzen??
16. Juni 2023 um 01:43 Uhr
wer suchet der finden hier ist es doch
https://schroederdennis.de/tutorial-howto/wireguard-vpn-server-installieren-client-to-server/
18. Juli 2023 um 16:11 Uhr
Hallo,
erstmal super Video, hab mir alle Schritte unteranderem dank dem Wireguard-Server Installations Guide von dir zusammen gesucht und es funktioniert echt gut. (Ein extra Video mit Step-by-Step-Anleitung wäre trotzdem noch super).
Gibt es die Möglichkeit das man sich mit einem Gerät (z.B. Smartphone) per Wireguard zum Hetzner-Server verbindet und dieser dann mit dem, wie von dir gezeigtem, Tunnel die Verbindung ins Heimnetz herstellt?
LG
3. November 2023 um 00:01 Uhr
Moin! Danke!
Hat schon jemand probiert das ganze Netz bzw. die komplette Portrange zur Firewall durchzujagen? Single Point of Administraton! Keine Lust die Ports auf der Sense freizugeben und dann nochmal auf dem VPS. Doppelte Arbeit.