Zugriff auf einen Server aus seinem LAN und von außen mit derselben Domäne

Zugriff auf einen Server aus seinem LAN und von außen mit derselben Domäne

Situation

Ich habe in meinem LAN einen Server, auf dem ein LAMP-Server läuft, den ich für TeamSpeak, Nextcloud, persönliches Webhosting usw. verwende.

Ich besitze eine Domäne „über“ Cloudflare, die auf meine öffentliche IP-Adresse umleitet.

Ich greife sowohl aus dem LAN als auch von außen auf den Server zu.

mein Problem / was ich ändern möchte

Da mein Server in meinem LAN ist, hat er dieselbe öffentliche IP-Adresse wie mein Client (natürlich nur, wenn ich zu Hause bin). Daher kann ich nicht auf meinen Server zugreifen, weil das Pingen meiner eigenen öffentlichen IP nicht funktioniert (normales Verhalten, denke ich).

Um dieses Problem zu lösen, verwende ich meine Hosts-Datei, um meine Domain auf die lokale IP-Adresse meines Servers umzuleiten. Aber jedes Mal, wenn ich meinen Standort ändere (fast jeden Tag), muss ich diese Datei bearbeiten.

Und das funktioniert auch nur auf den wenigen Geräten, auf denen ich diese Datei bearbeiten kann. Auf meinem Telefon (Android) kann ich beispielsweise nicht auf meine Websites oder irgendetwas Domänenspezifisches zugreifen.

gibt es eine Möglichkeit, dieses Problem zu lösen?

Ich habe tatsächlich einige Ideen

  • einen Weg finden, damit meine öffentliche IP-Adresse von meinem LAN aus „pingbar“ ist
  • Einrichten eines lokalen DNS-Servers
  • unterschiedliche DNS-Zonendateien abhängig von der anfordernden IP-Adresse, falls das überhaupt möglich ist (vielleicht bietet Cloudflare diese Funktion an). (Wenn die anfordernde IP-Adresse dieselbe ist, zu der die Domäne weiterleitet, antwortet sie mit meiner lokalen IP für den Server.)

bearbeiten (17.03.17)

Ich habe vergessen zu erwähnen, dass ich diesen Server in Zukunft auch für E-Mails verwenden möchte. Er muss also dafür vorbereitet werden.

Ich habe jetzt einen DNS-Server darauf installiert, der meine Domain in die lokale IP-Adresse des Servers auflöst ( bind9auch umgekehrt mit ;). Das funktioniert einwandfrei, aber dafür musste ich meine DNS-Server (die, die mein Computer anfordert) manuell einstellen, was zu längeren Ladezeiten (anderer Websites) führt. Aber das ist auch nicht die perfekte Lösung, denn dann können Leute wie meine Freunde nicht auf den Server zugreifen, weil sie meinen eigenen DNS-Server nicht in ihrer Liste haben. Würde das Ändern der Standard-DNS-Server meines Routers dieses Problem lösen?

Leider habe ich eine dynamische öffentliche IP-Adresse, die ändert sich etwa alle drei Wochen. Bisher habe ich meinen DNS-Eintrag manuell geändert, aber das muss sich ändern (deshalb bin ich zu Cloudflare gewechselt, die bieten dafür eine API an).

Um überhaupt von außen auf meinen Server zugreifen zu können, musste ich einige Ports umleiten/weiterleiten. Hier ist ein Screenshot davon:

Bildbeschreibung hier eingeben

Antwort1

Die Antwort hängt von Ihrem Dienstprogramm ab. Wenn Sie nur http verwenden, um mit dem Server in Ihrem internen LAN zu kommunizieren (über den öffentlichen Namen), können Sie das Verhalten basierend auf dem Port ändern. Sie könnten beispielsweise auch eine Umleitung von Ihrer lokalen Lampe basierend auf der Quell-IP-Adresse ausgeben. (Wenn die Quelladresse beispielsweise das externe Gateway ist, könnte die Anforderung an die interne IP-Adresse umgeleitet werden.) Dadurch erhalten Sie jedoch nicht die Namenszuordnung.

Trotzdem klingt es so, als ob die Portweiterleitung im Router falsch konfiguriert ist. Ich spreche nicht von Hairpinning, das meine Router auch nicht unterstützen, aber ich verwende die Portweiterleitung und kann mich von innerhalb oder außerhalb unseres LANs mit internen Servern verbinden, indem ich über die externe Domäne/Schnittstelle route. Ich habe z. B. einen DNS-Eintrag home.domain.com, der auf die WAN-Schnittstelle des Routers verweist. Unabhängig davon, ob ich innerhalb oder außerhalb bin, gehen Anfragen an home.domain.com an die WAN-Schnittstelle und werden dann über die Portweiterleitung zurück an den richtigen Zielserver geleitet. Das ist in gewisser Weise immer noch indirekt, aber es funktioniert, also sollte es auch bei Ihnen funktionieren.

Es ist auch eine Frage, wie viele andere Server den Port/Dienst in Ihrem LAN bereitstellen. Ist es nur einer?

Schließlich denke ich auch von Zeit zu Zeit über dieses Problem nach, da ich eine Hostnamenrichtlinie möchte, die auch von dem Netzwerk abhängt, mit dem ich verbunden bin. Eine einfache Möglichkeit besteht vielleicht darin, { (a) ein Planungsskript zu schreiben (wenn Sie Windows verwenden) oder (b) ein Skript zu ifup/ifcfg hinzuzufügen }, das den spezifischen Linux-Host oder andere bekannte Assets im LAN anpingt und dann den Hostwert basierend darauf einstellt. Das ist nicht so elegant, wie einen eigenen DNS-Server mit eigenen internen Regeln zu betreiben (was übrigens genauso einfach zu handhaben sein kann, da DHCP den internen LAN-DNS-Server bereitstellen kann).

Vielleicht funktioniert es bei Ihnen nicht, weil Sie für Ihren Domänennamen eine IP-Umleitung statt dynamischem DNS verwenden? Unsere öffentliche IP ist beispielsweise dynamisch, daher aktualisiere ich meine DNSmadeeasy-Subdomain/-Domäne regelmäßig auf meinen internen Servern mit der externen/öffentlichen IP-Adresse. Dann geht die Hostnamensuche direkt zur richtigen IP-Adresse, sie wird nicht dorthin umgeleitet.

Antwort2

Es tut mir leid, dass ich so lange gebraucht habe, um diese endgültige Antwort zu schreiben.

(schon in der Bearbeitung der Frage erwähnt)
Am besten wäre ein Router, der Hairpin/NAT unterstützt. Meiner tut das aber nicht. Deshalb habe ich mich für einen DNS-Server entschieden. Ich musste lediglich die Standard-DNS-Server auf meinen Computern und meinem Telefon usw. ändern (was übrigens auf jedem gängigen Betriebssystem möglich ist). Dies führte zu geringfügig, aber spürbar (zumindest glaube ich das) langsameren Ladezeiten. Aber es ist kein großes Problem.

Aber das nächste Problem (andere Leute können in meinem LAN nicht auf den Server zugreifen, weil sie meinen DNS-Server nicht in ihrer Liste haben) war ein größeres Problem und deshalb habe ich beschlossen, es dabei zu belassen. Die einzige Möglichkeit, die ich vermute, ist, die Standard-DNS-Server in meinem Router zu ändern. Dazu müsste ich jedoch das gesamte Setup ändern, aber es gibt bekannte Möglichkeiten, dies zu tun.

Zum Problem mit meiner wechselnden IP-Adresse:
Ich habe mir ein kleines Skript geschrieben, das etwa alle fünf Sekunden nachschaut, ob ich eine neue IP-Adresse habe und diese dann automatisch über die oben erwähnte Cloudflare-API ändert. Falls jemand das braucht und zu faul ist, es selbst zu schreiben, kann ich es gerne veröffentlichen.

Danke @Beracah für deine Antwort :)

verwandte Informationen