NGINX (kein Docker) - mehrere Subdomains, davon eine ausschließlich lokal erreichbar machen. Wo ist mein Denkfehler?

  • Das habe ich ähnlich wie du (eben nochmal geprüft). Mein RPi fragt über ein Script und einen Cronjob regelmäßg bei meiner Fritzbox die aktuelle externe IP ab und setzt diese dann im CNAME-Record des Domain-Providers.

    Bei mir sind vorhanden:

    eine Domain (die Homepage meiner Frau) (domainname.de)

    eine Subdomain (für mich zum Enwickeln) (subdomain.domainname.de)

    (später sind noch weitere Subdomains geplant (keineAhnung.domainname.de)

    Die Freigaben in der Fritzbox sind ebenfalls genauso angelegt.

    Jetzt kommt das große ABER: So wie ich das sehe, "übersetzt" die FB die Anfragen von außen auf die IP des RPi (was ja grundsätzlich auch richtig ist). Allerdings läuft damit in der VHOST-Config sowohl der allowed from <localnet> als auch der deny all schief. Denn selbst Anfragen von außen werden ja spätestens ab der FB als interne Anfragen weitergegeben.

    Das heißt für mich, entweder habe ich in der Konfiguration der FB einen Fehler (welchen?) oder in der Konfiguration vom RPi (welchen?) Das ist der Punkt, der mich noch immer nicht weiter kommen lässt. Wo ist das mein Denkfehler?

    Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • NGINX (kein Docker) - mehrere Subdomains, davon eine ausschließlich lokal erreichbar machen. Wo ist mein Denkfehler?? Schau mal ob du hier fündig wirst!

  • eine Domain (die Homepage meiner Frau) (domainname.de)

    eine Subdomain (für mich zum Enwickeln) (subdomain.domainname.de)

    Die Freigaben in der Fritzbox sind ebenfalls genauso angelegt.

    Jetzt kommt das große ABER: So wie ich das sehe, "übersetzt" die FB die Anfragen von außen auf die IP des RPi (was ja grundsätzlich auch richtig ist). Allerdings läuft damit in der VHOST-Config sowohl der allowed from <localnet> als auch der deny all schief. Denn selbst Anfragen von außen werden ja spätestens ab der FB als interne Anfragen weitergegeben.

    Das heißt für mich, entweder habe ich in der Konfiguration der FB einen Fehler (welchen?)

    Welcher Port deines PI soll bei einer Anfrage von außen mit der domainname.de erreicht werden und welcher Port deines PIs soll bei eeiner Anfrage von außen, mit subdomain.domainname.de, erreicht werden?

    Ob und wie es am jeweiligen Port des PIs ankommt, kannst Du auf dem PI testen, mit:

    Code
    sudo tcpdump -c 5 -vvveni <Interface> dst port <Port_1> and 'tcp[13] & 2!=0'
    sudo tcpdump -c 6 -vvveni <Interface> dst port <Port_2> and 'tcp[13] & 2!=0'

    Dann weißt Du ob die FritzBox richtig konfiguriert ist.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

  • Welcher Port deines PI soll bei einer Anfrage von außen mit der domainname.de erreicht werden und welcher Port deines PIs soll bei eeiner Anfrage von außen, mit subdomain.domainname.de, erreicht werden?

    Ob und wie es am jeweiligen Port des PIs ankommt, kannst Du auf dem PI testen, mit:

    Code
    sudo tcpdump -c 5 -vvveni <Interface> dst port <Port_1> and 'tcp[13] & 2!=0'
    sudo tcpdump -c 6 -vvveni <Interface> dst port <Port_2> and 'tcp[13] & 2!=0'

    Dann weißt Du ob die FritzBox richtig konfiguriert ist.

    So wie es ausieht (zumindest nach meinem Verständnis), ist die Fritzbox richtig konfiguriert. Anfragen von außen an Port 80 kommen gar nicht mehr durch (was auch sinnvoll wäre, da ich sowohl beim Provider als auch auf dem RPi SSL (über LetsEncrypt-Zertfikate) aktiviert habe. Anfragen über Port 443 werden von einer externen IP-Adresse an die lokale IP-Adresse des RPi weitergeleitet. Eine Trennung nach Ports habe ich nicht eingerichtet, weil ich nicht Allein-Nutzer der Ports bin.

    Aber das ganze zeigt mir, dass mein Fehler wohl eher bei der Einrichtung der CNAME-Records liegt: Die verweisen nämlich alle auf <MeinDomainName>.de - und nicht, wie bei dir auf <MeinDomainName>.de, <Unter>.<MeinDomainName>.de und <Unter2>.<MeinDomainName>.de. Nur, bevor ich das ändere, muss ich einschätzen können, was ich dann noch ändern muss (ich denke da an die SSL-Zertifikate)?

    Sehe ich das richtig?

    Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Denn selbst Anfragen von außen werden ja spätestens ab der FB als interne Anfragen weitergegeben.


    Die Verbindung kommt mit der IP des Absender, nicht der Fritzbox.
    Schau mal in den Accesslog deines Webserver.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • Die Verbindung kommt mit der IP des Absender, nicht der Fritzbox.
    Schau mal in den Accesslog deines Webserver.

    Das stimmt - das hatte ich falsch gesehen.

    Aber das ganze zeigt mir, dass mein Fehler wohl eher bei der Einrichtung der CNAME-Records liegt: Die verweisen nämlich alle auf <MeinDomainName>.de - und nicht, wie bei dir auf <MeinDomainName>.de, <Unter>.<MeinDomainName>.de und <Unter2>.<MeinDomainName>.de. Nur, bevor ich das ändere, muss ich einschätzen können, was ich dann noch ändern muss (ich denke da an die SSL-Zertifikate)?

    Sehe ich das richtig?

    Gruss

    GUMeyer

    So, das habe ich jetzt auch nochmal geprüft und getestet:

    Nach einer Änderung im CNAME von <MeinDomainName>.de auf <Unter>.<MeinDomainName>.de ist nämlich <Unter>.<MeinDomainName>.de nicht mehr erreichbar. Und nun? So langsam habe ich den Eindruck, dass ich mich von der gesamten Idee verabschieden, und die eigentlich geplante interne Domain anders realisieren sollte. zumindest vorläufig.

    Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Du musst einen CNAME für jede subdomain.deinedomain.de erstellen.

    Nicht für die Domain, außer du willst deinedomain.de auch auf dem PI hosten.

    Ich hab das genau so hier am laufen.

    Meinedomain.de liegt bei Hosteurope.

    subdom1.meinedomain.de

    subdom2.meinedomain.de

    subdom3.meinedomain.de

    Auf dem Webserver zu Hause hinter der Dyndns Adresse.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • So, jetzt bin ich komplett verwirrt.

    <meinDomain>.de: Ich hab den Domainnamen gemietet, aber die Inhalte liegen auf meinem RPi. Das ist mein Verständnis. Und damit brauche ich doch auch einen CNAME auch für <meineDomain>.de? Oder nicht?

    Und ob ich für <subdom1>.<meineDomain>.de und die anderen aktuell vorhandenen <subdom2>.<meineDomain>.de und <subdom3>.<meineDomain>.de ebenfalls CNAME brauche, hab ich gestern getestet. Das passt dann nicht! Wenn ich für <subdom1>.<meineDomain>.de den CNAME so setze, wird die Seite nicht mehr gefunden. Nur wenn der CNAME für <subdom1>.<meineDomain>.de auf <meineDomain>.de verweist, wird die Seite gefunden (entspr. dann auch für die anderen beiden Subdomains).

    Ich glaub, ich lasse das mit der Trennung - das was ich da laufen lassen wollte, geht wahrscheinlich auch auf dem NAS (welches weder mit dem RPi noch mit dem WAN verbunden ist).

    Danke und Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Irgendwie verstehe ich nicht warum das nicht funktioniert bei Dir :conf:

    Bei mir zu Hause laeuft auch ein Server mit einer sub.domain.de. Ich habe einzig und alleine folgenden DNS EIntrag bei meinem Provider wo meine domain.de gehostet ist eingetragen:

    Die entsprechende Zeile in meinem DNS Zonefile:

    Code
    <sub>        IN    CNAME    <dyndnsdomainname>.

    Dann habe ich in meiner Fritte noch den Dyndnsservice konfiguriert dass er meine sich taeglich aendernde IP fuer dyndnsdomainname bei Dyndns ablegt und das war es.

    Nur wenn der CNAME für <subdom1>.<meineDomain>.de auf <meineDomain>.de verweist, wird die Seite gefunden (entspr. dann auch für die anderen beiden Subdomains).

    D.h. Du hast einen CNAME Eintrag fuer <meineDomain>.de der wiederum auf Deinen Dyndns zeigt? Fuer <meineDomain>.de brauchst Du keinen CNAME Eintrag. Da sind andere DNS und eMail Eintraege notwendig. Nimm stattdessen im CNAME Statement fuer <subdom1>.<meineDomain>.de Deine Dyndnsdomaine und dann sollte es funktionieren. Ansonsten verstehe ich die (DNS-)Welt nicht mehr :no_sad:

  • Irgendwie verstehe ich nicht warum das nicht funktioniert bei Dir :conf:

    Bei mir zu Hause laeuft auch ein Server mit einer sub.domain.de. Ich habe einzig und alleine folgenden DNS EIntrag bei meinem Provider wo meine domain.de gehostet ist eingetragen:

    Die entsprechende Zeile in meinem DNS Zonefile:

    Code
    <sub>        IN    CNAME    <dyndnsdomainname>.

    Dann habe ich in meiner Fritte noch den Dyndnsservice konfiguriert dass er meine sich taeglich aendernde IP fuer dyndnsdomainname bei Dyndns ablegt und das war es.

    D.h. Du hast einen CNAME Eintrag fuer <meineDomain>.de der wiederum auf Deinen Dyndns zeigt? Fuer <meineDomain>.de brauchst Du keinen CNAME Eintrag. Da sind andere DNS und eMail Eintraege notwendig. Nimm stattdessen im CNAME Statement fuer <subdom1>.<meineDomain>.de Deine Dyndnsdomaine und dann sollte es funktionieren. Ansonsten verstehe ich die (DNS-)Welt nicht mehr :no_sad:

    Also nochmal ganz langsam:

    Für <meineDomain>.de gibt es bei meinem Provider (IONOS.DE) einen A-Record, der auf die aktuelle (dynamische) Adresse meiner Fritzbox verweist. Außerdem gibt es einen CNAME-Record, der über ein Script (bereitgestellt durch ionos.de) die jeweils aktuelle dynamische Adresse der Fritzbox enthält.

    Weiterhin gibt es für <sub1>.<meineDomain>.de einen CNAME-Record, der auf <meineDomain>.de verweist. Ich habe probiert, den CNAME-Record auf <sub1>.<meineDomain>.de verweisen zu lassen, aber das führt nur zu Fehlermeldung, dass die Seite nicht (mehr) gefunden werden kann.

    In der Fritzbox ist eine Portweiterleitung für Port 80 und Port 443 eingerichtet, die auf die Adresse des RPi (Adresse wird durch die Fritzbox festgelegt) verweist.

    Auf dem RPi ist es etwas aufwendiger in Bezug auf die Konfiguration (und ich vermute, dass ich da (auch) einen Fehler gemacht habe).

    Vorweg: Sowohl für <meineDomain>.de als auch für <sub1>.<meineDomain>.de (genau wie für die weiteren <subx>.<meineDomain>.de gibt es SSL-Zertifikate (LetsEncrypt). Diese werden über einen CronJob regelmäßig erneuert (ab und zu funktioniert das nicht, dann übernehme ich die Erneuerung selbst).

    Es gib eine Konfigurationsdatei (NGINX) für <meineDomain>.de. Diese "reagiert" auf die URL <meineDomain>.de. Auch für SSL ist die "Reaktion" hier abgelegt.

    Dann gibt es eine Konfigurationsdatei für <sub1>.<meineDomain>.de. Diese "reagiert"auf die URL <sub1>.<meineDomain>.de.

    Dann gibt es eine Konfigurationsdatei für <sub2>.<meineDomain>.de. Diese "reagiert"auf die URL <sub2>.<meineDomain>.de.

    Diese Konfiguration funktioniert problemlos.

    Nun habe ich eine Konfigurationsdatei angelgt für <subintern>.<meinDomain>.de. Diese sollte "reagieren" auf die URL <subintern>.<meineDomain>.de. Ergebnis: "Seite kann nicht gefunden werden".

    Also hab ich beim Provider für <subintern>.<meineDomain>.de auch einen CNAME-Record angelegt und dann in der Konfigurationsdatei für <subintern>.<meineDomain>.de ergänzt

    Code
    allow 192.168.1.1/24;
    deny all;

    Ergebnis beim Aufruf intern: Anzeige stattdessen vom Inhalte von <meinDomain>.de

    Ergebnis beim Aufruf von extern: Anzeige stattdessen vom Inhalt von <meineDomain>.de

    Ich vermute, dass ich aus Unwissenheit einen grundsätzlichen Fehler gemacht habe, weiß aber nicht welchen. Eigentlich müsste ich jetzt von vorn anfangen, alles neu einrichten, die Konfigurationsdateien neu anlegen und dabei SSL berücksichtigen und auch die CNAMe-Records beim Provider jeweils passend ändern.

    Aber nachdem ich in den letzten Tagen gemerkt habe, dass ich <subintern>.<meineDomain>.de gar nicht so dringend brauche, kann das alles erstmal warten. Es wäre nur schön, wenn ich irgendwann mal herausfinden würde, was ich falsch gemacht habe.

    Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Post by Outlaw (November 12, 2023 at 11:20 PM).

    The post was deleted, no further information is available.
  • Der DNS löst den Domän-Namen in die IP-Adresse auf. Das lässt sich ja z.B. mit "dig <subintern>.<meineDomain>.de" überprüfen. Wenn das für alle Domänen richtig funktioniert, ist der DNS ja "raus", oder?
    Beim Webserver kommen die Request ja alle über die gleiche IP, die vom Router. Der Webserver muß dann über den Host-Header den passenden Zielserver herausfinden.
    NGINX habe ich selbst nicht. Wie die Subdomänen konfiguriert werden wird wohl unter How nginx processes a request beschrieben.
    GUMeyer: Vielleicht vergleichst Du das einmal mit Deiner Konfiguration.

  • Du beschreibst alles sehr genau. Aber die Wahrheit liegt im DNS Zone Source Code. Vielleicht kannst Du den entsprechend anonymisiert mal zeigen.

    Gern. Aber ich habe keine Ahnung, wo ich den finde. Kannst du mir da auch nen Tipp geben? Wohlgemerkt: ich habe keinen separaten DNS, das macht bei mir die Fritzbox bzw. der da eingetragene DNS.

    ni pas ni

    tu car tu

    mal tu mal

  • Für <meineDomain>.de gibt es bei meinem Provider (IONOS.DE) einen A-Record,

    Nicht lokal in Deiner Fritte ... bei Deinem Provider :) Keine Ahnung ob man bei Ionos an den DNS Source rankommt. Ich bin bei Hetzner und da kann man den Source sogar direkt editieren. Alternativ sind natuerlich auch per WebUI die wichtigsten Eintraege aenderbar.

  • Der DNS löst den Domän-Namen in die IP-Adresse auf. Das lässt sich ja z.B. mit "dig <subintern>.<meineDomain>.de" überprüfen. Wenn das für alle Domänen richtig funktioniert, ist der DNS ja "raus", oder?
    Beim Webserver kommen die Request ja alle über die gleiche IP, die vom Router. Der Webserver muß dann über den Host-Header den passenden Zielserver herausfinden.
    NGINX habe ich selbst nicht. Wie die Subdomänen konfiguriert werden wird wohl unter How nginx processes a request beschrieben.
    GUMeyer: Vielleicht vergleichst Du das einmal mit Deiner Konfiguration.

    Unter Windows hab ich kein "dig", aber ich habe hier schon gelernt, dass ich dafür auch nslookup verwenden kann. Also (anonymisiert):

    Code
    C:\>nslookup <sub1>.<meineDomain>.de
    Server:  fritz.box
    Address:  fd00::52e6:36ff:fec2:3d8a
    
    
    Nicht autorisierende Antwort:
    Name:    <meineDomain>.de
    Address:  84.184.119.3
    Aliases:  <sub1>.<meineDomain>.de

    Die Auflösung funktioniert.

    Nun das gleiche mit Hilfe des RPi und dem darauf vorhandenen "dig":

    Was sagt mir das jetzt?

    ?(

    ni pas ni

    tu car tu

    mal tu mal

  • Nicht lokal in Deiner Fritte ... bei Deinem Provider :) Keine Ahnung ob man bei Ionos an den DNS Source rankommt. Ich bin bei Hetzner und da kann man den Source sogar direkt editieren. Alternativ sind natuerlich auch per WebUI die wichtigsten Eintraege aenderbar.

    Bei ionos.de komm ich so direkt nicht an den DNS Source - das geht nur, wenn ich mich mit der ionos.de-API beschäftige und mit etwas Pech sogar nur über Dritt-Software. Dauert also länger.

    Gibt es nicht einen Weg, die nötigen Infos anders zu finden? Denn irgendwas muss ja falsch sein.

    ni pas ni

    tu car tu

    mal tu mal

  • Gibt es nicht einen Weg, die nötigen Infos anders zu finden?

    Die Zonedatei sagt einem jeden Netzwerkprofi mehr als 1000 Worte. Sprich - Du beschreibst textuell wie Du was konfiguriert hast - aber wichtige Infos koennten fehlen.

    Wechsele zu Hetzner :lol: ... nee - just kidding.

    Ich glaube dann bleibt nur der Weg alles moegliche per Commands abzufragen. Ist aber laenglich und muehsam :(

  • Unter Windows hab ich kein "dig", aber ich habe hier schon gelernt, dass ich dafür auch nslookup verwenden kann. Also (anonymisiert):

    Code
    C:\>nslookup <sub1>.<meineDomain>.de
    Server:  fritz.box
    Address:  fd00::52e6:36ff:fec2:3d8a
    
    
    Nicht autorisierende Antwort:
    Name:    <meineDomain>.de
    Address:  84.184.119.3
    Aliases:  <sub1>.<meineDomain>.de

    ...

    An "Server: fritz.box" siehst Du, dass diesen Namen Deine fritz.box "intern" aufgelöst hat. Das hilft hier leider nicht.
    1.1.1.1 ist z.B. der DNS von Cloudflare. Über den könntest Du die "externe" IP abfragen:

    Code
    nslookup <sub1>.<meineDomain>.de 1.1.1.1

    oder mit dig:

    Code
    dig @1.1.1.1 <sub1>.<meineDomain>.de

    Wenn da bei allen Domänen und Subdomänen dieselbe IP-Adresse herauskommt, dann sind die DNS-Einträge beim Hoster in Ordnung.
    Dann sind als nächster die fritz.box und der NGINX dran.

  • ... diesen Namen Deine fritz.box "intern" aufgelöst hat.

    Warum "intern"? Was ist an:

    Code
    Name:    <meineDomain>.de
    Address:  84.184.119.3
    Aliases:  <sub1>.<meineDomain>.de

    "intern"?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    PI3B OpenBSD 7.4 (64bit), mit stayauth-Flag 24/7 im Wlan

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!