Fritz.Box, DynDNS, Reverse Proxy, CNAME-Records

hubort

Member
Moin,

ich versuche meinen Heimserver mit mehreren Diensten von außen erreichbar zu machen.
Bisher hatte ich lediglich einen Service der von außen über DynDNS und eine Domain erreichbar gemacht wurde, das lief reibungslos.

Nun habe ich einen Knoten im Kopf, da ich eine Reverse Proxy (Træfik) habe über die alles laufen soll.

Ich habe eine Domain (meinedomain.de) bei Strato, mit mehreren Subdomains, z. B. traefik.meinedomain.de, wetter.meinedomain.de etc.
Da ich keine statische IP habe, muss ich mein Netzwerk über DynDNS von außen erreichbar machen: In meiner Fritz.Box sind die Zugangsdaten ja noch aus der Zeit hinterlegt, als ich meinen einzelnen Service lediglich über meinedomain.de abgerufen habe.

Jetzt fängt's schon an: Ich möchte ja, dass alle Anfragen über die Reverse Proxy gehen. Trage ich nun unter Domainname die Subdomain auf der Træfik zuhört, also traefik.meinedomain.de ein oder belasse ich es bei meinedomain.de?

Durch etwas Recherche habe ich rausgefunden, dass CNAME-Records wohl dazu da sind, die anderen Subdomains, wie z. B. wetter.meinedomain.de, auf mein Netzwerk zeigen zu lassen. Was gebe ich aber nun im CNAME-Record ein? traefik.meinedomain.de. bzw. meinedomain.de. ?

Danke im voraus.
 
Im Grunde und kurz: ja.

Der A-Record sollte auf den Traefik zeigen, und die publizierten Dienste würde ich als CNAME-Record anlegen.
Dabei referenzieren die CNAME-Record den einen zuständigen A-Record; sprich sie würden auf traefik.meinedomain.de "zeigen".
Der Vorteil bei der "Traefik-Lösung" ist, dass Du, falls Du Deine Dienste auch über IPv6 anbieten möchtest, auch der AAAA-Record vermutlich nur auf den Traefik-ReverseProxy zeigen müsste. Lediglich das IPv6-DynDNS müsste ebenfalls auf dem Traefik dann laufen, weil das geht bei IPv6 nicht (gut) über den Router.
 
Dann habe ich es richtig verstanden, habe dann aber einen Fehler im System.

Wenn ich einen A-Record für meine Træfik-Subdomain anlege, der auf meine (nicht-statische) IP zeigt, komme ich auch über traefik.meinedomain.de auf das Dashboard. Jetzt habe ich in Strato DynDNS aktiviert und in meiner Fritzbox die Træfik-Subdomain als Domainname hinterlegt, aber ich bekomme im Browser lediglich einen SSL_ERROR_NO_CYPHER_OVERLAP.
 
Was ist "das Dashboard"? Meinst Du die Oberfläche von Traefik? Oder was verbirgt sich hinter "das Dashboard"?
Und was meinst Du mit: "in der FritzBox habe ich die Traefik-Subdomain als Domainname hinterlegt"?

Nach meinem Verständnis sollte der ReverseProxy am http(s)-Aufruf erkennen, was Sache ist.
Also A-Record "traefik.meinedomain.de" zeigt auf Deine dynamische IP und der Port 443 wird intern zum Traefik weitergeleitet.
"wetter.meinedomain.de" zeigt einfach per CNAME auf den A-Record.

Rufst Du nun "wetter.meinedomain.de" auf, so löst der PC den CNAME in den A-Record und letztlich in die IP auf. Die Anfrage landet also beim Traefik. Der sollte am HTTP-GET erkennen, dass "wetter" gemeint ist und sollte intern dann - dafür hat man einen ReverseProxy - es an den Pod weiterleiten, der den Service "wetter" anbietet.
 
Ja, ich meine damit die Oberfläche von Træfik, das sogenannte Dashboard.

In den DynDNS-Einstellungen der FritzBox (siehe Beispielbild) habe ich als Update-URL die von meinem DynDNS-Anbieter hinterlegt und als Domainname traefik.meinedomain.de angegeben.

https://www.randombrick.de/wp-content/uploads/2021/05/DynDNS-an-der-FritzBox-aktivieren.jpg

Nach meinem Verständnis sollte der ReverseProxy am http(s)-Aufruf erkennen, was Sache ist.
Also A-Record "traefik.meinedomain.de" zeigt auf Deine dynamische IP und der Port 443 wird intern zum Traefik weitergeleitet.
"wetter.meinedomain.de" zeigt einfach per CNAME auf den A-Record.

Rufst Du nun "wetter.meinedomain.de" auf, so löst der PC den CNAME in den A-Record und letztlich in die IP auf. Die Anfrage landet also beim Traefik. Der sollte am HTTP-GET erkennen, dass "wetter" gemeint ist und sollte intern dann - dafür hat man einen ReverseProxy - es an den Pod weiterleiten, der den Service "wetter" anbietet.
So habe ich das auch verstanden.
 
Okay, das sieht grundsätzlich gut aus. Den "Rest" musst Du im Traefik steuern.

Dann Traefik muss natürlich wissen, wie es die verschiedenen Anfragen z.B. "api.meinedomain.de", "wetter.meinedomain.de" und "traefik.meinedomain.de" handhaben sollen.

Falls im Augenblick bei allen das Traefik-Dashboard kommt, ist das nur ein Zeichen dafür, dass es grundsätzlich funktioniert, nur es noch keine Regeln im Traefik gibt,
 
Das ist das Problem, bei Træfik kommt nichts an, sofern ich DynDNS benutze.

Trage ich als A-Record meine dynamische IP-Adresse ein, anstatt das über die DynDNS-Einstellung von Stato zu regeln, komme ich über traefik.meinesubdomain.de auch auf das Dashboard von Træfik. Wiederhole ich das Prozedere für jede Subdomain, leitet Træfik die Anfrage von wetter.meinedomain.de auch korrekt an den dort hinterlegten Dienst weiter.

Allerdings führt das natürlich dazu, dass ich die IP-Adresse neu hinterlegen müsste, sobald sie sich geändert hat. Deswegen möchte ich ja DynDNS benutzen. Aber da gibt's gerade ein Problem, das ich mir noch nicht erschließen kann.
 
Aber DynDNS macht nichts anderes außer Deine dynamisch IP automatisch in den A-Record einzutragen.
Die Frage wäre an dieser Stelle eher, was für ein Fehler tritt dort denn auf?
Du kennst Deine dynamische IP. Was trägt denn das DynDNS in den A-Record ein?!

Wenn Deine dynamische IP a.b.c.d heißt, dann muss natürlich auch das DynDNS a.b.c.d eintragen und nicht etwa a.b.c.e ... damit ginge es natürlich nicht.
 
Kapier ich grade nicht ganz, hab aber auch keine Lust jetzt alles zu lesen...

1) Wie @Barungar schon sagte: DynDNS muss passen (da führt bei einer dynamischen IP kein Weg dran vorbei)
2) DNS-Record -> Wildcard (*.domain.tld) als CNAME auf die DynDNS-Adresse (dann geht - egal was - direkt zur DynDNS-Adresse)
3) Via Traefik richtest Du Dir Subdomains ein wie Du magst (aber nur im Kontext von "domain.tld"!)

Hast Du mehrere Domains, welche Du via Traefik bedienen willst, bleibt das Szenario das gleiche (2+3)

Heisst erstmal:

Auf den "unteren" OSI-Schichten wird erstmal gesagt: Alles was irgendwie "domain.tld" angeht: Schick das zur hinterlegten IP im DynDNS. Auf den höheren OSI-Schichten werden dann die HTTP-Header ausgewertet (also das, was wirklich "angesprochen" wurde, z.B. "meinewebsite.domain.tld, deinewebsite.domain.tld, unserewebsite.domain.tld"), dafür ist dann aber erstmal Traefik zuständig (ggf. noch der nachgelagerte Webserver).

EDIT: Das ist, wie es funktioniert. Funktioniert es nicht, hat sich irgendwo ein Fehler eingeschlichten (z.B. DNS-Cache vom Router/Client). Überprüfen kannst Du das ganz einfach, indem Du vom Client aus ein "nslookup meinewebsite.domain.tld" ausführst. Kommt da etwas falsches bei raus, prüf das ganze nochmal via z.B. Google: "nslookup meinewebsite.domain.tld 8.8.8.8". Wenn DynDNS als CNAME im Spiel ist, sollte die Antwort ungefähr so aussehen:

nslookup meinewebsite.domain.tld
Server: UnKnown
Address: 192.168.x.x # <-- Dein genutzter DNS-Resolver

Nicht autorisierende Antwort:
Name: dyndns.domain.tld # <-- Deine DynDNS-Adresse
Address: x.x.x.x # <-- Deine öffentliche IP
Aliases: meinewebsite.domain.tld

EDIT2: Hab jetzt so salopp von Wildcard-Records gesprochen... kann man machen, alles andere was noch im öffentlichen DNS steht, wird auch bevorzugt behandelt - das verlagert halt das "sonstige" Subdomain-Management direkt auf den Reverse-Proxy - einzelne Records gehen aber natürlich auch noch! :)
 
Zuletzt bearbeitet:
2) DNS-Record -> Wildcard (*.domain.tld) als CNAME auf die DynDNS-Adresse (dann geht - egal was - direkt zur DynDNS-Adresse)
Strato akzeptiert kein Asterisk als CNAME.

Auf den "unteren" OSI-Schichten wird erstmal gesagt: Alles was irgendwie "domain.tld" angeht: Schick das zur hinterlegten IP im DynDNS. Auf den höheren OSI-Schichten werden dann die HTTP-Header ausgewertet (also das, was wirklich "angesprochen" wurde, z.B. "meinewebsite.domain.tld, deinewebsite.domain.tld, unserewebsite.domain.tld"), dafür ist dann aber erstmal Traefik zuständig (ggf. noch der nachgelagerte Webserver).
Das habe ich verstanden und wie gesagt, trage ich die dynamische IP einfach als A-Record ein, funktioniert das Ganze auch so wie ich mir das vorstelle, nur eben über DynDNS dann plötzlich nicht mehr.

Du kennst Deine dynamische IP. Was trägt denn das DynDNS in den A-Record ein?!
Lässt sich bei Strato so nicht nachvollziehen. Es steht lediglich „DynDNS aktiviert“ da.

Edit:
Habe nslookup mal mit meiner Domain ausgeführt und folgende Antwort bekommen:

# nslookup traefik.meinedomain.de

Server: pi.hole
Address: 192.168.x.x

Nicht autorisierende Antwort:
Name: meinedomain.de
Addresses: xxxx:xxx:xxx:xxx:xxxx::
xx.xxx.xxx.xx
Aliases: traefik.meinedomain.de
 
Zuletzt bearbeitet:
Hatte fälschlicherweise im ersten Beitrag angemerkt, dass mein Pihole dazwischen funkt. Das stimmte nicht, die Anfrage kommt ja vom Pihole, da das Gerät der Upstream DNS-Resolver ist.
 
Vielleicht nochmal auf den Punkt gebracht:

Bei Strato habe ich eine Subdomain proxy.meinedomain.de angelegt und für diese DynDNS aktiviert. Nun möchte ich von außen nicht nur auf das Træfik-Dashboard zugreifen können, sondern eben auch auf andere Dienste. Træfik ist so eingerichtet, dass Anfragen von dienst1.meinedomain.de auch an Dienst1 weitergeleitet werden.

Nun habe ich zu diesem Zweck die Subdomain dienst1.meinedomain.de angelegt und in dieser einen CNAME-Record proxy.meinedomain.de. (← sogar an den Punkt habe ich gedacht) angelegt.

Rufe ich aber proxy.meinedomain.de bzw. dienst1.meinedomain.de auf, erhalte ich einen SSL_ERROR_NO_CYPHER_OVERLAP.
Als Gegentest habe ich die DNS-Einstellungen zurückgesetzt und meine (dynamische) IP-Adresse als A-Record bei proxy.meinedomain.de hinterlegt und das funktioniert – bis natürlich meine IP-Adresse vom Provider neu vergeben wird.

Habt ihr eine Idee wo mein Denkfehler liegen könnte?
 
Zuletzt bearbeitet:
Wir drehen uns im Kreis.

Dadurch das Du hier nur mit fiktiven Angaben arbeitest kann man den Fehler nicht finden. Logisch und theoretisch ist alles korrekt.
Es muss also irgendwo etwas falsch laufen, aber das kann man nur am echten System prüfen.

Zum Beispiel dürfte "meine (dynamische) IP-Adresse" und "DynDNS" keinerlei Unterschied sein. Scheinbar gibt es dort aber einen praktischen Unterschied. Ich hatte oben schonmal gesagt: "Wenn Deine (dynamische) IP a.b.c.d ist, dann muss auch DynDNS a.b.c.d und a.b.c.e in den A-Record schreiben."

Der SSL-Fehler lässt aber darauf schließen, dass dort ein anderes System antwortet. Also machst Du oder ein Ablauf irgendeinen praktischen Fehler in der ansich theoretisch und logisch korrekten Prozesskette.
 
Hast Du es schon mal ohne SSL versucht mit so einer Subdomain und dem CNAME-Konstrukt?

Als Gegentest habe ich die DNS-Einstellungen zurückgesetzt
In der Zwischenzeit hast Du aber schon den DNS-Cache geleert bzw. via nslookup geprüft, ob da nun auch wirklich noch der CNAME zwischenhängt? (das müsste dann so aussehen, wie hier schon beschrieben)

EDIT:
Der SSL-Fehler lässt aber darauf schließen, dass dort ein anderes System antwortet.
Deswegen meinte ich auch, dass man das ggf. mal ohne SSL versucht, vielleicht offenbaren sich dann ja neue Kenntnisse (z.B. die Strato-Platzhalter-Website) 😄
 
Den SSL-Fehler habe ich zumindestens beseitigen können: Ich hatte im .env-File von einem Dienst einen falschen Trusted Proxy hinterlegt.
Wenn ich nun bei beiden Diensten (Proxy & Cloud) den A-Record direkt auf meine IP-Adresse 1.2.3.4 zeigen lassen, klappt es so wie geplant. Daher kam zumindestens der SSL-Fehler beim Gegentest.

Wir drehen uns im Kreis.
Deswegen bin ich ja hier, weil ich mich eine Woche lang ausschließlich im Kreis gedreht habe. Ich bin sehr dankbar für die Hilfe und Zeit die hier investiert wird, weil mir zum Einen euer Feedback hilft nochmal Stellen zu prüfen, die mir noch nicht angeschaut hatte bzw. mir Fehler in meinem Setup zu erkennen.

In der Zwischenzeit hast Du aber schon den DNS-Cache geleert bzw. via nslookup geprüft, ob da nun auch wirklich noch der CNAME zwischenhängt? (das müsste dann so aussehen, wie hier schon beschrieben)
Natürlich nicht 👼 Mache ich direkt mal.

Edit: Habe nun per nslookup folgenden Output bekommen:

nslookup proxy.meinedomain.de
Server: pi.hole
Address: 192.168.XXX.XX

Nicht autorisierende Antwort:
Name: proxy.meinedomain.de
Addresses: 2a01:238:20a:202:XXXX::
81.169.145.XX
Verstehe nicht ganz, was es mit den IP-Adressen auf sich hat, denn das sind nicht meine öffentlichen IP-Adressen?
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Ich hänge mich mal dran, da ich auch eine Domain bei Strato habe. Ich habe es so gelöst, dass meine Domain per DynDNS auf meine FritzBox zeigt. Meine Sub-Domains zeigen dann auf per CNAME Record auf meine Domain. Ich nutze dann den Nginx-Proxy-Manager um die verschiedenen Dienste erreichbar zu machen. Funktioniert bei mir. Aber ich denke du hast es in der Zwischenzeit ja auch lösen können ;)
 
Das ist genau das "gleiche" Konstrukt, nur das hier als Reverse Proxy Traefik zum Einsatz kommen soll.

Das Problem scheint aufzutreten, wenn das DynDNS aktiv wird. So wie die Schilderungen es (von außen) lesen lassen, ist das manuelle Setzen des A-Records auf die dynamische IP was anderes als wenn das DynDNS den A-Record setzt. Die CNAMEs sind dann natürlich "Folgefehler".
 
Kann es sein, dass Carrier-grade NAT aktiv ist und das ein Problem darstellt?
Ich wurde darüber in Kenntnis gesetzt, dass Telekom kein CGNAT nutze.
Routenverfolgung zu buchstabenundzahlensalat.dip0.t-ipconnect.de [79.XXX.XXX.XX]
über maximal 30 Hops:

1 <1 ms <1 ms <1 ms fritz.box [192.168.XXX.1]
2 1 ms <1 ms <1 ms buchstabenundzahlensalat.dip0.t-ipconnect.de [79.XXX.XXX.XX]

CNAME-Records funktionieren übrigens problemfrei, das Problem scheint wirklich nur bei der DynDNS-Einstellungen zu liegen. Sobald der A-Record händisch bei der auf Træfik zeigenden Domain gesetzt ist, funktioniert alles so wie es sollte.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.580
Beiträge
46.876
Mitglieder
4.219
Neuestes Mitglied
viruz
Zurück
Oben