Wie mach ich ein Gerät über Umwege aus dem Internet erreichbar?

Alex_Kl

Cadet 3rd Year
Registriert
Juni 2018
Beiträge
34
Ich habe vielleicht einen etwas besonderes Aufbau meines Netzwerkes. Leider bekomme ich das nicht so hin, wie ich mir das wünschen würde.
Folgendes Problem beschäftigt mich schon ein bisschen:
Ich habe eine Fritzbox die ganz normal als Router fungiert. Diese ist auch an dem Internet angeschlossen und ist für meine WG-Mitbewohner da. An dieser Fritzbox ist ein Router (Asus Router) von mir angeschlossen. Dieser hat ein eigenes Netzwerk über das meine Geräte verbunden ist. Somit kann ich bei mir im Netzwerk Sachen ausprobieren, ohne das ich das Netzwerk für die anderen beeinträchtige.
Ich habe nun an meinem Router einen kleinen Server dran hängen worauf Proxmox läuft. Da laufen zum Beispiel Dienste wie Pi-hole oder ein Nginx Proxy Manager drauf.

Nun möchte ich das ich den Proxy Manager aus dem Internet erreichen kann um auf meine Container zu verweisen. Dafür hab ich mir eine DynDNS erstellt und wollte diese mit dem Proxy Manager verbinden. Mein Hintergedanke war dabei das ich sagen kann, dass wenn ich zum Beispiel 'example.dyndns.net' aufrufe, dann werde ich auf den Container xy weitergeleitet der zum Beispiel eine Webseite hostet. Wenn ich jedoch 'vpn.example.dyndns.net' aufrufe, dann komm ich auf den Container um eine Wireguard Verbindung aufzubauen in das Netzwerk. So zum Sagen das ich über meine Subdomains regeln kann welchen Dienst ich ansprechen möchte.
In der Zukunft hab ich geplant einmal eine Bitwarden Instanz und eventuell eine VPN Verbindung einzurichten um auch extern das komplette Netzwerk nutzen zu können. Die anderen Dienste reichen mir eigentlich wenn diese nur local erreichbar bleiben.

Testweise hab ich mal einen Container erstellt und nur einen Apache Webserver drauf laufen lassen. Hab dann im Asus Router im "Port Forwarding" Punkt die IP des Apache Containers eingetragen. Auch diesen kann ich von außen nicht erreichen. Intern im Netzwerk funktioniert dies jedoch.

Bei mir scheitert es aber bereits mit der DynDNS Verbindung. Ich kann zwar eine einrichten, die zum Beispiel auf dem Proxy Manager läuft, dann wird jedoch nur die IP von der Fritzbox übermittelt und danach bekomme ich kein routing zu mir auf den Server. Das selbe ist es wenn ich einen DynDNS Dienst direkt auf der Fritzbox verbinde. Da bekomme ich die selbe IP.

Aktuell hab ich meinen Router als "Exposed Host" in der Fritzbox markiert in der Hoffnung das dies was verändert. Ich habe auch in der Fritzbox für den Router "Selbstständige Portfreigaben" aktiviert, dass falls ich einen Port übersehen hätte, der Router noch ne Chance hat trotzdem den Port zu öffnen. Außerdem sind in der Fritzbox die Ports 80 und 443 für den Router geöffnet und im Router (Asus Router) hab ich ebenfalls die Ports 80 und 443 für den Proxy Manager geöffnet.

In Proxmox war im Bereich "Datacenter" die Firewall deaktiviert, die einzelne Instanz aktiviert und in den einzelnen Containern deaktiviert. Es hat aber nichts verändert wenn ich die Firewall für die komplette Instanz auch deaktiviert habe.

Hätte jemand eine Idee wie ich dies verwirklichen könnte.
 

Anhänge

  • Netzwerk.png
    Netzwerk.png
    540,5 KB · Aufrufe: 761
Ich bin bis jetzt noch nicht ganz so schlau draus geworden. Den Server hab ich über IPV4 erreichbar machen können und auch intern arbeite ich eigentlich überwiegend mit IPV4 Adressen.

Ich hab jetzt mal ein paar Tests gemacht die ihr ganz sinnvoll gehalten habt, da könnt ihr euch mal selber ein Bild davon machen. Aber das passt für mich nicht zusammen. Zumindest zeigt mir die Fritzbox tatsächlich an das ich einen DS-Lite Tunnel benutze.

Die IPs stimmen aber überein wenn ich diese mit der Fritzbox und einer Webseite vergleiche. Bei meinem DynDNS Anbieter hab ich aber eine IPV4 und IPV6 die synchronisiert wird.
 

Anhänge

  • Screenshot 2024-04-19 185116.png
    Screenshot 2024-04-19 185116.png
    135,5 KB · Aufrufe: 69
  • Screenshot 2024-04-19 185126.png
    Screenshot 2024-04-19 185126.png
    252,9 KB · Aufrufe: 73
  • Screenshot 2024-04-19 185635.png
    Screenshot 2024-04-19 185635.png
    326,2 KB · Aufrufe: 73
  • Screenshot 2024-04-19 185844.png
    Screenshot 2024-04-19 185844.png
    281,3 KB · Aufrufe: 80
  • Screenshot 2024-04-19 190256.png
    Screenshot 2024-04-19 190256.png
    351,7 KB · Aufrufe: 70
  • Screenshot 2024-04-19 190720.png
    Screenshot 2024-04-19 190720.png
    445,9 KB · Aufrufe: 70
Die 89.244.XXX.XXX ist halt deine CGN-IPv4-Adresse und nicht die eigentliche "wan"-seitige IPv4 der FB.

Bei IPv4 steht bei dir ja auch: "IPv4-Adresse im Internet: 89.244...."
im Gegensatz z.B. zu meinem Anschluss mit Dualstack: "IPv4-Adresse: XXX.XXX.XXX.XXX"

Und der PCP-Server ist auch angegeben, also hatte ich wohl recht. Das heißt für dich keine Portweiterleitung auf irgendwelchen Service-Standardports. Dein Provider hat dir die PCP Portrange von 1132-1151 zugewiesen, die du für IPv4 Portweiterleitungen verwenden könntest.

Wenn du also die Standardports 80/443 haben möchtest, bleibt nur Dual-Stack beantragen oder Server mieten.

Also ums nochmal klar zu machen. Aktuell kannst du
Code:
http://pi.domain.de:1132
https://pi.domain.de:1133
http://nginx-pm.domain.de:1132
https://nginx-pm.domain.de:1133
...
hinbasteln. Aber nicht
Code:
http://pi.domain.de
https://pi.domain.de
http://nginx-pm.domain.de
https://nginx-pm.domain.de
...
Zumindest was IPv4 betrifft.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Raijin
Mhh ja okay, kacke. Ich hab mich jetzt dazu entschieden einen Server außerhalb noch zu mieten und dann die Weiterleitungen so zu verwirklichen. Ich hab den von 1blau gefunden, da würde mich der kleinste Server 1€ pro Monat kosten.
Wenn ich das wirklich so außerhalb dann verwalte, wie konfiguriere ich das dann am besten? Mein CNAME Eintrag von der Domain zeigt auf den extern gehosteten Proxy Server und dieser verweist mich dann weiter auf meinen intern verwalteten Proxy oder? Bei der Weiterleitung auf den internen Proxy kann ich ja dann den Port noch mit angeben. Wie läuft das dann eigentlich mit den Zertifikaten ab? Muss ich diese dann auf dem externen hosten?

Würde gerne auf den Server Zuhause Bitwarden hosten. Wie muss ich dann meine Domain angeben? Muss ich dann einfach zum Beispiel "bitwarden.domain.de" angeben oder sollte ich dann "bitwarden.domain.de:Port (von Zuhause)" angeben? Wenn ich die Proxy zu der Domain von außen verwalte, bekommt dann die Bitwarden Instanz überhaupt noch die Domain zu sehen oder geht die bei den ganzen Proxys und Weiterleitungen auf den Weg "verloren"?
So gesehen würde ja dann die Domain einen CNAME Eintrag auf den extern gehosteten Proxy zeigen, dieser jedoch wiederum auf meine DynDNS zeigt und diese dann auf meine aktuelle IP. Mit den Ports schauts ja so ähnlich aus. Dort würde ich ja dann die Standard Ports aufrufen, der dann beim externen Proxy abgeändert wird auf meinen speziellen Port vom Anbieter der danach dann intern nach meiner Fritzbox wieder auf die Standard Ports zeigt von meinem Container.
 
Alex_Kl schrieb:
Mein CNAME Eintrag von der Domain zeigt auf den extern gehosteten Proxy Server und dieser verweist mich dann weiter auf meinen intern verwalteten Proxy oder?
Würde ich nicht machen. Einfach den Reverse Proxy auf dem Mietserver installieren und auf deine 'CGNAT-IPv4 : PCP-Portnummer' zeigen lassen. Also kein Doppel-Reverse-Proxy. Darfst dann nur nicht die SSL-Verschlüsselung zwischen Reverse-Proxy und deinem Webserver zuhause vergessen. Für die SSL-Verschlüsselung zwischen Reverse-Proxy und Server zuhause könntest du auch feste self-signed Zertifikate verwenden (ohne letsencrypt, das brauchst du dann nur auf dem Mietserver, um nach außen hin korrekte und validierte Zertifikate zu haben) und den Zugriff per Firewall auf den Mietserver eingrenzen (sprich nur der Mietserver mit dem Reverse-Proxy kann von außen auf deinen Webserver zu hause zugreifen). Dann sollte das ausreichend abgesichert sein.

Alternative: Dauerhaften VPN zwischen dem Mietserver und deiner FB laufen lassen. Dann musst du nur dran denken, den VPN-Server mit den PCP-Ports zu öffnen (und nicht irgendwelche Standardports) oder du legst den VPN-Server gleich auf den Mietserver (FB ist dann VPN-Client - falls das geht), dann musst du gar keine Ports öffnen.

Edit zur Alternative: Oder du legst den VPN-Endpunkt gleich auf deinen Server zuhause und nicht auf die FB.
 
Zuletzt bearbeitet:
Bruh, so wie ich das raus lese, ist glaub ich die SSL-Verschlüsselung zwischen Reverse-Proxy und meinem Webserver zuhause die beste Methode. An welcher Stelle benötige ich dann alles für welche Verbindung ein SSL-Zertifikat und wie installiere ich das am besten. Bei Webservern kenn ich halt die Methode mit let's encrypted, aber soweit ich das weiß kann ich mit denen keine Verbindung untereinander absichern.

...und den Zugriff per Firewall auf den Mietserver eingrenzen (sprich nur der Mietserver mit dem Reverse-Proxy kann von außen auf deinen Webserver zu hause zugreifen). Dann sollte das ausreichend abgesichert sein.
Wie mach ich das denn am besten?
 
Alex_Kl schrieb:
An welcher Stelle benötige ich dann alles für welche Verbindung ein SSL-Zertifikat und wie installiere ich das am besten.
Webserver zu hause:
- normales selfsigned Zertifikat erstellen und im SSL-Vhost hinterlegen

Mietserver mit Reverse Proxy:
  • letsencrypt-client für deine nach außen hin erreichbaren FQDNs. Die werden im Reverse Proxy vhost hinterlegt.
  • für die Verbindung zum Server zuhause wird es erforderlich sein, dass der Reverse Proxy Zertifikatsfehlermeldungen ignoriert bzw. keine Validierung macht. Oder das Self-Signed-Cert vom Webserver zuhause muss als Root-CA auf den Mietserver hinterlegt werden. Beides sollte gehen (je nachdem welche Software du einsetzen willst)
Alex_Kl schrieb:
Wie mach ich das denn am besten?
Da die FB keine konfigurierbare FW hat, würde ich auf dem Webserver zuhause 'ufw' o.Ä. verwenden. Da kannste dann alles eingrenzen. Oder du schleifst die Verbindung noch durch eine Firewall-VM durch, aber nur dafür wär das denke ich Overkill.

Edit: Es gäbe da noch eine Variante, die recht elegant klingt. Per 'socat' die entsprechenden Weiterleitungen auf dem Mietserver hinterlegen. Dann kannst praktisch das so machen, wie du das eh vorhattest (alles läuft bei dir vor Ort, inkl. Reverse Proxy), nur dass du zuhause halt mit den PCP-Ports arbeiten musst. Und auf dem Mietserver werden nur die Standardports (80/443) auf die PCP-Ports deiner CGNAT-IPv4 umgeleitet. Thread gabs vor kurzem auch einen hier, kenne diese Methode allerdings nicht selber und sie benötigt ebenfalls zusätzlich eine Transport-Verschlüsselung.
 
Zuletzt bearbeitet:
Wenn ich den Thread nochmal Revue passieren lasse, hat es doch mit den PCP-Ports grundsätzlich funktioniert, oder? Du musstest dann zwar im Browser ddns.domain:port im Browser eingeben, aber sonst hat's geklappt? Ist es denn wirklich so umständlich, diesen Port noch mit einzugeben? Und wie ist es, wenn du ganz einfach Bookmarks erstellst?

Klar, ist es hübscher, bequemer, cooler, wenn's der Reverse Proxy macht, aber wenn die örtlichen Gegebenheiten das einfach nicht hergeben, ist es fraglich wie viel Energie man da reinstecken sollte für das bischen Bequemlichkeit. Bookmark mit Port und los geht's.

Für Let's Encrypt sind Port 80/443 auch nicht zwingend erforderlich, das gilt nur bei Verwendung der Http-Challenge. Die DNS-Challenge benötigt lediglich API-Zugriff auf den Domain-Hoster bzw. dessen DNS. Mein Hoster für meine private Domain bietet das leider nicht an, aber ich hab mir kurzerhand eine DDNS bei duckdns angelegt, dort den API-Key rauskopiert und jetzt zieht sich NGINX die Zertifikate per DNS-Challenge, ganz ohne dass ich nach außen hin Port 80/443 exposen muss (ich nutze NGINX auch nur für meine rein lokalen Server).
 
  • Gefällt mir
Reaktionen: qiller
Wenn ich den Thread nochmal Revue passieren lasse, hat es doch mit den PCP-Ports grundsätzlich funktioniert, oder? Du musstest dann zwar im Browser ddns.domain:port im Browser eingeben, aber sonst hat's geklappt? Ist es denn wirklich so umständlich, diesen Port noch mit einzugeben? Und wie ist es, wenn du ganz einfach Bookmarks erstellst?
Wäre das den nicht komplizierter mit den Lokalen gegebenen Einschränkungen zu arbeiten? Mit den Bookmarks hätte ich jetzt kein Problem zum arbeiten. Meistens hat man bei den Diensten eh das nur einmal eingerichtet und dann muss man da nichts mehr verändern.

Beim Provider anfragen muss ich mal schauen über wen der Vertrag läuft. Denke aber das dies keine Option sein wird wenn das dann mehr kostet im Monat.
 
Alex_Kl schrieb:
Wäre das den nicht komplizierter mit den Lokalen gegebenen Einschränkungen zu arbeiten?
Welche Einschränkungen? Abgesehen davon, dass man blabla.ddns:1131 eingibt (oder es bookmarkt), ist das nicht wirklich eine Einschränkung.

Alex_Kl schrieb:
Beim Provider anfragen muss ich mal schauen über wen der Vertrag läuft. Denke aber das dies keine Option sein wird wenn das dann mehr kostet im Monat.
Wenn du damit die DNS-Challenge von Let's Encrypt meinst, die geht wie beschrieben auch mit duckdns, also 4free. Ist dann zwar ne andere Domain, aber ob nu pihole.alex.ki oder pihole.alexki.duckdns.org, spielt am Ende ja keine große Rolle. Den Port musst du wie gesagt dann mit angeben bzw. bookmarken und dein NGINX läuft eben hinter einer Portweiterleitung 1131/1132 extern --> 80/443 intern wie es jetzt ja schon ist und funktioniert so wie ich es verstanden habe.

pihole.alexki.duckdns.org:1131 ginge dann zu deinem NGINX, der guckt in seinen Settings nach pihole.alex... und reicht zum pihole-Server durch. Das (wildcard) SSL-Zertifikat wird direkt zwischen LE und duckdns validiert.
Ergänzung ()

qiller schrieb:
Ich hätt auch vorher erstmal beim Provider angefragt.
Klar, das wäre natürlich noch einfacher. Eigene public IPv4 und los geht's.
 
  • Gefällt mir
Reaktionen: qiller
Zurück
Oben