Comment rendre IIS fonctionnel et accessible en dehors de mon réseau derrière un routeur? [fermé]

9

Ma machine exécute Windows 7 Ultimate. Voici ce que j'ai fait (avec succès) jusqu'à présent:

  1. Installé IIS 7.5 avec PHP sur FastCGI
  2. Je l'ai fait fonctionner! Quand je vais sur http: //localhost/index.php , mes scripts PHP fonctionnent bien.
  3. Exécutez ipconfig pour découvrir que mon adresse IP locale est 192.168.1.102. J'ai confirmé que http://192.168.1.102/index.php fonctionne exactement comme l'adresse localhost ci-dessus.
  4. Je suis allé dans l'administration de mon routeur (j'ai un Linksys WRT54G2) et j'ai configuré la redirection de port sur le port 80 à 192.168.1.102. Le port 80 est maintenant transféré vers ma machine.
  5. Configurez une règle entrante dans le pare-feu Windows pour autoriser toutes les activités sur le port 80.
  6. J'ai découvert quelle était mon adresse IP externe de Google. Appelons cela XXX.XX.XX.XX.

Cependant, lorsque j'essaie d'accéder à http: //XXX.XX.XX.XX/index.php depuis ma propre machine, ou depuis un ordinateur éloigné et non sur mon réseau, de toute façon ... je ne reçois rien. Il essaie de se connecter pendant un certain temps (sans succès) mais finit par abandonner.

Voici ce que je me demande:

  1. Qu'est-ce que je rate? Qu'est-ce que j'ai oublié / oublié? Comment faire en sorte que cela fonctionne et soit accessible en dehors de mon propre réseau local?
  2. En supposant que cela fonctionne, comment puis-je utiliser un port autre que le port 80? Quelles modifications devrais-je apporter (par exemple, IIS, pare-feu Windows, administration du routeur, etc.) pour que cela soit possible?

Merci d'avance!

savon
la source
1
voir si votre port est transféré avec succès ici yougetsignal.com/tools/open-ports
smohamed

Réponses:

5

Cela ressemble à un problème HTTP.SYS que vous rencontrez.

Vous trouverez ci-dessous un extrait du blog de Scott Hanselman qui décrit comment exposer IISExpress en dehors de localhost. Le billet de blog est plus long et décrit également comment câbler SSL. Mais je crois que les commandes que j'ai postées ci-dessous et que j'ai extraites de son message vous aideront à résoudre le problème que vous rencontrez.

Tout d'abord, nous devons dire à HTTP.SYS au niveau du noyau qu'il est OK de laisser tout le monde parler à cette URL en faisant une "Réservation d'URL". À partir d'une invite de commande d'administration:

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

Ensuite, comme je veux pouvoir parler à IIS Express de l'extérieur (personnes sur mon réseau, etc. Pas seulement localhost), je dois autoriser IIS Express via le pare-feu Windows. Je peux le faire graphiquement depuis Windows, ou taper:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Il se peut que vous n'ayez pas besoin de la dernière commande car vous déclarez que vous avez déjà créé une règle de pare-feu.

jamason1983
la source
J'ai exécuté la première commande netsh pour ajouter une réservation d'URL, mais cela n'a rien fait (fonctionnait toujours localement, mais pas en dehors de mon réseau). D'autres idées?
soapergem
Cela ne semble pas correct. Vous ne devriez pas avoir besoin de fouiner avec http.sys pour obtenir une véritable instance IIS 7.5 (pas IIS Express) redirigée sur le port.
TristanK
2
  1. (Accès depuis l'extérieur de votre réseau) De nombreux FAI résidentiels (et certains FAI professionnels) bloquent le trafic entrant sur certains ports de service, comme le port 80 ou 25. Ceci est généralement pour vous empêcher d'exécuter des services commerciaux sur une ligne résidentielle en raison de l'utilisation de la bande passante. L'alternative est de l'exécuter sur un autre port (voir ci-dessous).

  2. (Accès depuis l'intérieur de votre réseau) La situation que vous décrivez ressemble à un NAT en épingle à cheveux. Voici un bon aperçu de haut niveau de Hairpin NAT . Vous devrez ajouter des règles NAT à votre routeur pour toujours faire en sorte que le trafic destiné à votre IP externe, le port 80 passe par votre routeur et non directement d'hôte à hôte à l'intérieur de votre réseau. Mise en garde: votre routeur peut ne pas être en mesure de le faire.

  3. Modifiez la liaison de port dans IIS, puis redémarrez le site Web.

Joel E Salas
la source
J'ai ajouté une liaison à IIS pour le faire fonctionner sur le port 8080, et encore une fois, cela fonctionne localement. Donc 192.168.1.102:8080/index.php fonctionne. J'ai également ajouté une règle entrante au pare-feu Windows pour le port 8080, mais cela ne fonctionne toujours pas en dehors de mon réseau. J'ai cherché à ajouter des règles NAT à mon routeur Linksys WRT54G2, et l'aide que j'ai trouvée en ligne a indiqué que cela impliquerait de configurer ses options de "Déclenchement de port". J'ai mis cela en place, mais toujours ... pas de dés. D'autres suggestions?
soapergem
1
Si vous pouvez y accéder en interne, le pare-feu Windows n'est pas votre problème. Le déclenchement de port n'est pas ce que vous voulez. Vous allez utiliser la redirection de port (si votre routeur le prend en charge). Transférer le trafic sur le port 8080 sur l'interface externe de votre routeur vers 192.168.1.102:8080
Joel E Salas
Je faisais déjà cela (redirection de port sur les deux ports 80 et 8080) AVANT de poser la question. Il me manque encore quelque chose, apparemment.
soapergem
Le routeur a-t-il des règles de pare-feu réelles (en dehors des règles NAT) qui pourraient bloquer le trafic? Si possible, configurez-vous une boîte exécutant pfSense à utiliser comme routeur à des fins de débogage. Votre routeur (qui n'est pas conçu pour les services d'hébergement) est presque certainement la cause de vos problèmes.
Joel E Salas
Il semble que vous n'ayez rien fait de mal au niveau IIS, c'est juste que le routeur n'est pas intuitif / votre FAI vous bloque. Il est également possible que vous pensiez que votre adresse IP est à double indirecte; vérifiez l'idée du routeur de ce qu'est l'IP externe.
TristanK
0

J'ai eu le même problème. Le pare-feu Windows bloque l'accès. Éteignez-le et vérifiez-le à nouveau. Je suppose que cela fonctionnera.

Larry Fortna
la source
2
Ce n'est généralement pas une bonne solution de désactiver simplement un pare-feu.
user9517
Ajoutez plutôt des exceptions pour les ports 80 et 443.
Najeeb