Don P: Server totz Port Forwarding nicht erreichbar

Hallo,

Beim Versuch, einen kleinen Web-Server hinter dem Router zu betreiben gibt's ein Problem:

Der Server ist nicht erreichbar (Netzwerk-Timeout).

Wenn ich ihn als http://localhost oder http://127.0.0.1 anspreche, ist alles ok. Aber nicht, wenn ich ihn über die vom ISP dynamisch zugeordnete IP-Adresse des Routers aufrufe :-(, weder vom lakalen Netz aus, noch von außen, d.h. einfach gar nicht.

Im Router habe ich natürlich Port Forwarding für Port 80 (HHTP) und Port 443 (HTTPS) auf die fixe lokale IP-Adresse des Servers eingerichtet, und das Tool PFPortchecker meldet mir auch, dass diese Ports ganz sicher offen offen sind. Das allerdings nur bei abgeschaltetem Server – logisch, weil der ja sonst den Port belegt, so dass der Portchecker ihn nicht abhören hann, so denke ich mir das jedenfalls.

Bei offenen Ports sollte doch aber alles ok sein.

Hat jemand eine Idee, woran es sonst noch liegen kann?
Am Provider vielleicht, dass der sowas nicht zulassen will?
Oder am Server selber (ein zugegeben etwas exotisches Ding)? Aber wenn er doch lokal funktioniert...

Oder kann mir jemand einen kleinen Testserver (Software) empfehlen, den ich mal kurz unter WinXP einrichten kann um zu sehen, ob wenigstens der erreichbar ist?

Ach ja, WinXP übrigens das OS, mit abgeschalteter Software-Firewall.

Danke für jede Hilfe,
Don P

  1. Hi,

    Beim Versuch, einen kleinen Web-Server hinter dem Router zu betreiben gibt's ein Problem:
    Der Server ist nicht erreichbar (Netzwerk-Timeout).
    Wenn ich ihn als http://localhost oder http://127.0.0.1 anspreche, ist alles ok.

    auch dann, wenn du ihn von einem anderen PC in deinem LAN ansprichst? Wenn nein, ist die Ursache auf dem Rechner zu suchen, auf dem der Server läuft; wenn doch, dann auf dem Weg dorthin (z.B. beim Router).

    Im Router habe ich natürlich Port Forwarding für Port 80 (HHTP) und Port 443 (HTTPS) auf die fixe lokale IP-Adresse des Servers eingerichtet, und das Tool PFPortchecker meldet mir auch, dass diese Ports ganz sicher offen offen sind.

    Dieses Tool kenne ich nicht, aber wenn der Webserver läuft und auf dem Netzwerkinterface lauscht, dann *ist* der Port 80 offen.

    Das allerdings nur bei abgeschaltetem Server – logisch, weil der ja sonst den Port belegt, so dass der Portchecker ihn nicht abhören hann, so denke ich mir das jedenfalls.

    Nein, das klingt unlogisch. "Port geöffnet" heißt ja gerade, dass ein Prozess läuft, der Anfragen auf diesem Port beantwortet.

    Hat jemand eine Idee, woran es sonst noch liegen kann?

    Kontrolliere mal die Listen-Direktive in der Apache-Konfiguration (wir reden doch vom Apache Webserver, oder?). Ist Listen auf das Loopback-Interface 127.0.0.1 beschränkt? Dann würde dein Apache tatsächlich nur Anfragen vom lokalen PC aus beantworten.

    Am Provider vielleicht, dass der sowas nicht zulassen will?

    Eher unwahrscheinlich, weil einige andere Dienste auch den TCP-Port 80 als Übertragungskanal nutzen, z.B. Skype.

    Oder am Server selber (ein zugegeben etwas exotisches Ding)? Aber wenn er doch lokal funktioniert...

    Oh, doch kein Apache?

    Oder kann mir jemand einen kleinen Testserver (Software) empfehlen, den ich mal kurz unter WinXP einrichten kann um zu sehen, ob wenigstens der erreichbar ist?

    Nun ja, Apache kenne ich bisher nur als "Entpacken, starten, läuft". Naja, beinahe. Die Konfiguration muss man schon ein bissl anpassen. Aber das beschränkt sich erfahrungsgemäß auf das HTTP-Root-Verzeichnis und evtl. den Servernamen, solange man keine speziellen Ansprüche hat.

    So long,
     Martin

    --
    Soso, der Klügere gibt nach.
    Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)
    1. Hallo,

      »» Der Server ist nicht erreichbar (Netzwerk-Timeout).
      »» Wenn ich ihn als http://localhost oder http://127.0.0.1 anspreche, ist alles ok.

      auch dann, wenn du ihn von einem anderen PC in deinem LAN ansprichst?

      Das nicht, aber: Wenn ich ihn so konfiguriere, dass er nicht unter 127.0.0.1, sondern unter seiner wahren lokalen IP läuft, dann kann ich ihn vom lokalen Netz aus immer unter dieser lokalen IP erreichen.
      Interessant ist auch: In der Logdatei werden die Zugriffe über die öffentliche Router-IP registriert, wenn er unter seiner lokalen IP läuft (192.168.0.x), aber offenbar mit Bad Request Status 400:

      Compi - - [15/Apr/2009:23:02:34 +0200] - 400 4512 - -

      "Compi" ist hier der Computername des Client im lokalen Netz, und 4512 ist die Größe der 400er-Meldung vom Server, die kommt aber nicht beim Client an, nur "Netzwerk Timeout". Der Server erhält anscheinend auch keine GET-Anfrage usw., jedenfalls steht nichts davon in der Log-Datei, nur 3 identische Zeilen wie oben.

      PFPortchecker meldet mir auch, dass diese Ports ganz sicher offen sind.

      Dieses Tool kenne ich nicht, aber wenn der Webserver läuft und auf dem Netzwerkinterface lauscht, dann *ist* der Port 80 offen.

      Das Tool lauscht auf einen einstellbaren Port am lokalen Rechner und lässt diesen dann über die öffentliche Router-IP vom Internet aus ansprechen. Wenn es diesen Zugriff von außen am lokalen Rechner registriert, meldet es "Port offen". Das bezieht sich auf die Weiterleitung der Pakete über diesen Port durch den Router (Port Forwarding beim NAT) an den Ziel-Rechner dahinter, auf dem der Server laufen soll. Das scheint mir soweit narrensicher.

      Oh, doch kein Apache?

      Nö, kein Apache. So eine Listen-Direktive kann ich nirgends finden.
      Es ist ein "minimalistischer Server", ganz in Java geschrieben (nicht von mir).

      Nun ja, Apache kenne ich bisher nur als "Entpacken, starten, läuft". Naja, beinahe. Die Konfiguration muss man schon ein bissl anpassen. Aber das beschränkt sich erfahrungsgemäß auf das HTTP-Root-Verzeichnis und evtl. den Servernamen, solange man keine speziellen Ansprüche hat.

      Dann probiere ich den mal. Wenn er funktioniert, ist mein Server schuld.

      Danke und Gruß,
      Don P

    2. Hallo,

      Ok,habe jetzt den Apache installiert, und es passiert dasselbe: Lokal kann ich ihn erreichen, aber nicht über's Internet mit der IP-Adresse des Routers. :-(

      Bin langsam am verzweifeln...

      Eine Listen-Direktive kann ich aber auch in der Apache-Konfiguration nirgends finden...

      Hier nochmal, was ich eingestellt habe:

      Die lokale IP ist fix 192.168.0.243
      Der Router (sitecom) leitet Anfragen auf Port 80 und Port 443 an 192.168.0.243 weiter (jedenfalls behauptet er das, d.h. beim NAT ist es so eingestellt.
      Als DMZ (demilitarisierte Zone) ist im Router ebenfalls 192.168.0.243 eingestellt.

      In der hosts-Datei von Windows habe ich stehen:

      127.0.0.1     localhost
      192.168.0.243 fury       # so heißt der host mit dem Server drauf
      sowohl über http://localhost/index.htm
      als auch über http://fury/index.htm

      wird die index.htm vom Apache angezeigt mit dem Standardtext "IT works!"
      Das funktioniert auch mit anderen Rechnern vom lokalen Netz aus mit http://fury/index.htm.

      Leider geht aber *nichts* von außen. Also liegt es doch irgendwie am Router oder am Provider?

      Danke und Gruß,
      Don P

      1. Hallo Don P,

        Ok,habe jetzt den Apache installiert, und es passiert dasselbe: Lokal kann ich ihn erreichen, aber nicht über's Internet mit der IP-Adresse des Routers. :-(

        Hmm. Jetzt wird's interessant.

        Eine Listen-Direktive kann ich aber auch in der Apache-Konfiguration nirgends finden...

        Ups. Das hätte ich nicht erwarten. Nun ja, die Doku behauptet, wenn diese Direktive fehlt, würde der Apache per Default auf allen Interfaces lauschen. Müsste also zumindest auch funktionieren.

        Die lokale IP ist fix 192.168.0.243
        Der Router (sitecom) leitet Anfragen auf Port 80 und Port 443 an 192.168.0.243 weiter (jedenfalls behauptet er das, d.h. beim NAT ist es so eingestellt.

        Okay.

        Als DMZ (demilitarisierte Zone) ist im Router ebenfalls 192.168.0.243 eingestellt.

        Dieses Feature habe ich noch nie verwendet und bin nicht sicher, ob das gut ist. Schon mal ohne DMZ probiert?

        In der hosts-Datei von Windows habe ich stehen:

        127.0.0.1     localhost
        192.168.0.243 fury       # so heißt der host mit dem Server drauf
        sowohl über http://localhost/index.htm
        als auch über http://fury/index.htm
        wird die index.htm vom Apache angezeigt mit dem Standardtext "IT works!"

        Das ist klar soweit.

        Das funktioniert auch mit anderen Rechnern vom lokalen Netz aus mit http://fury/index.htm.

        Auch klar.

        Leider geht aber *nichts* von außen. Also liegt es doch irgendwie am Router oder am Provider?

        Scheint so ...
        Wie probierst du das? Von einem Rechner "drinnen" über die öffentliche IP des Routers? Manche Router stellen sich da dumm an. Versuch es daher am besten von einem Rechner aus, der *wirklich* außerhalb deines Netzwerks steht.

        Mehr fällt mir da im Moment auch nicht mehr ein ...

        So long,
         Martin

        --
        Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
        1. Hallo Martin,

          Dieses Feature [DMZ] habe ich noch nie verwendet und bin nicht sicher, ob das gut ist. Schon mal ohne DMZ probiert?

          Ja, anfangs. Aber weil es eben nicht klappte, hab' ich dann auch mal die DMZ eingestellt.

          »» Leider geht aber *nichts* von außen. Also liegt es doch irgendwie am Router oder am Provider?

          Scheint so ...
          Wie probierst du das? Von einem Rechner "drinnen" über die öffentliche IP des Routers?

          Ja.

          Manche Router stellen sich da dumm an.

          Sieht ganz so aus.

          Versuch es daher am besten von einem Rechner aus, der *wirklich* außerhalb deines Netzwerks steht.

          Gesagt, getan, und siehe: "It works!" :-))

          Allerdings hab' ich das gestern auch schon versucht mit dem anderen Server - Fehlanzeige.

          Da muss ich wohl doch den Apache einsetzen. Aber das Ding hat ja jeder, ist doch langweilig... ;-). Für meine Zwecke (nur eine klitzekleine HTML-Datei bereitstellen) würde auch ein kleineres Serverchen reichen, naja...

          Danke für die Hilfe,
          Don P

  2. hi,

    Wenn ich ihn als http://localhost oder http://127.0.0.1 anspreche, ist alles ok. Aber nicht, wenn ich ihn über die vom ISP dynamisch zugeordnete IP-Adresse des Routers aufrufe :-(, weder vom lakalen Netz aus, noch von außen, d.h. einfach gar nicht.

    Die IP-Adresse 127.0.0.1 (und auch alle anderen Adressen im Subnetz 127.0.0.0/8) zeigen stets auf den Lokalen Host, den localhost. Aus der sicht des Routers ist dieses Netz directly connected und nimmt am Routing nicht teil.

    Hotte

    --
    Mein neuer Artikel: UserAgents mit Perl
  3. Hallo,

    Nur zur Info:

    Es lag am QoS-Paketplaner von M$. Dieser wird anscheinend bei XP standardmäßig mit dem Netzwerk installiert.

    Seit er deaktiviert ist, läuft das lokale Netz viel schneller und der Server ist endlich von außen erreichbar, und zwar nicht nur der Apache. Andere tun's jetzt nämlich auch :-).

    Gruß, Don P

    --
    sh:( fo:) ch:? rl:( br:] n4:~ ie:% mo:? va:{ js:) de:/ zu:] fl:( ss:| ls:&
    1. Hi,

      Nur zur Info:
      Es lag am QoS-Paketplaner von M$. Dieser wird anscheinend bei XP standardmäßig mit dem Netzwerk installiert.

      na juhuu ...
      Soviel also zum Thema "Standardinstallation". Ja, er wird immer mit installiert, ich deaktiviere diesen Dienst aber grundsätzlich. Denn auch wenn ich dieses QoS-Feature (Quality of Service) noch nicht in allen Einzelheiten verstanden habe - ich habe keine Teilnehmer im Netz, die es verwenden.

      Seit er deaktiviert ist, läuft das lokale Netz viel schneller

      Was auch kein Wunder ist, da für QoS immer ein gewisser Anteil der Bandbreite reserviert bleibt, der dann nicht für andere Anwendungen verfügbar ist. Das ist besonders ärgerlich bei der Upstream-Bandbreite, die ja bei einem typischen ADSL-Anschluss ohnehin klein im Vergleich zur Downstream-Rate ist.

      und der Server ist endlich von außen erreichbar, und zwar nicht nur der Apache. Andere tun's jetzt nämlich auch :-).

      Das leuchtet mir jetzt nicht ganz ein, aber schön, wenn's jetzt tut!

      Schönes Wochenende schonmal,
       Martin

      --
      Wenn du beim Kochen etwas heißes Wasser übrig hast, friere es ein.
      Heißes Wasser kann man immer gebrauchen.