Wie kann ich IIS außerhalb meines Netzwerks hinter einem Router zum Laufen bringen und darauf zugreifen? [geschlossen]

9

Auf meinem Computer wird Windows 7 Ultimate ausgeführt. Folgendes habe ich bisher (erfolgreich) getan:

  1. IIS 7.5 mit PHP über FastCGI installiert
  2. Habe es geschafft! Wenn ich zu http: //localhost/index.php gehe , laufen meine PHP-Skripte einwandfrei .
  3. Führen Sie ipconfig aus, um herauszufinden, dass meine lokale IP-Adresse 192.168.1.102 lautet. Ich habe bestätigt, dass http://192.168.1.102/index.php genau wie die oben angegebene localhost-Adresse funktioniert.
  4. Ging in meine Router-Administration (ich habe einen Linksys WRT54G2) und richtete die Portweiterleitung an Port 80 bis 192.168.1.102 ein. Jetzt leitet Port 80 an meinen Computer weiter.
  5. Richten Sie eine eingehende Regel in der Windows-Firewall ein, um alle Aktivitäten auf Port 80 zuzulassen.
  6. Ich habe von Google herausgefunden, wie meine externe IP-Adresse lautet. Nennen wir es XXX.XX.XX.XX.

Wenn ich jedoch versuche, von meinem eigenen Computer oder von einem weit entfernten Computer und nicht in meinem Netzwerk auf http: //XXX.XX.XX.XX/index.php zuzugreifen, erhalte ich nichts. Es versucht für eine Weile eine Verbindung herzustellen (erfolglos), gibt aber schließlich einfach auf.

Folgendes frage ich mich:

  1. Was vermisse ich? Was habe ich vergessen / übersehen? Wie kann ich dies außerhalb meines eigenen lokalen Netzwerks zum Laufen bringen und darauf zugreifen?
  2. Angenommen, ich arbeite damit, wie kann ich dann einen anderen Port als Port 80 verwenden? Welche Änderungen müsste ich vornehmen (z. B. IIS, Windows-Firewall, Routerverwaltung usw.), um dies zu ermöglichen?

Vielen Dank im Voraus!

Soapergem
quelle
1
Sehen Sie hier nach, ob Ihr Port erfolgreich weitergeleitet wurde. yougetsignal.com/tools/open-ports
smohamed

Antworten:

5

Dies klingt nach einem HTTP.SYS-Problem, das Sie haben.

Unten finden Sie einen Auszug aus Scott Hanselmans Blog , in dem beschrieben wird, wie IISExpress außerhalb von localhost verfügbar gemacht wird. Der Blog-Beitrag ist länger und beschreibt auch, wie alle SSL-Verbindungen hergestellt werden. Aber ich glaube, dass die Befehle, die ich unten gepostet habe und die ich aus seinem Beitrag gezogen habe, Ihnen helfen werden, das Problem zu lösen, das Sie haben.

Zuerst müssen wir HTTP.SYS auf Kernelebene mitteilen, dass es in Ordnung ist, alle mit dieser URL sprechen zu lassen, indem Sie eine "URL-Reservierung" vornehmen. An einer administrativen Eingabeaufforderung:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

Als nächstes muss ich IIS Express über die Windows-Firewall zulassen, da ich von außen mit IIS Express kommunizieren möchte (Leute in meinem Netzwerk usw. Nicht nur localhost). Ich kann das grafisch unter Windows machen oder Folgendes eingeben:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Möglicherweise benötigen Sie nicht den letzten Befehl, da Sie angeben, dass Sie bereits eine Firewall-Regel erstellt haben.

jamason1983
quelle
Ich habe den ersten netsh-Befehl ausgeführt, um eine URL-Reservierung hinzuzufügen, aber dies hat nichts bewirkt (funktionierte immer noch lokal, aber nicht außerhalb meines Netzwerks). Irgendwelche anderen Ideen?
Soapergem
Das sieht nicht richtig aus. Sie sollten nicht mit http.sys herumspielen müssen, um eine tatsächliche IIS 7.5-Instanz (nicht IIS Express) über den Port weiterzuleiten.
TristanK
2
  1. (Zugriff von außerhalb Ihres Netzwerks) Viele private Internetdienstanbieter (und einige geschäftliche Internetdienstanbieter) blockieren eingehenden Datenverkehr an bestimmten Service-Ports, z. B. Port 80 oder 25. Dies dient im Allgemeinen dazu, Sie aufgrund der Bandbreitennutzung davon abzuhalten, geschäftliche Dienste auf einer privaten Leitung auszuführen. Die Alternative besteht darin, es auf einem anderen Port auszuführen (siehe unten).

  2. (Zugriff von innerhalb Ihres Netzwerks) Die Situation, die Sie beschreiben, klingt wie Haarnadel-NAT. Hier ist eine gute allgemeine Übersicht über Hairpin NAT . Sie müssen Ihrem Router NAT-Regeln hinzufügen, damit der Datenverkehr immer für Ihre externe IP-Adresse bestimmt wird. Port 80 wird über Ihren Router und nicht direkt von Host zu Host in Ihrem Netzwerk übertragen. Vorsichtsmaßnahme: Ihr Router ist möglicherweise nicht in der Lage, dies zu tun.

  3. Ändern Sie die Portbindung in IIS und starten Sie die Website neu.

Joel E Salas
quelle
Ich habe IIS eine Bindung hinzugefügt, damit es auf Port 8080 funktioniert. Auch dies funktioniert lokal. So 192.168.1.102:8080/index.php funktioniert. Ich habe der Windows-Firewall für Port 8080 auch eine eingehende Regel hinzugefügt, die jedoch außerhalb meines Netzwerks immer noch nicht funktioniert. Ich habe versucht, meinem Linksys WRT54G2-Router NAT-Regeln hinzuzufügen, und die Hilfe, die ich online gefunden habe, besagte, dass dies das Einrichten der "Port Triggering" -Optionen beinhalten würde. Ich habe das eingerichtet, aber immer noch ... keine Würfel. Irgendwelche anderen Vorschläge?
Soapergem
1
Wenn Sie intern darauf zugreifen können, ist die Windows-Firewall nicht Ihr Problem. Port-Triggerung ist nicht das, was Sie wollen. Sie werden die Portweiterleitung verwenden (sofern Ihr Router dies unterstützt). Leiten Sie den Datenverkehr auf Port 8080 auf der externen Schnittstelle Ihres Routers an 192.168.1.102:8080 weiter
Joel E Salas
Ich habe das bereits getan (Portweiterleitung an beiden Ports 80 und 8080), BEVOR ich die Frage gestellt habe. Anscheinend fehlt mir immer noch etwas.
Soapergem
Verfügt der Router über tatsächliche Firewall-Regeln (abgesehen von NAT-Regeln), die den Datenverkehr blockieren könnten? Richten Sie nach Möglichkeit eine Box mit pfSense ein, die Sie als Router für Debugging-Zwecke verwenden können. Ihr Router (der nicht für Hosting-Dienste ausgelegt ist) ist mit ziemlicher Sicherheit die Ursache für Ihre Probleme.
Joel E Salas
Es sieht so aus, als hätten Sie auf IIS-Ebene nichts falsch gemacht. Der Router ist nur nicht intuitiv / Ihr ISP blockiert Sie. Es ist auch möglich, dass Ihre IP-Adresse doppelt indirekt ist. Überprüfen Sie die Vorstellung des Routers von der externen IP.
TristanK
0

Ich hatte das gleiche Problem. Die Windows-Firewall blockiert den Zugriff. Schalten Sie es aus und überprüfen Sie es erneut. Ich vermute, dass es funktionieren wird.

Larry Fortna
quelle
1
Es ist im Allgemeinen keine gute Lösung, eine Firewall einfach auszuschalten.
user9517
Fügen Sie stattdessen Ausnahmen für die Ports 80 und 443 hinzu.
Najeeb