Hallo zusammen,
eigentlich war ich am Verzweifeln und habe daher diesen Beitrag begonnen. Während dem Schreiben habe noch einiges ausprobiert. Manches hat funktioniert, anderes nicht. Die erzielten Ergebnisse auf meinem Weg habe ich aufgeführt. Also ein klarer Fall von Learning-by-doing oder hier eher Learning-by-writing . Damit also eine Art Mini-Tutorial.
Vielleicht hilft das ja dem einen oder anderen.
Es ist noch eine Frage offen geblieben (Frage 8). Wenn die mir jemand beantworten könnte, wäre das toll.
Im Folgenden habe ich die Domains und E-Mail-Adressen verändert. Sie entsprechen also nicht 1:1 meinen Einstellungen.
Aktuelle Situation:
- Docker läuft ohne Probleme
- Macvlan läuft ohne Probleme (Zugriff auf nginx Adminoberfläche unter eigener IP-Adresse Port 81 klappt)
- Bei meinem Provider (UDMEDIA) habe ich in den DNS-Einstellungen eine Domain own.beispiel.de erstellt. Diese ist als DynDNS konfiguriert und wird von meiner Fritzbox mit der jeweils aktuellen IP-Adresse versorgt.
- Fritzbox ist direkt über own.beispiel.de:<port> erreichbar -> DynDNS funktioniert (bietet mein Provider innerhalb der DNS Konfiguration an, A- und AAAA-Typen)
- nginx Defaultseite erscheint bei Zugriff auf own.beispiel.de -> Portweiterleitung funktioniert (Ich habe nur die Ports 80 und 443 weitergeleitet)
- Erstellung eines SSL-Zertifkats für die domains own.beispiel.de und *.own.beispiel.de hat geklappt (siehe auch meinen Tipp ganz am Ende des Beitrags)
- Irgendwelche Subdomains unter own.beispiel.de gibt es aktuell nicht (auch kein *.own.beispiel.de)
Soweit ich das sehe, sind alle Voraussetzungen erfüllt.
Was möchte ich erreichen (ob sinnvoll oder nicht, sei hier mal dahingestellt, ist erst einmal eine Testkonfiguration, damit ich zukünftig weiß, was ich machen muss):
- Die domain fritzbox.own.beispiel.de soll auf die interne IP-Adresse der Fritzbox (192.168.x.y) umgeleitet werden
- Am liebsten hätte ich die Verbindung mit HTTPS (also Nutzung des bereits erstellten Letsencrypt Zertifikats)
Hintergrund: Ich weiß, die Fritzbox so erreichbar zu machen ist eigentlich idiotisch und sollte eigentlich besser direkt über den nicht allgemein bekannten Port erfolgen.
Das ist jetzt für mich auch eher eine Beispielkonfiguration um zu lernen wie ich Subdomains sinnvoll weiterleite.
Ich liste hier mal ein paar Teilziele/Fragen auf (auch für mich als Gedankenstütze):
- Kann nginx die Subdomains direkt verarbeiten?
- Falls 1=ja, muss dann ein Eintrag in der DNS Konfiguration für *.own.beispiel.de erfolgen, damit Subdomains "weitergeleitet" werden?
- Falls 2=ja, welcher Typ muss dieser Eintrag sein? A- bzw- AAAA-Typ geht leider nicht, da die IP-Adresse ja dynamisch ist. Geht dann ein CNAME-Typ?
- Falls 1=nein, muss dann die DNS Konfiguration angepasst werden? Falls ja, muss dann für jede einzelne Subdomain ein Eintrag angelegt werden? Welcher Typ muss dann der Eintrag sein (siehe Frage 3)
- Ist ein Proxyhost (Weboberfläche) dann die richtige Wahl?
Stimmen grundsätzlich folgende Einstellungen? (SSL könnte man für den ersten Schritt/Test auch weglassen)
- Nach dem Speichern zeigt die Übersicht "Proxy Hosts" die eingestellten Werte und den Status "(grün) Online" an. Damit scheint die Konfiguration grundsätzlich nicht ganz verkehrt zu sein, oder?
- Grundsätzliche Frage: Die Einstellungen basieren alle auf IPv4. Was passiert, wenn aus dem Internet jemand mit IPv6 zugreift (geht das überhaupt)? Muss ich IPv6 irgendwo blocken?
- Werden Änderungen auf der Admin-Weboberfläche von nginx direkt aktiv, oder muss man den jeweiligen Host disable/enable oder nginx neu starten?
Ergebnisse/Versuche bisher:
- Direkter Zugriff mit dieser Konfiguration mit oder ohne SSL hat erst einmal nicht funktioniert.
- Anlegen eines DNS-Eintrags *.own.beispiel.de des Typs A bzw. AAAA erfordert eine feste IP-Adresse, was mit dynamischer IP natürlich nicht funktioniert.
- Anlegen eines DNS-Eintrags *.own.beispiel.de des Typs CNAME ist erfolgreich. Er zeigt auf own.beispiel.de. Bis die Änderungen aktiv werden und verteilt sind, kann es etwas dauern, also Geduld
- Zugriff auf die Fritzbox (ohne Zertifikat) hat geklappt. Fehlermeldung: Rebind-Schutz
- fritzbox.own.beispiel.de in der Fritzbox unter Heimnetz->Netzwerk->Netzwerkeinstellungen->DNS-Rebind-Schutz eingetragen. Verbindung funktioniert, ich bin bei der Passwort-Eingabe. Habe den Eintrag dann wieder aus Sicherheitsgründen gelöscht. Mir ging es ja darum, auf die Fritzbox zu kommen. Und wenn die Fehlermeldung kommt, bin ich auf der Fritzbox
.
- own.beispiel.de oder *.beispiel.de funktioniert nicht als Eintrag bei DNS-Rebind-Schutz in der Fritzbox, d.h. es kommt die Fehlermeldung: Rebind-Schutz
- Ohne SSL hat die Verbindung geklappt. Die grundsätzlichen Einstellungen in 6. stimmen also.
- Mit SSL (wie im Screenshot bei Punkt 6) hat die Verbindung geklappt.
- Meine Schlussfolgerung daraus: Ich habe eine SSL-Verbindung zum Client im Internet und kann in meinem Netzwerk treiben, was ich will (auch auf eine nicht SSL Verbindung umleiten)
- Getestet, ob Änderungen am Host gleich aktiv werden -> Ja, werden sie.
Gefundene Antworten:
- Zu Frage 1: JA
- Zu Frage 2: JA
- Zu Frage 3: Typ CNAME, muss dann auf die DynDNS Domain zeigen; ACHTUNG: Bis die DNS-Einstellungen beim Provider aktiv werden kann es etwas dauern.
- Zu Frage 4: nicht zutreffend (NEIN, NEIN, Typ CNAME)
- Zu Frage 5: Sieht so aus als ob es die richtige Wahl war
- Zu Frage 6: Die Einstellungen sind richtig und funktionieren mit und ohne SSL
- Zu Frage 7: Die Einstellungen sind richtig und funktionieren mit und ohne SSL
- Zu Frage 8:
- Zu Frage 9: Die Änderungen auf der Admin-Weboberfläche an den Proxy-Host werden mit dem Speichern übernommen und sind sofort aktiv
Noch ein Tipp zur Zertifikatserstellung mit Letsencrypt:
- Mein Provider UDMEDIA erscheint leider nicht in der Liste der DNS-Provider. Die DNS API von UDMEDIA ist allerdings kompatibel zur PowerDNS HTTP API.
- Informationen zur DNS API sind in der FAQ (siehe hier). Die API-URL lautet: https://login.udmedia.de/dns/ (UDMEDIA bezeichnet das als Base Url). Mit Anlage eines Benutzer mit Zugriff auf die DNS API bekommt man einen API-Key.
- Bei mir hatte folgende Einstellung als Ergebnis ein funktionierendes Zertifikat:
- Wenn also Euer Provider nicht in der Liste steht, sucht nach einer Information in der FAQ oder Hilfe wegen Kompatibilität zu einer anderen API. Eventuell könnt Ihr dann trotzdem mit diesem Provider ein Zertifikat erstellen.