November 23, 20232 yr Hallo zusammen, nach vielen Jahren des Luxus einer öffentlichen IPv4 waren dann vor einigen Tagen alle meine Services down. Mit Schrecken musste ich feststellen: ich lebe nun hinter einem CG-NAT. Ein wenig googeln später habe ich nun ausreichend Halbwissen um nicht nur gefährlich zu sein sondern auch ein wenig zu wissen was ich brauche bzw. nicht möchte. Vielleicht zunächst was ich überhaupt erreichen möchte: 1. Zugänglich machen meiner Domain/Subdomains hinter dem CG-NAT - mein Swag Container auf Unraid verwaltet als Reverse Proxy Nextcloud und andere Services mit https - vereinzelt werden/wurden auch UDP Services auf Unraid betrieben (Spielserver Spielereien) - bewahren der echten Source IP der Anfrage 2. Bisher hatte ich auf meiner Fritz!Box des Kabelanbieters einen VPN Server eingerichtet, welcher mir auf angenehme Weise den Fernzugriff erlaubte falls gelegentlich etwas schief lief (zum Beispiel im SmartHome: Frau zu Hause und die Batterie vom Lichtschalter ist alle ...) Was ich mir also wünsche ist eine möglichst open source Lösung um von extern TCP Ports, UDP Ports (oft muss es da auch IPv4 sein) auf mein Unraid weiterzuleiten und eine VPN in mein Netzwerk (LAN) aufzubauen. Es gibt einige Kauflösungen, welche Teile meiner Anforderungen erfüllen können aber auch irgendwie nicht alle und wo bleibt denn da der Spaß? Also habe ich mich nach Open Source Lösungen umgeschaut und einige "durchdacht": 1. VPS mit Compose Stack bestehend aus NGINX (nicht Swag wegen dem Certbot) und Wireguard welche sich ein Interface teilen. Auf Unraid dann einen Compose Stack mit SWAG und Wireguard sowie vermutlich den Services welche verwendet werden sollen. Mittels des "stream" Systems von NGINX und "proxy_protocoll" kann man dann angeblich TCP und UDP weiterleiten und die Source Ip behalten. Sogar SSL/TLS bleiben erhalten. Nun mal abgesehen, dass ich nicht so richtig verstehe welchen Wudu NGINX da mit den Paketen treibt terminiert mein VPN im Compose Stack. Damit kann ich dann leider weder mein Smart Home retten noch Weiterleitungen zu Spielserver VMs einrichten. 2. VPS mit OPNsense und OPNsense als VM auf Unraid. Damit hat man vermutlich die beste Kontrolle aber benötige ich dazu noch ein weiteres Netwerkinterface im Unraid Server und muss dann auch noch meine Fritz!Box auf ein anderes VLAN legen (die beiden sind nicht im Raum und 2 Switches voneinander entfernt). Zusätzlich habe ich Geizhals eine IONOS VPS XS genommen welche keine eigenen Images erlaubt ... 3. Was kann schon OPNsense was die guten alten Iptables nicht können. Daher meine Idee Wireguard nativ auf der VPS zu installieren und gezielt Ports in den Tunnel weiterzuleiten. In etwa so: iptables -t nat -A PREROUTING -p tcp -i {VPS_NIC} --dport 443 -j DNAT --to-destination {WG_UNRAID}:1443 #andere Port für Swag Docker iptables -t nat -A PREROUTING -p udp -i {VPS_NIC} --match multiport --dports 51820 -j DNAT --to-destination {WG_UNRAID} iptables -t nat -A POSTROUTING -o {VPS_NIC} -j SNAT --to-source {VPS_IPV4} SNAT sollte eigentlich automagically gehen oder? Auf Unraid wollte ich den internen VPN Manager nehmen um nicht extra ein Script für den Restart bauen zu müssen. Dabei ist mir die Option "LAN to LAN" aufgefallen. Hier kommt das Halbwissen ins Spiel. Mit diesem Setup sollte ich doch genau erreichen können was ich möchte oder? Meine Docker Services sollten wie früher mit öffentlicher IPV4 am Router ohne Änderungen auf ihren Ports erreichbar sein genauso die VMs. Ebenso sollte ich mit Wireguard ins ganze Netzwerk kommen (da gehts ja bestimmt nur um das Routing auf Seiten von Unraid). Mir stellen sich nun aber ein paar Fragen zum "LAN to LAN" Setup : - setze ich mich zusätzlichen Gefahren aus, da ja nun auch die VPS im meinem LAN? Gibt es einen plausiblen Angriffsvektor über die VPS in mein Heimnetzwerk inkl. Smart Home und co? - welches Standartgateway nimmt der Traffic von Unraid z.B. Community Apps Panel oder andere Docker, welche nicht aus Wireguard angesprochen wurden? - gibt es eine bessere Übersicht was Unraid mit Wireguard treibt als diese Doku Seite ? (https://docs.unraid.net/unraid-os/manual/security/vpn/) Ich freue mich darauf von euch zu lernen was ich falsch verstanden habe bzw. mir an Infos noch fehlt
November 24, 20232 yr Andere Lösung: Provider anrufen und kräftig aufn Putz hauen. Einseitige Vertragsänderung musst du nicht akzeptieren.
November 24, 20232 yr 14 hours ago, En1kay said: 2. VPS mit OPNsense und OPNsense als VM auf Unraid. Damit hat man vermutlich die beste Kontrolle aber benötige ich dazu noch ein weiteres Netwerkinterface im Unraid Server und muss dann auch noch meine Fritz!Box auf ein anderes VLAN legen (die beiden sind nicht im Raum und 2 Switches voneinander entfernt). Zusätzlich habe ich Geizhals eine IONOS VPS XS genommen welche keine eigenen Images erlaubt ... Hi, bin mir nicht sicher, ob man wirklich zwei OPNsense Instanzen für dein Vorhaben benötigt. Im Grunde genommen geht es ja auschließlich um VPN, Reverse-Proxy und bissl Port weiterleiten. Wegen der CG-NAT Problematik habe ich ebenfalls den XS und muss sagen, für nen Euro gibt es aktuell nichts besseres (Gbit, unlimited Traffic, Firewall). Vor ein paar Tagen wurde eine "DVD einlegen" Option freigeschaltet. Eigene ISOs gehen zwar nicht, aber zumindest sind die gängigen ISOs hinterlegt und man muss nicht mit diesem Cloud-Init Gedöhns arbeiten. Hier mal mein Setup, vielleicht wäre das auch für dein Vorhaben ausreichend: 1. IONOS - Wireguard VPN Server, Docker verwaltet mit Portainer und NGINX Proxy-Manager 2. Sämtliche Seiten meiner verschiedenen Standorte, die über ein Webinterface erreichbar sein sollen, laufen über den NGINX und werden dann per VPN verteilt 3. Reine Portfreigaben/Weiterleitungen wickle ich über SOCAT ab
November 25, 20232 yr Author On 11/24/2023 at 2:07 AM, Sacred said: Andere Lösung: Provider anrufen und kräftig aufn Putz hauen. Einseitige Vertragsänderung musst du nicht akzeptieren. Ich denke das wird so einfach nicht möglich sein mit Pyur. Zum einen sind sie nicht für guten Kundendienst bekannt und zum anderen war vertraglich nie eine öffentliche IPv4 zugesichert . Nach meinen Erfahrungen mit wochenlangen Telefonaten um einen sporadisch defekten Router zu tauschen ist mir meine Zeit da vermutlich zu kostbar. Jetzt habe ich mich auch einmal schon so in das Problem hineingesteigert, dass ich nun auch eine Lösung möchte. Der Kampfgeist is geweckt.
November 25, 20232 yr Author On 11/24/2023 at 12:17 PM, cyp2k said: 1. IONOS - Wireguard VPN Server, Docker verwaltet mit Portainer und NGINX Proxy-Manager 2. Sämtliche Seiten meiner verschiedenen Standorte, die über ein Webinterface erreichbar sein sollen, laufen über den NGINX und werden dann per VPN verteilt 3. Reine Portfreigaben/Weiterleitungen wickle ich über SOCAT ab Terminierst du dein SSL/TLS auf der VPS mit NGINX oder dann erst auf dem Heimserver? Hast du die NGINX Weiterleitung so hinbekommen, dass die echte Source IP der Anfrage erhalten bleibt? SOCAT klingt nach einer interessanten Lösung! Das werde ich mir mal genauer Anschauen. Worin besteht der Vorteil gegenüber einfachen iptables oder geht es prinzipiell eher um Einfachheit der Benutzung? Am meisten würde mich interessieren wie du Wireguard auf Unraid verwendest. Im "Site to Site" Modus über die GUI oder über die Konsole mit eigenem Routing?
November 26, 20232 yr 11 hours ago, En1kay said: Terminierst du dein SSL/TLS auf der VPS mit NGINX oder dann erst auf dem Heimserver? Hast du die NGINX Weiterleitung so hinbekommen, dass die echte Source IP der Anfrage erhalten bleibt? Ja, die HTTPS Verbindung wird auf dem VPS terminiert, intern geht es an HTTP über den WG Tunnel weiter. In diesem Szenario wird die SourceIP nicht übernommen, sondern gegen die aus dem Docker Netzwerk des VPS ausgetauscht. 11 hours ago, En1kay said: SOCAT klingt nach einer interessanten Lösung! Das werde ich mir mal genauer Anschauen. Worin besteht der Vorteil gegenüber einfachen iptables oder geht es prinzipiell eher um Einfachheit der Benutzung? Weiß nicht ob es bei SOCAT einen Vorteil gibt aber einfach im Handling ist es auf jeden Fall. Ich hatte das bereits vor langer Zeit genutzt, als es Wireguard noch nicht gab. Damals hatte ich die Anforderung eine einfache Portfreigabe an einem CG-NAT Anschluss einzurichten, die Clients aber lediglich IPv4 only konnten. Im finalen Setup hatte ich den Server hinter der Fritzbox erst einmal auf IPv6 umgebaut. Dann einen VPS mit Public IPv4, SOCAT mit IPv4 to IPv6, mit dem Ziel des IPv6 Servers hinter der Fritzbox. Wie gesagt, alles ohne VPN sondern lediglich eine Portfreigabe und Protokollmischung IPv4/IPv6. 11 hours ago, En1kay said: Am meisten würde mich interessieren wie du Wireguard auf Unraid verwendest. Im "Site to Site" Modus über die GUI oder über die Konsole mit eigenem Routing? Im Wireguard Manager in Unraid habe ich lediglich einen Tunnel (*.conf) über die GUI importiert. Alle Netze die du unter allowed IPs definierst, routet Unraid dann automatisch. In deinem Router (Fritzbox?) legst du dann lediglich noch statische Routen für alle Zielnetze, mit Unraid als Gateway, an. Da die genauen Anforderungen nicht bekannt sind ist das alles lediglich ein möglicher Ansatz und muss nicht zwingend die beste Lösung sein.
November 30, 20232 yr Author Ich habe mich heute nochmal mit der Thematik beschäftigt. zunächst habe ich auf der Ionos VPS WireGuard installiert und die /etc/sysctl.conf angepasst nano /etc/sysctl.conf sichergestellt, dass net.ipv4.ip_forward=1 sysctl -p apt update && apt upgrade apt install wireguard anschließend habe ich folgende WireGuard config erstellt um die gewünschten Ports weiterzuleiten (gleich an die Ports für mein Swag Docker) [Interface] PrivateKey = [PrivateKey generated on VPS] ListenPort = 55107 Address = 10.0.0.1/24 ### Http on port 80 PostUp = iptables -t nat -A PREROUTING -p tcp -i [interface] --dport 80 -j DNAT --to-destination 10.0.0.2:180 PostDown = iptables -t nat -D PREROUTING -p tcp -i [interface] --dport 80 -j DNAT --to-destination 10.0.0.2:180 ### Https on port 443 PostUp = iptables -t nat -A PREROUTING -p tcp -i [interface] --dport 443 -j DNAT --to-destination 10.0.0.2:1443 PostDown = iptables -t nat -D PREROUTING -p tcp -i [interface] --dport 443 -j DNAT --to-destination 10.0.0.2:1443 ### Wireguard on Port 51820 PostUp = iptables -t nat -A PREROUTING -p udp -i [interface] --match multiport --dports 51820 -j DNAT --to-destination 10.0.0.2 PostDown = iptables -t nat -D PREROUTING -p udp -i [interface] --match multiport --dports 51820 -j DNAT --to-destination 10.0.0.2 ### SNAT PostUp = iptables -t nat -A POSTROUTING -o [interface] -j SNAT --to-source [VPS IPv4] PostDown = iptables -t nat -D POSTROUTING -o [interface] -j SNAT --to-source [VPS IPv4] [Peer] # unraid PublicKey = [PublicKey generated on Home-Server] PresharedKey = [PresharedKey generated on Home-Server] AllowedIPs = 10.0.0.2/32 da ich den WireGuard Tunnel welcher exklusiv zwischen Unraid und der VPS stattfindet auf Port 55107 gelegt habe kann ich nun noch Port 51820 an Unraid weiterleiten. Dort kann ich dann problemlos eine Wireguard config erstellen auf die ich mich zum Beispiel mit dem Handy verbinden kann (statische IP von der VPS) und getrost mein LAN freigeben kann. Ich habe ja eine sichere Verbindung direkt vom Handy auf Unraid ohne dass die VPS davon etwas mitbekommt. [Interface] #home PrivateKey=removed Address=10.253.1.1 ListenPort=51820 PostUp=iptables -t nat -A POSTROUTING -s 10.253.1.0/24 -o br0 -j MASQUERADE PostDown=iptables -t nat -D POSTROUTING -s 10.253.1.0/24 -o br0 -j MASQUERADE PostUp=ip -4 route flush table 201 PostUp=ip -4 route add default via 10.253.1.1 dev wg1 table 201 PostUp=ip -4 route add heimnetz/24 via heimrouter dev br0 table 201 PostDown=ip -4 route flush table 201 PostDown=ip -4 route add unreachable default table 201 PostDown=ip -4 route add heimnetz/24 via heimrouter dev br0 table 201 ### allow access behind this lan PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE [Peer] #handy PublicKey=removed PresharedKey=removed AllowedIPs=10.253.1.2 Alles funktioniert genau wie gedacht. Ich kann gewünschte Ports von der VPS auf den Heimserver weiterleiten und sehe trotzdem die original source IP und kann zum Beispiel fail2ban benutzen. Ich kann auch eine sichere Verbindung über eine statische IPV4 direkt mit meinem Heimnetz aufbauen (egal ob die jetzt langsam ist Hauptsache die VPS sieht das LAN nicht). Ich habe jetzt nur noch einen Dorn im Auge der wahrscheinlich aber auch am schwersten zu lösen ist. Da Unraid jetzt wg0 als default gateway nimmt fliegt mir der Internetzugriff weg sobald der Tunnel bricht. Die Lösung ist wohl policy/source based Routing mit iproute2 suite aber ich bin bisher noch nicht dahinter gekommen wie ich das anstellen soll. Ich plane wenn dieser letzte Makel beseitigt ist einen kleinen Guide zu schreiben um das Problem ein für alle mal auch für solche Korintenkacker wie mich zu lösen (echte source IP und sichere direkter Tunnel ins LAN) Vielleicht hat ja einer aus der Community einen Plan?
August 6, 20241 yr Community Expert On 11/30/2023 at 9:45 PM, En1kay said: Ich habe jetzt nur noch einen Dorn im Auge der wahrscheinlich aber auch am schwersten zu lösen ist. Da Unraid jetzt wg0 als default gateway nimmt fliegt mir der Internetzugriff weg sobald der Tunnel bricht. Die Lösung ist wohl policy/source based Routing mit iproute2 suite aber ich bin bisher noch nicht dahinter gekommen wie ich das anstellen soll. Ich plane wenn dieser letzte Makel beseitigt ist einen kleinen Guide zu schreiben um das Problem ein für alle mal auch für solche Korintenkacker wie mich zu lösen (echte source IP und sichere direkter Tunnel ins LAN) Gibt es dazu ein Update?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.