Markus Rost: Interne Seite extern Darstellen

Hallo,

ich habe eine Frage. Ich habe bei mir Zuhause im Netzwerk einen Webserver (Apache) der von Außen erreichbar ist. Nun habe ich intern von verschiedenen Geräten Konfigurationsseiten und dieses möchte ich nun in meine Internetseite einbinden. Ein IFrame wird nicht funktionieren, da die Konfigurationsseiten nicht von außen erreichbar sind und diese auch nicht direkt erreichbar sein sollen, sondern nur über eine Art Gateway.

Was gibt es hier für Möglichkeiten?

Gruß
Markus

  1. Moin Moin!

    Reverse Proxy, Port Forwarding.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Das ist irgendwie noch nicht so das was ich mir vorstelle, denn dann kann ich gleich den Port von meinem Router forwarden lassen.

      Ich will das Ganze so in meine Homepage einbauen können, dass ich mich an der Homepage anmelden muss und anschließend erst auf den Inhalt zugreifen kann.

      Gruß
      Markus

  2. Hi,

    Ich habe bei mir Zuhause im Netzwerk einen Webserver (Apache) der von Außen erreichbar ist. Nun habe ich intern von verschiedenen Geräten Konfigurationsseiten und dieses möchte ich nun in meine Internetseite einbinden.

    das ist aber kompliziert und knifflig. ;-)

    Dabei muss dein lokaler Apache als Proxy agieren. Denn die internen IP-Adressen sind ja von außen nicht direkt erreichbar, und im Router kannst du auch keine direkten Forwarding Rules einrichten: Der Router müsste ja anhand bestimmter Merkmale der URL den Request an unterschiedliche lokale IPs weiterleiten. Mir ist bisher keiner bekannt, der das kann.

    Eine Lösung: Lass alle Requests, die du intern auf ein bestimmtes Gerät leiten willst, zunächst auf http://example.net/redirect.php/device/ zeigen. Dann ist redirect.php ein einfaches PHP-Script, das nur den HTTP-Request an das gewünschte Gerät im LAN weiterreicht und die Antwort entsprechend zurückgibt - also eine Art Proxy.

    Letztendlich dürfte das aber auch nicht einfacher sein, als mod_proxy zu konfigurieren.

    So long,
     Martin

    --
    Das Gehirn ist schon eine tolle Sache: Es fängt ganz von allein an zu arbeiten, wenn man morgens aufsteht, und hört erst damit auf, wenn man in der Schule ankommt.
      (alte Schülererkenntnis)
    1. Hi,

      danke für die Antwort.

      Wie müsste denn das Script aussehen, damit auch Get und Post funktioniert?

      Gruß

      Markus

      1. Hallo Markus,

        Wie müsste denn das Script aussehen, damit auch Get und Post funktioniert?

        kann ich dir hier nur schematisch erläutern:

        * Request-Methode ermitteln: $_SERVER['REQUEST_METHOD']
         * Zielpfad ermitteln: $_SERVER['PATH_INFO']
         * Plausibilitätskontrolle
         * Mit fsockopen eine HTTP-Verbindung zum internen Gerät herstellen
         * HTTP-Request absetzen (Methode wurde oben ermittelt)
         * bei POST den Datenblock hinterherschicken
         * Antwort vom Gerät an anfragenden Client zurücksenden, bis feof()
         * Socket-Verbindung zum Gerät schließen

        Das ist jetzt erstmal "nur so aus dem Handgelenk". Einzelne Punkte erfordern sicher noch etwas Detailarbeit, z.B. das direkte Weiterreichen der POST-Daten, da der Zugriff auf die vom Client empfangenen Rohdaten anscheinend nicht zuverlässig möglich ist (ich habe auf die Schnelle einige Foren- und Newsbeiträge gefunden, die vermuten lassen, dass das nicht immer funktioniert).

        Ich weiß im Moment auch nicht, ob ich mit PHP auf sämtliche HTTP-Header (auch nicht-standardisierte X-Header) des Requests zugreifen kann. Das würde ich aber gern, damit ich diese Header auch an das adressierte interne Gerät weitergeben kann.

        Schließlich ist noch die Frage, ob man die Response-Daten vom Gerät parsen und ggf. Pfadangaben so transformieren möchte, dass sie dem "externen" Adressierungsschema entsprechen - beispielsweise also http://device/foo.xy in http://example.net/redirect.php/device/foo.xy umsetzen.

        Du siehst, das ist nicht trivial. Hat aber auch niemand behauptet. ;-)

        Gutes neues Jahr noch,
         Martin

        --
        Husten kann böse Folgen haben.
        Besonders im Kleiderschrank.