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

  • Hallo,

    vielleicht kann mich jemand in die richtige Suchrichtung "stupsen"?

    Ich habe 1 Domain (via Ionos) sowie (bisher) 2 Subdomains, die über die dazugehörigen Einträge bei Ionos sowie einen DynDNS-Service auf meinen Raspberry Pi verweisen. Das läuft über NGINX, welches sich über jeweilige Config-Dateien um den Aufruf der zu den jeweiligen Subdomains gehörenden Seiten (alles abgeleitet von https://decatec.de/home-server/we…-server-hosten/

    und da ab der Überschrift "Ein virtueller Host pro Webanwendung (unterschiedliche Domains") kümmert.

    Das funktioniert für meine Hauptdomain sowie die 2 Subdomains sehr schön. Sie sind sowohl lokal als auch über WAN bzw. Internet erreichbar (abgesichert via SSL mit LetsEncrypt).

    Jetzt wollte ich eigentlich noch eine weitere Subdomain anlegen, die allerdings ausschließlich lokal (also aus dem WLAN) erreichbar sein soll.


    Eigentlich hatte ich gedacht, es reicht, wenn ich einer der schon vorhandenen Config-Dateien für eine der Subdomains kopiere, die Namen anpasse und natürlich die SSL-Konfiguration ebenfalls anpasse.

    Beim Aufruf im Browser erhalte ich aber nur "Seite nicht gefunden".

    Muss ich dann doch auch diese Subdomain bei meinem Provider anlegen und einbinden? Dann ist sie aber wieder auch per WAN erreichbar - und das möchte ich ja nicht. Oder kann ich da in der NGINX-Konfiguration etwas dazu eintragen? Wenn Ja, was? Mir gehen nämlich langsam die Suchbegriffe bei Google aus (Docker zu verwenden würde bedeuten, dass ich alles neu aufsetzen muss, außerdem löst es ja das Grundproblem nicht, ReverseProxy scheint mir auch nicht das richtige zu sein).

    Ich würde mich freuen, wenn ich den richtigen "Stupser" bekomme.

    Vielen Dank

    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!

  • Du musst diese Subdomain auf deinem lokalen DNS Server anlegen.
    Wenn du keinen hast dann nenn die Subdomain wie dein PI im Netzwerk zu sehen ist, also z.B. meinpi.fritz.box

    Alternativ die Subdomain beim Provider anlegen und die Nginx Config für die Subdomain anpassen und nur deine lokale Adressen erlauben.

    Code
    location / { 
      # allow anyone in 192.168.1.0/24 
      allow 192.168.1.0/24; 
      # drop rest of the world 
      deny all;
    }

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway Umgezogen nach Proxmox
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi
    #10 : Pi2 - Auto CD Ripper abcde

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Du musst diese Subdomain auf deinem lokalen DNS Server anlegen.
    Wenn du keinen hast dann nenn die Subdomain wie dein PI im Netzwerk zu sehen ist, also z.B. meinpi.fritz.box

    Alternativ die Subdomain beim Provider anlegen und die Nginx Config für die Subdomain anpassen und nur deine lokale Adressen erlauben.

    Code
    location / { 
      # allow anyone in 192.168.1.0/24 
      allow 192.168.1.0/24; 
      # drop rest of the world 
      deny all;
    }

    Hallo,

    das liest sich nach der Antwort die ich gesucht habe. Ich probiere es hoffentlich heute Abend aus, tagsüber geht nicht wegen fehlendem Zugriff auf Pi und Netzwerk (Arbeit). Rückmeldung gibt es auf jeden Fall.

    Dankeschön

    Gruß

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Hallo,

    wie schon geschrieben, geht das in die Richtung, die ich vermutet habe.

    Alternativ die Subdomain beim Provider anlegen

    Das habe ich gemacht, mit dem Nebeneffekt, dass ich jetzt doch noch eine SIcherheitsmaßnahme aktivieren konnte.

    Code
    location / { 
      # allow anyone in 192.168.1.0/24 
      allow 192.168.1.0/24; 
      # drop rest of the world 
      deny all;
    }

    Da hab ich noch Veständnisprobleme. Ich habe, so denke ich, mehrere IPs, die Zugriff haben sollen. So wie ich das verstehe, muss ich hier also am einfachsten eine geeignete IP-Range angeben? Nun liegen alle relevanten Adressen im Bereich 192.168.1. 2 bis 192.168.1.50. Wenn ich nun auf https://www.ipaddressguide.com/cidr diesen Bereich berechnen lasse, erhalte ich

    Code
    192.168.1.2/31
    192.168.1.4/30
    192.168.1.8/29
    192.168.1.16/28
    192.168.1.32/28
    192.168.1.48/31
    192.168.1.50/32

    Dies dann in meine /etc/nginx/sites-available/nurlokal.conf eingetragen, sollte ja dann den Zugriff erlauben, oder? Aber ich erhalte beim Aufruf vom Notebook aus (liegt in dem bereichneten Bereich) trotzdem 403 - Forbidden.

    Hab ich was falsch verstanden?

    EDIT: Nach Analyse von /var/log/nginx/error.log glaube ich auch, warum: Als IP-Adresse, von der der Aufruf kommt, steht keine lokale Adresse, sondern die externe der Fritzbox im Log. Und 1. ändert sich die ja alle ca 24 Stunden und 2. wäre eine Freigabe gleichbedeutend mit "keine Blockade von Adressen, die nicht aus dem lokalen Netzwerk kommen". Ich sehe momentan 2 Möglichkeiten:

    • Auf die Trennung von lokalen und globalen Sites verzichten (wäre schade)
    • In der Fritzbox den DNS-Rebind-Schutz ausschalten (dann gibts gleich den nächsten Thread von mir wegen einer für einen headless-betriebenen RPi geeigneten Firewall).

    Was mache ich jetzt?

    Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

    Edited once, last by GUMeyer (June 18, 2023 at 1:04 PM).

  • Bei mir haben interne Seiten auch einen Internen DNS Eintrag, wäre bei dir z.B. "raspberrypi.fritz.box"
    Läuft bei mir etwas anders da ich einen eigenen DNS Server verwende und nicht die Fritzbox. Aber vom Prinzip her geht es.


    intern.meine.domain gibt halt im lokalen Netz eine interne IP zurück,

    extern.meine.domain ist nicht konfiguriert also wird der externe DNS gefragt und bekommt die externe IP.


    Der DNS Server ist ein DNSMASQ und läuft auf einem Raspberry.
    Macht DHCP und DNS. Die Fritzbox ist bei mir nur noch ein Router.

    Externe Seiten welche nicht von jedem erreicht werden sollen sind mit einem Zertifikat aus der eigenen CA geschützt.
    Der Client benötigt ein Client Zertifikat.

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway Umgezogen nach Proxmox
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi
    #10 : Pi2 - Auto CD Ripper abcde

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Hallo,

    Bei mir haben interne Seiten auch einen Internen DNS Eintrag, wäre bei dir z.B. "raspberrypi.fritz.box"
    Läuft bei mir etwas anders da ich einen eigenen DNS Server verwende und nicht die Fritzbox. Aber vom Prinzip her geht es.

    Und wahrscheinlich wäre das auch die einfachste Lösung - allerdings bei mir nicht so einfach zu realisieren.

    Der DNS Server ist ein DNSMASQ und läuft auf einem Raspberry.
    Macht DHCP und DNS. Die Fritzbox ist bei mir nur noch ein Router.

    Also bräuchte ich einen zweiten Raspberry PI.

    Da das nicht ad hoc geht, werde ich das Projekt erst nochmal zurückstellen.

    Vielen Dank auf jeden Fall fürs Beheben der Denkfehler - dafür war die Frage gedacht.

    Danke und Gruss

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Welche Geräte sollen den auf die Interne Seite zugreifen können. Je nachdem was es ist, kann man das ganze in die Host Datei eintragen.

    Abgesehen von meinem Notebook noch ggf ein weiteres. An die Host Datei habe ich natürlich noch nicht gedacht. Aber

    Bei Smartphones natürlich leider nicht möglich.

    und die sollten das eigentlich auch können dürfen.

    Also nicht so einfach.

    Für mich bleibt die Frage ob es funktioniert wenn ich in meiner Fritzbox den DNS-Rebind-Schutz entsprechend eingeschränkt aufhebe. Aber dann, denke ich, brauche ich für den Raspberry unbedingt eine geeignete Firewall. Welche? Gibt es Empfehlungen?

    Gruß

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Als IP-Adresse, von der der Aufruf kommt, steht keine lokale Adresse, sondern die externe der Fritzbox im Log.

    Dann ist der Client bzw. die Client-Software, m. E. nicht richtig konfiguriert.

    Wie ist es wenn Du nc (zum Portscan) auf dem Client benutzt und tcpdump auf dem Server benutzt?

    EDIT:

    Mit Z. B. nsupdate kannst Du auf deiner FritzBox ein a-record (für die Benutzung im W/LAN) registrieren:

    Display Spoiler
    Code
    :~$ host namexyz 192.168.178.1
    Using domain server:
    Name: 192.168.178.1
    Address: 192.168.178.1#53
    Aliases: 
    
    Host namexyz not found: 3(NXDOMAIN)
    Code
    :~$ cat nsupdate33.txt
    server 192.168.178.1
    zone fritz.box
    ttl 864000
    add namexyz.fritz.box 86400 A 192.168.178.156
    send
    Code
    :~$ host namexyz 192.168.178.1
    Using domain server:
    Name: 192.168.178.1
    Address: 192.168.178.1#53
    Aliases: 
    
    namexyz has address 192.168.178.156

    Wi-Fi_Signal_Strength  txpower
    iptables chains order scheme iptables-diagram
    nftables-diagram

    Meine PIs

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

    PI4B/4GB FreeBSD 14.3R-p0 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., Mumble-Serv., ddclient

    PI4B/8GB Bookworm-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, Mumble-Server, botamusique, ample

    Edited once, last by rpi444 (June 20, 2023 at 9:37 AM).

  • Und wahrscheinlich wäre das auch die einfachste Lösung - allerdings bei mir nicht so einfach zu realisieren.

    Warum nicht ?

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway Umgezogen nach Proxmox
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi
    #10 : Pi2 - Auto CD Ripper abcde

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Dann ist der Client bzw. die Client-Software, m. E. nicht richtig konfiguriert.

    Wie ist es wenn Du nc (zum Portscan) auf dem Client benutzt und tcpdump auf dem Server benutzt?

    Von welchem Client schreibst/redest du? Fritzbox, Chrome auf den Windows Notebook oder was? Auf dem Raspberry läuft als Webserver ein Nginx, welches zum ersten Test erstmal nur eine statische Seite liefern soll (später dann wahrscheinlich eine per Cgi-Script(in welcher Sprache weiß ich noch nicht) erzeugte Seite). Die Fritzbox erhält alle 24 Stunden eine neue IP-Adresse und der Raspberry Pi holt sich diese Info per Script ("domain-connect-dyndns", welches ein Script vom Domain-Provider Ionos (ionos.de) für dynamisches DNS ist).

    Wenn ich auf dem Notebook die Adresse der Seite (in meinem Fall eine Subdomain der registrierten Domain) aufrufe und mir per tcpdump auf dem Raspberry zuschaue, sehe ich, dass es einen Aufruf für den Domain-Namen gibt, der auch völlig korrekt an den Raspberry geht, aber eben mit der externen Adresse der Fritzbox. Deshalb meine Idee mit dem Aufheben des DNS-Rebind-Schutzes innerhalb der Fritzbox.

    Oder habe ich da immer noch einen Denkfehler oder sogar ein Verständnisproblem?

    Danke und Gruß

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Mit Z. B. nsupdate kannst Du auf deiner FritzBox ein a-record (für die Benutzung im W/LAN) registrieren:

    Display Spoiler
    Code
    :~$ host namexyz 192.168.178.1
    Using domain server:
    Name: 192.168.178.1
    Address: 192.168.178.1#53
    Aliases: 
    
    Host namexyz not found: 3(NXDOMAIN)
    Code
    :~$ cat nsupdate33.txt
    server 192.168.178.1
    zone fritz.box
    ttl 864000
    add namexyz.fritz.box 86400 A 192.168.178.156
    send
    Code
    :~$ host namexyz 192.168.178.1
    Using domain server:
    Name: 192.168.178.1
    Address: 192.168.178.1#53
    Aliases: 
    
    namexyz has address 192.168.178.156

    Das muß ich mir zuhause in Ruhe anschauen (dafür ist ein Smartphone-Display nicht geeignet).

    Heute Abend weiß ich mehr

    Gruß

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Von welchem Client schreibst/redest du? Fritzbox, Chrome auf den Windows Notebook oder was?

    Keine Ahnung, ... ich habe nicht nur Client sondern auch Client-Software geschrieben ... hast Du das schon mitgeteilt? Was benutzt Du auf dem Notebook um "die Adresse der Seite" aufzurufen?

    Wenn ich auf dem Notebook die Adresse der Seite (in meinem Fall eine Subdomain der registrierten Domain) aufrufe ...

    Welche FritzBox mit welcher Firmware-Version hast Du?

  • Keine Ahnung, ... ich habe nicht nur Client sondern auch Client-Software geschrieben ... hast Du das schon mitgeteilt? Was benutzt Du auf dem Notebook um "die Adresse der Seite"

    aufzurufen?Notebook mit Windows 11 und Chrome (wahrscheinlich die aktuelle Version).

    Es gibt eine Domain "artspace-meyer.de". Diese verweist auf meinen Raspberry Pi. Dazu diverse Subdomains, ebenfalls auf dem Raspberry Pi liegend. Diese sind öffentlich.

    Nun wollte ich eine Subdomain einrichten, die ausschließlich lokal erreichbar ist. Erreichbar heißt, sie kann mit Windows Notebooks aufgerufen werden und außerdem auch mit (weil nur verfügbar) Android Smartphones.

    ni pas ni

    tu car tu

    mal tu mal

  • Nun wollte ich eine Subdomain einrichten, die ausschließlich lokal erreichbar ist.

    Eine Subdomain die auf die externe/öffentliche IPv4-Adresse vom "border device" (in deinem Fall die FritzBox) auflöst.

    Das geht wenn der dns-rebind-Schutz aufgehoben ist und weil die FritzBox i. d. R. NAT-Loopback (Hairpinning) kann/macht.

    Wenn die FritzBox aber im RIP-Modus konfiguriert ist (... z. b. wenn Du zusätzliche statische externe/öffentliche IPv4-Adressen hast, geht das NAT-Loopback der FB, nicht).

    Alternativ kannst Du Hostnamen in der lokalen domain (fritz.box) der FB, registrieren und benutzen.

  • Eine Subdomain die auf die externe/öffentliche IPv4-Adresse vom "border device" (in deinem Fall die FritzBox) auflöst.

    Das geht wenn der dns-rebind-Schutz aufgehoben ist und weil die FritzBox i. d. R. NAT-Loopback (Hairpinning) kann/macht.

    Wenn die FritzBox aber im RIP-Modus konfiguriert ist (... z. b. wenn Du zusätzliche statische externe/öffentliche IPv4-Adressen hast, geht das NAT-Loopback der FB, nicht).

    Alternativ kannst Du Hostnamen in der lokalen domain (fritz.box) der FB, registrieren und benutzen.

    Also geht es wenn ich wirklich den DNS-Rebind-Schutz der FB aufhebe. Damit habe ich grundsätzlich kein Problem. Allerdings werde ich dann relativ bald einen neuen Thread aufmachen mit der Frage nach einer guten Firewall für meinen Raspberry (Vorgabe: muss sich im Headless Betrieb konfigurieren lassen) - zumindest wenn ich der Hilfe von Avm zum Thema DNS-Rebind-Schutz folge.

    Auf jeden Fall vielen Dank für das ausführliche Erläutern und Mithelfen.

    Gruß

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • ... Frage nach einer guten Firewall für meinen Raspberry (Vorgabe: muss sich im Headless Betrieb konfigurieren lassen) - ...

    In Linux kannst Du netfilter-persistent benutzen.

    Z. B.:

    Display Spoiler

    EDIT:

    BTW: Wenn diese Subdomain _nur_ lokal benutzt werden soll, warum benutzt Du dann nicht eine Subdomain die nur auf die lokale/interne IPv4-Adresse vom Server auflöst? Dann brauchst Du evtl. keine Firewall.

    Wi-Fi_Signal_Strength  txpower
    iptables chains order scheme iptables-diagram
    nftables-diagram

    Meine PIs

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

    PI4B/4GB FreeBSD 14.3R-p0 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., Mumble-Serv., ddclient

    PI4B/8GB Bookworm-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, Mumble-Server, botamusique, ample

    Edited once, last by rpi444 (June 20, 2023 at 3:06 PM).

  • In Linux kannst Du netfilter-persistent benutzen.

    Z. B.:

    Display Spoiler

    Damit muss ich mich erstmal ausführlich beschäftigen. Aber die Beschreibungen, die ich gefunden habe, sehen so aus, als ob sogar ich mit meinen rudimentären Kenntnissen das vernünftig konfiguriert bekomme.

    EDIT:

    BTW: Wenn diese Subdomain _nur_ lokal benutzt werden soll, warum benutzt Du dann nicht eine Subdomain die nur auf die lokale/interne IPv4-Adresse vom Server auflöst? Dann brauchst Du evtl. keine Firewall.

    Eigentlich würde mir ein _nur_ lokal reichen. Aber wie ich sowas einrichte, weiß ich noch dir. Kannst du mir da mal Lektüre empfehlen oder mir kurz erkären, wie ich sowas mache?

    Danke für deine Geduld

    GUMeyer

    ni pas ni

    tu car tu

    mal tu mal

  • Eigentlich würde mir ein _nur_ lokal reichen. Aber wie ich sowas einrichte, weiß ich noch dir. Kannst du mir da mal Lektüre empfehlen oder mir kurz erkären, wie ich sowas mache?

    Das hatte ich doch schon in #5 erwähnt.
    Leg im NGINX eine Domain an welche dem DNS Namen des Raspberry in der Fritzbox entspricht. Z.B. raspi.fritz.box.
    Diese ist von außen nicht erreichbar.

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway Umgezogen nach Proxmox
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi
    #10 : Pi2 - Auto CD Ripper abcde

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

Participate now!

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