Portweiterleitung via VPN

Started by ThePocky, June 28, 2020, 06:35:04 PM

Previous topic - Next topic
Hallo!

seit einigen Tagen suche ich nun für folgendes Szenario eine Lösung:

Aktuell habe ich hinter meinem LTE-Modem eine OPNsense Firewall laufen. Da über LTE keine feste IP-Adresse bezogen werden kann, habe ich meine Firewall mit einem VPN Anbieter verbunden, welcher eine Static-Public-IPv4 Adresse anbietet. Die Verbindung funktioniert nach anfänglichen schwierigkeiten mit dem DNS soweit ganz gut. Sowohl der Traffic aus meinem Netzwerk ins Internet, als auch der Traffic aus einem Externen Netzwerk in mein Netzwerk über die Öffentliche IP des VPN-Anbieters funktioniert, sofern ich natürlich eine entsprechende Firewall-Regel gesetzt habe.

Nun habe ich die möglicheit über die Öffentliche IP des VPN-Anbieters die Web-GUI meiner Firewall von Extern zu erreichen.

Rufe ich nun aus dem Externen Netzwerk die IP über den Browser auf, kann ich mich in meine Firewall einloggen.

Mein Plan war nun eigentlich, hinter der Firewall beispielweise einen ReverseProxy zu nutzen, welcher dann diverse Server anspricht (Nextcloud, Proxmox etc.). Um dies zu ermgliche habe den DNS-Eintrag einer Subdomain auf die IP des VPN-Anbieters gelegt.

Beispiel:

intern-1.MEINEDOMAIN.de
intern-2.MEINEDOMAIN.de

Beide lösen natürlich auf die Öffentliche IP des VPN-Anbieters auf. Nun möchte ich dass auch beide Domains an den ReverseProxy weitergeleitet werden, da dieser weiß was er damit machen soll.

Wenn ich mit einer Portweiterleitung arbeite, bekomme ich immer folgende Meldung:

A potential DNS Rebind attack has been detected.
Try to access the router by IP address instead of by hostname.


Gut die Firewall funktioniert, und lässt natürlich nur zugang über einen bekannten Hostname oder die IP zu.

Wie mache ich der Firewall nun verständlich, dass wenn eine Anfrage über die Domains oben und ber die IP vom VPN-Anbieter rein kommt, diese direkt an den Reverse Proxy weitergeleitet werden.

Einen direkten Zugang von Außerhalb zur Firewall ist für mich ganicht von nöten.

Ich hoffe ich konnte mein Vorhaben erklären und hoffe auf ein par denkanstöße :-)

Viele Grüße
Björn

Du musst als erstes das Web interface auf einen anderen Port legen (Achtung HTTP redirect!) - zum Beispiel 8443 für HTTPS und dann kannst du 80 und 443 entweder mit einem lokalen Load Balancer bedienen (nginx, HAProxy) oder eine Portweiterleitung konfigurieren. In beiden Fällen braucht es eine Firewall Konfiguration.

June 28, 2020, 08:36:08 PM #2 Last Edit: June 28, 2020, 08:46:06 PM by micneu
Du kannst doch auch einfach einen Reverse Proxy (z. B. nginx). Auf deinem externen Server aufsetzen und dort einfach die Adressen von dir zuhause erreichbar machen. Du brauchst keine portweitetleitung. Da ja dein Server über das VPN in dein Netz kommt


Gesendet von iPhone mit Tapatalk Pro
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100

June 28, 2020, 09:00:52 PM #3 Last Edit: June 28, 2020, 09:03:18 PM by ThePocky
Hey,

Quote from: fabian on June 28, 2020, 06:42:17 PM
Du musst als erstes das Web interface auf einen anderen Port legen (Achtung HTTP redirect!) - zum Beispiel 8443 für HTTPS und dann kannst du 80 und 443 entweder mit einem lokalen Load Balancer bedienen (nginx, HAProxy) oder eine Portweiterleitung konfigurieren. In beiden Fällen braucht es eine Firewall Konfiguration.

vielen Dank für diesen Tipp.

Den port der OPNsense Firewall habe ich nun auf "8443" gelegt und das HTTP-redirect ausgeschaltet.

Wie auf den Bilder zu sehen, habe ich daraufhin eine Portweiterleitung angelegt für die Schnittstelle "OpenVPN". Die ausgebelendete IP ist die vom VPN-Anbieter zur vefügung gestellte IPv4-Adresse.

Durch die Portweiterleitung wurde automatisch eine Rege in der Schnittstelle "OpenVPN" angelegt.

Quelle in der Portweiterleitung ist um es aktuell sicher zu halten, das Netzwerk von dem ich das ganze von Extern teste. Ziel ist die Adresse welche ich vom VPN-Anbieter bekommen habe als Static-Public-IP.

In den Regeln für die Schnittstelle "OpenVPN" ist die Quelle ebenfalls das externe Netzwerk. Als Ziel wurde dort automatisch die IP des Reverse-Proxy eingetragen, so wie ich es in der Portweiterleitung auch angegeben habe.

Nun, bis hierhin funktioniert es nun dass ich über die Öffentliche IP vom VPN Anbieter meinem Reverse-Proxy erreiche. Dieser verarbeitet aktuell nun die IP und leitet mich weiter an den jeweilien WebServer.

Nun habe ich das ganze mit einer Domain versucht ... intern1.MEINEDOMAIN.de ... dies natürlich auch im Reverse Proxy angegeben, aber leider Ohne erfolg.

Gibt es dazu nun eine spezielle Einstellung, welche ich vornehmen muss in den Regeln? Die VPN-IP habe ich natürich auch versuchsweise gegen einen Alias augetauscht, wo die jeweilige Domain  hinterlegt war. Ebenefalls auch ohne erfolg.

Quote from: micneu on June 28, 2020, 08:36:08 PM
Du kannst doch auch einfach einen Reverse Proxy (z. B. nginx). Auf deinem externen Server aufsetzen und dort einfach die Adressen von dir zuhause erreichbar machen. Du brauchst keine portweitetleitung. Da ja dein Server über das VPN in dein Netz kommt


Gesendet von iPhone mit Tapatalk Pro

Es gibt keinen externen Server. Vielleicht hast du da etwas falsch verstanden oder ich habs nicht gut genug ausgedrückt.

Die Server, welche ich erreichen möchte stehen bei mir Zuhause. Als VPN-Server nutze ich keinen eigenen. Ich nutze einen normalen VPN-Anbieter, welcher Public-IPv4 bereit stellt.

Danke schonmal für eure hilfe!

Gruß
Björn


ne, wenn du die OPNsense so konfiguriert hast, passt es, es sei denn du testest von innen, dann spielt da auch NAT reflection (grausliger hack) mit rein. Schau mal ob das aktiviert ist, falls nein, schalt es mal ein.

@ThePocky: das habe ich aus deinem text nicht so verstanden.
ich kann immer nur empfehlen einen netzwerkplan zu zeichnen, so kann man es besser verstehen.
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100

June 28, 2020, 10:08:06 PM #6 Last Edit: June 28, 2020, 10:17:10 PM by ThePocky
Es scheint, dass der Fehler im Browser lag. Ich teste es gerade mit einer anderen Domain. Irgendwie hat er im Cache etwas falsch gespeichert.

Ich teste noch ein par Sachen, aber es kann sein dass es nun funktioniert.

Danke für die Hilfe!

Gruß
Björn