Come posso rendere IIS funzionante e accessibile al di fuori della mia rete dietro un router? [chiuso]


9

La mia macchina esegue Windows 7 Ultimate. Ecco cosa ho fatto (con successo) finora:

  1. Installato IIS 7.5 con PHP su FastCGI
  2. Ha funzionato! Quando vado su http: //localhost/index.php , i miei script PHP funzionano bene.
  3. Ho eseguito ipconfig per scoprire che il mio indirizzo IP locale è 192.168.1.102. Ho confermato che http://192.168.1.102/index.php funziona esattamente come l'indirizzo localhost sopra.
  4. Sono andato nell'amministrazione del mio router (ho un Linksys WRT54G2) e ho impostato il port forwarding sulla porta 80 a 192.168.1.102. Ora la porta 80 viene inoltrata alla mia macchina.
  5. Impostare una regola in entrata in Windows Firewall per consentire tutte le attività sulla porta 80.
  6. Scopri qual è il mio indirizzo IP esterno da Google. Chiamiamolo XXX.XX.XX.XX.

Tuttavia, quando provo ad andare su http: //XXX.XX.XX.XX/index.php dalla mia macchina, o da un computer lontano e non sulla mia rete, in entrambi i casi ... non ottengo nulla. Cerca di connettersi per un po '(senza successo) ma alla fine si arrende.

Ecco cosa mi chiedo:

  1. Cosa mi sto perdendo? Cosa ho dimenticato / trascurato? Come faccio a farlo funzionare e accessibile al di fuori della mia rete locale?
  2. Supponendo che funzioni correttamente, come posso quindi utilizzare una porta diversa dalla porta 80? Quali modifiche dovrei fare (ad es. IIS, Windows Firewall, amministrazione del router, ecc.) Per renderlo possibile?

Grazie mille in anticipo!


1
vedi se la tua porta viene inoltrata correttamente qui yougetsignal.com/tools/open-ports
smohamed

Risposte:


5

Sembra un problema HTTP.SYS che stai riscontrando.

Di seguito è riportato un estratto dal blog di Scott Hanselman che descrive come esporre IISExpress al di fuori di localhost. Il post sul blog è più lungo e descrive anche come collegare tutti i SSL. Ma credo che i comandi che ho pubblicato di seguito che ho estratto dal suo post ti aiuteranno a risolvere il problema che stai riscontrando.

Innanzitutto, dobbiamo dire a HTTP.SYS a livello di kernel che è OK lasciare che tutti parlino a questo URL effettuando una "prenotazione URL". Da un prompt dei comandi amministrativo:

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

Quindi, poiché desidero poter parlare con IIS Express dall'esterno (persone sulla mia rete, ecc. Non solo localhost), devo consentire a IIS Express tramite Windows Firewall. Posso farlo graficamente da Windows o digitare:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Potrebbe non essere necessario l'ultimo comando poiché dichiari di aver già creato una regola firewall.


Ho eseguito il primo comando netsh per aggiungere una prenotazione URL, ma questo non ha fatto nulla (funzionava ancora localmente, ma non al di fuori della mia rete). Altre idee?
soapergem,

Questo non sembra giusto. Non dovresti avere bisogno di andare in giro con http.sys per ottenere una vera istanza di IIS 7.5 (non IIS Express) inoltrata alla porta.
TristanK,

2
  1. (Accesso dall'esterno della rete) Molti ISP residenziali (e alcuni ISP aziendali) bloccano il traffico in entrata su determinate porte di servizio, come la porta 80 o 25. In genere ciò impedisce di eseguire servizi di business su una linea residenziale a causa dell'utilizzo della larghezza di banda. L'alternativa è eseguirlo su un'altra porta (vedi sotto).

  2. (Accesso dall'interno della rete) La situazione che stai descrivendo suona come NAT tornante. Ecco una buona panoramica di alto livello di Hairpin NAT . Dovrai aggiungere regole NAT al tuo router per rendere sempre il traffico destinato al tuo IP esterno, la porta 80 passa attraverso il tuo router e non direttamente dall'host all'host all'interno della tua rete. Avvertenza: il router potrebbe non essere in grado di farlo.

  3. Modificare l' associazione delle porte in IIS, quindi riavviare il sito Web.


Ho aggiunto un binding a IIS per farlo funzionare sulla porta 8080 e, di nuovo, questo funziona localmente. Quindi 192.168.1.102:8080/index.php funziona. Ho anche aggiunto una regola in entrata a Windows Firewall per la porta 8080, tuttavia non funziona ancora al di fuori della mia rete. Ho cercato di aggiungere regole NAT al mio router Linksys WRT54G2, e l'aiuto che ho trovato online ha detto che questo avrebbe comportato la configurazione delle sue opzioni "Port Triggering". L'ho preparato, ma comunque ... niente dadi. Altri suggerimenti?
soapergem,

1
Se puoi accedervi internamente, Windows Firewall non è il tuo problema. Il trigger delle porte non è ciò che desideri. Utilizzerai il port forwarding (se il tuo router lo supporta). Inoltra il traffico sulla porta 8080 sull'interfaccia esterna del router a 192.168.1.102:8080
Joel E Salas,

Lo stavo già facendo (Port Forwarding su entrambe le porte 80 e 8080) PRIMA di porre la domanda. Mi manca ancora qualcosa, a quanto pare.
soapergem,

Il router ha delle regole firewall effettive (oltre alle regole NAT) che potrebbero bloccare il traffico? Se possibile, imposta una casella con pfSense da utilizzare come router per scopi di debug. Il tuo router (che non è progettato per i servizi di hosting) è quasi sicuramente la causa dei tuoi guai.
Joel E Salas,

Sembra che tu non abbia fatto nulla di male a livello di IIS, è solo che il router non è intuitivo / il tuo ISP ti sta bloccando. È anche possibile che tu pensi che il tuo IP sia doppio indiretto; controlla l'idea del router su quale sia l'IP esterno.
TristanK,

0

Ho avuto lo stesso problema. Windows Firewall sta bloccando l'accesso. Spegnilo e ricontrolla. La mia ipotesi è che funzionerà.


2
In genere non è una buona soluzione disattivare solo un firewall.
user9517

Aggiungere invece le eccezioni per le porte 80 e 443.
Najeeb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.