Portweiterleitung Fritzbox?
Ich hab hier nen Raspberry PI, der ne Website + Api hosten soll.
In der Fritzbox existert folgende Portweiterleitung:
Via http://192.168.178.51:63291/swagger/index.html kann ich von anderen PCs im Netzwerk drauf zugreifen. Jetzt soll das ganze noch von außen gehen.
Dafür gibts in der Fritzbox eine Domain, die auf die dynamische IP "zeigt": xxx.my-router.de
Über xxx.my-router.de:63291/swagger/index.html komm ich aber nicht auf die Seite, sondern erhalte den Fehler ERR_CONNECTION_REFUSED
Woran könnte das liegen?
Was passiert, wenn du mit der Maus über das Ausrufezeichen in der FritzBox gehst? Das wird doch nen Grund haben, dass das da steht
Ja, Port 80 war nicht mehr frei ;) hab jetzt beide (IPv4 und IPv6) einfach auf 63291 gestellt
2 Antworten
Bei welchem Internetprovider bist Du Kunde? Möglicherweise hast Du einen DS-Lite-Anschluss. Welche öffentliche IP-Adresse hast Du? Liegt sie im Bereich 100.64.0.0 - 100.127.255.254?
Zudem gibt mir das Warndreieck neben dem externen Port zu denken. Hast Du mal einen anderen Port ausprobiert?
Ich erhalte hier eine Umleitung auf Port 5000:
curl -v 89.247.41.174
* Trying 89.247.41.174:80...
* TCP_NODELAY set
* Connected to 89.247.41.174 (89.247.41.174) port 80 (#0)
> GET / HTTP/1.1
> Host: 89.247.41.174
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 302 Moved Temporarily
< Server: nginx
< Date: Wed, 27 Oct 2021 21:45:34 GMT
< Content-Type: text/html
< Content-Length: 138
< Connection: keep-alive
< Keep-Alive: timeout=20
< Location: http://89.247.41.174:5000/
<
<html>
<head><title>302 Found</title></head>
<body>
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
Dein Provider ist Versatel. Ich glaube, Versatel macht auch DS-Lite. Deshalb wird das mit IPv4 nichts. Probiere die Portweiterleitung mal mit IPv6 aus.
Hier hat so einiges nicht funktioniert :D
Also der ursprüngliche Fehler war, dass der Port fälschlicherweise auf 80 weitergeleitet wurde, nginx aber 63291 erwartet hat.
Man kann jetzt auch jeden fall drauf, und die API verwenden. Gerade wurde ich da immer noch auf 5001 weitergeleitet und da liegt unser NAS...
Lag an der Verwendung von https://docs.microsoft.com/de-de/aspnet/core/security/enforcing-ssl?view=aspnetcore-5.0&tabs=visual-studio#usehttpsredirection warum auch immer...
Andere Sache: Hast du ne Idee warum das Zertifikat laut Browser ungültig ist?
Derzeit ist die Adresse nicht erreichbar, wahrscheinlich hat sich Deine IP-Adresse geändert. Wurde das Zertifikat auf die IP-Adresse ausgestellt bzw. steht die IP-Adresse als SAN (sowohl als IP- als auch DNS-Eintrag) im Zertifikat? Der aufgerufene Name muss mit einem Namen im Zertifikat übereinstimmen.
Also das Zertifikat hab ich auf xxx.my-router.de ausstellen lassen, weil sich ja meine IP eben täglich ändert.
Geht das also nicht?
Nein. So funktioniert das nicht. Stelle Dir vor, ich spreche Dich mit codinghelp an und verlange von Dir einen Ausweis. Nun legst Du mir Deinen Ausweis vor, in dem Dein realer Name steht. Wie soll ich das prüfen? Genau so ist es hier. Du rufst die IP-Adresse auf, der Server meldet sich mit xxx.my-router.de. Das kann nicht funktionieren.
Ich habe das so gelöst: Ich habe ein Konto bei einem DynDNS-Provider. Demzufolge habe ich dort auch einen Namen, z. B. fh.example.com. Bei einem Provider meiner Wahl habe ich eine Domain registriert, fh.test. In den DNS-Einstellungen bei meiner Domain habe ich nun einen Alias-Namen eingetragen. Offiziell nennt sich das CNAME. Im DNS steht also: cloud.fh.test -> CNAME fh.example.com
Das Zertifikat für meinen Server habe ich auf cloud.fh.test ausgestellt. Wenn nun jemand cloud.fh.test aufruft, macht der Browser eine DNS-Anfrage. Er erfährt, dass cloud.fh.test identisch ist mit fh.example.com. Also fragt er nach fh.example.com und erfährt meine gerade aktuelle IP-Adresse.
Weil der Browser cloud.fh.test aufgerufen hat, passt das Zertifikat.
Ich hab jetzt noch ein bisschen rumprobiert und folgendes festgestellt:
Wenn ich aus dem internen Netz auf die Seite gehe, wird mir das Zertifikat als ungültig markiert, via mobile Daten vom Handy aus passt es.
https://89.247.40.91/swagger/index.html
Für dich sollte es also auch keine Probleme geben, oder?
Ein weiterer Nebeneffekt: Von extern funktioniert ebenfalls https://xxx.my-router.de/swagger/index.html, aus dem internen Netz kommt eine Fritzboxmeldung, dass die angegebene URL nicht gefunden wurde... Schon komisch das ganze.
Meinst du, da ist was in der Fritzbox falsch eingestellt?
Wenn ich aus dem internen Netz auf die Seite gehe, wird mir das Zertifikat als ungültig markiert, via mobile Daten vom Handy aus passt es.
Wenn Du einmal auf "Weiter" klickst, speichert der Browser eine Ausnahme. Beim nächsten Aufruf gibt es keine Meldung mehr. In der Adresszeile sieht man aber eine Anmerkung dazu, je nach Browser mehr oder minder gut sichtbar.
Für dich sollte es also auch keine Probleme geben, oder?
Doch:
Chrome:
Dieser Server konnte nicht beweisen, dass er 89.247.40.91 ist. Sein Sicherheitszertifikat stammt von xxx.my-router.de. Mögliche Gründe sind eine fehlerhafte Konfiguration oder ein Angreifer, der Ihre Verbindung abfängt.
Firefox:
Websites bestätigen ihre Identität mittels Zertifikaten. Firefox vertraut dieser Website nicht, weil das von der Website verwendete Zertifikat nicht für 89.247.40.91 gilt. Das Zertifikat ist nur gültig für mic71.my-router.de.
Fehlercode: SSL_ERROR_BAD_CERT_DOMAIN
Meinst du, da ist was in der Fritzbox falsch eingestellt?
Das könnte am Rebind-Schutz liegen. Die Funktion findest Du auf der Fritzbox unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> weitere Einstellungen (ganz unten). Dort trägst Du xxx.my-router.de ein. Dann müsste es funktionieren.
Komisch... Hier hast du mal 2 Screenshots. Einmal mit Wlan und einmal mit mobilen Daten. Da wird nämlich am Handy das Zertifikat akzeptiert :O
Und die Rebind Einstellung hat leider nicht geholfen. Und danke für deine Hilfe :)
Aber wenns jetzt nicht klappt ists auch nicht so schlimm, die API kann ich auch ohne gültiges Zertifikat verwenden ^^
Edit: Es liegt offenbar daran, dass es einen unterschied macht, ob man direkt auf die IP geht oder via dynds domain drauf zugreift...
Also existiert eigentlich nur noch das Problem, dass es intern nicht darüber klappt
Zunächst einmal: Wenn ich den Server per IP-Adresse aufrufe, bekomme ich die beschriebenen Fehlermeldungen. Wenn ich ihn per Name aufrufe, ist alles in Ordnung.
Bei Deinem ersten Screenshot (8bZq20s) moniert der Browser, dass der Zertifizierungsstelle nicht vertraut wird. Das ist eigenartig, weil es ja über eine andere Internetverbindung beim selben Gerät mit demselben Browser kein Problem gibt. Das kann ich so auf die Entfernung nicht erklären. Was erzählt der Browser denn, wenn Du auf "Weitere Informationen" klickst?
Bei weiten Information komm ich auf so ne generelle Info Seite - nicht hilfreich.
Wenn ich erweitert ausklappe:
Und dann werde ich auf diese Seite weitergeleitet:
nicht hilfreich.
In der Tat. Vielleicht kannst Du das mal mit einem "richtigen" Rechner machen. Die Browser von Desktop-Systemen sind da mitunter etwas deutlicher. Am besten gefallen mir bei solchen Dingen die Fehlermeldungen von Firefox.
Die 3 Screenshots waren vom Dekstop, der ist ja im Netz :D
Ich hab hier grad kein Firefox, aber kann ich mal kurz installieren
Siehe da - andere Meldung https://ibb.co/NK1RM5S
Dem Zertifikat wird nicht vertraut, weil es vom Aussteller selbst signiert wurde.
HTTP Strict Transport Security: false
HTTP Public Key Pinning: false
Jetzt müsste man sich das Zertifikat anschauen. Wenn es selbstsigniert ist, riecht das nach Fritzbox. Dafür spricht ja auch, dass Du im nächsten Schritt auf die Fritzbox geleitet wirst. Das bedeutet, dass Du im Heimnetz das Problem hast, dass der Weg von innen nach außen und wieder rein auf Deinen Server nicht funktioniert.
Hast du eine Idee was man da machen kann?
Im Moment noch nicht. Wie gesagt, hätte ich den Rebind-Schutz der Fritzbox vermutet. Aber zunächst musst Du ja mal verifizieren, ob sich da wirklich die Fritzbox meldet - also mal in das Zertifikat schauen.
Dafür gibts in der Fritzbox eine Domain, die auf die dynamische IP "zeigt": xxx. my-router.de
Das ist keine Fritz!Box-Adresse bzw. eine, die von AVM für die Fritzboxen bereit gestellt wird.
Im Prinzip noch schlimmer: Die Domain my-router.de hat gar keinen DNS-Eintrag und kann somit gar nicht funktionieren.
Aber es funktioniert auch nicht, wenn ich einfach unsere IP eintrag, also z.B. http://89.247.41.174:63291/swagger/index.html ;)
Dann hast Du den Port 63291 nicht auf den Raspi weiter geleitet.
Aber es ist doch so in der Fritzbox eingestellt? :O
Dann gibt es noch die Möglichkeit, dass Du einen Webserver so konfiguriert hast, dass er nur Verbindungen aus dem eigenen Netzwerkes akzeptiert.
Auf der FB ist der EXTERNE Port eingestellt. Da es ne HTTP Weiterleitung ist geht er aufm Pi wohl auf Port 80. Verwende mal nicht HTTP sondern "sonstiges" oder so, dann kannst du externen und internen port glaube ich separat einstellen
Du Genie, danke!
Lag tatsächlich daran, dass er die 63291 auf 80 weitergeleitet hat... Weil ich ursprünglich Port 80 wollte...
Auf der FB ist der EXTERNE Port eingestellt. Da es ne HTTP Weiterleitung ist geht er aufm Pi wohl auf Port 80.
Grundsätzlich korrekte und gute Idee.
Aber schau Dir mal den Port der LAN-Adresse an.
Wenn codinghelp bei den Angaben nicht "geschlampt" hat, kann es Deine Vermutung streng genommen nicht sein.... es sei denn der Router leitet intern auf 80 um.... 🤔
1&1, IP: 89.247.41.174
Das Ausrufezeichen war nur, weil Port 80 schon belegt ist. Hab jetzt beide auf 63291 gelegt