Como obtenho o IIS funcionando e acessível fora da minha rede atrás de um roteador? [fechadas]

9

Minha máquina está executando o Windows 7 Ultimate. Aqui está o que eu fiz (com sucesso) até agora:

  1. IIS 7.5 instalado com PHP sobre FastCGI
  2. Entendi trabalhando! Quando vou para http: //localhost/index.php , meus scripts PHP funcionam bem.
  3. Executei o ipconfig para descobrir que meu endereço IP local é 192.168.1.102. Confirmei que http://192.168.1.102/index.php funciona exatamente como o endereço do host local acima.
  4. Entrei na administração do meu roteador (eu tenho um Linksys WRT54G2) e configurei o encaminhamento de porta na porta 80 a 192.168.1.102. Agora a porta 80 está encaminhando para minha máquina.
  5. Configure uma regra de entrada no Firewall do Windows para permitir todas as atividades na porta 80.
  6. Descobri qual é o meu endereço IP externo do Google. Vamos chamá-lo de XXX.XX.XX.XX.

No entanto, quando tento acessar o http: //XXX.XX.XX.XX/index.php da minha própria máquina ou de um computador distante e não da minha rede, de qualquer maneira ... não recebo nada. Ele tenta se conectar por algum tempo (sem êxito), mas acaba desistindo.

Aqui está o que eu estou pensando:

  1. o que estou perdendo? O que eu esqueci / esqueci? Como obtenho isso funcionando e acessível fora da minha própria rede local?
  2. Supondo que eu funcione, como posso usar uma porta diferente da porta 80? Que alterações eu precisaria fazer (por exemplo, IIS, Firewall do Windows, administração de roteadores etc.) para tornar isso possível?

Muito obrigado antecipadamente!

soapergem
fonte
1
ver se a porta é encaminhado com sucesso aqui yougetsignal.com/tools/open-ports
smohamed

Respostas:

5

Isso parece um problema HTTP.SYS que você está tendo.

Abaixo está um trecho do blog de Scott Hanselman que descreve como expor o IISExpress fora do host local. A postagem do blog é mais longa, que também descreve como conectar todos os SSL. Mas acredito que os comandos que publiquei abaixo, que retirei de seu post, o ajudarão a resolver o problema que você está tendo.

Primeiro, precisamos informar ao HTTP.SYS no nível do kernel que não há problema em deixar todos falarem com esse URL fazendo uma "Reserva de URL". Em um prompt de comando administrativo:

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

Em seguida, como quero poder conversar com o IIS Express de fora (pessoas da minha rede, etc. Não apenas o host local), preciso permitir o IIS Express pelo Firewall do Windows. Eu posso fazer isso graficamente no Windows ou digite:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Você pode não precisar do último comando, pois afirma que já criou uma regra de firewall.

jamason1983
fonte
Executei o primeiro comando netsh para adicionar uma reserva de URL, mas isso não fez nada (ainda funcionava localmente, mas não fora da minha rede). Alguma outra ideia?
soapergem
Isso não parece certo. Não é necessário mexer no http.sys para obter uma instância real do IIS 7.5 (não o IIS Express) encaminhada por porta.
TristanK
2
  1. (Acesso de fora da sua rede) Muitos ISPs residenciais (e alguns ISPs comerciais) bloquearão o tráfego de entrada em determinadas portas de serviço, como as portas 80 ou 25. Isso geralmente impede que você execute serviços comerciais em uma linha residencial devido ao uso da largura de banda. A alternativa é executá-lo em outra porta (veja abaixo).

  2. (Acesso de dentro da sua rede) A situação que você está descrevendo soa como NAT em gancho de cabelo. Aqui está uma boa visão geral de alto nível do Hairpin NAT . Você precisará adicionar regras NAT ao seu roteador para fazer sempre o tráfego destinado ao seu IP externo, a porta 80 passar pelo seu roteador e não diretamente do host para o host dentro da sua rede. Advertência: Seu roteador pode não ser capaz de fazer isso.

  3. Altere a ligação da porta no IIS e reinicie o site.

Joel E Salas
fonte
Eu adicionei uma ligação ao IIS para que ele funcione na porta 8080 e, novamente, isso funciona localmente. Então, 192.168.1.102:8080/index.php funciona. Também adicionei uma regra de Entrada ao Firewall do Windows para a porta 8080, mas ainda não está funcionando fora da minha rede. Procurei adicionar regras NAT ao meu roteador Linksys WRT54G2, e a ajuda que encontrei on-line disse que isso envolveria a configuração das opções "Port Triggering". Eu configurei isso, mas ainda assim ... sem dados. Alguma outra sugestão?
soapergem
1
Se você pode acessá-lo internamente, o Firewall do Windows não é seu problema. O disparo de porta não é o que você deseja. Você usará o encaminhamento de porta (se o seu roteador suportar). Encaminhar tráfego na porta 8080 em seu roteador é interface externa para 192.168.1.102:8080
Joel E Salas
Eu já estava fazendo isso (encaminhamento de porta nas portas 80 e 8080) ANTES de fazer a pergunta. Ainda estou sentindo falta de algo, aparentemente.
soapergem
O roteador possui regras de firewall reais (além das regras NAT) que podem estar bloqueando o tráfego? Se possível, configure uma caixa executando o pfSense para usar como roteador para fins de depuração. Seu roteador (que não foi projetado para serviços de hospedagem) é quase certamente a causa de seus problemas.
Joel E Salas
Parece que você não fez nada de errado no nível do IIS, mas o roteador não é intuitivo / o seu ISP está bloqueando você. Também é possível o que você acha que seu IP é duplo indireto; verifique a ideia do roteador sobre o que é o IP externo.
TristanK
0

Eu tive o mesmo problema. O Firewall do Windows está bloqueando o acesso. Desligue e verifique novamente. Meu palpite é que funcionará.

Larry Fortna
fonte
2
Geralmente, não é uma boa solução desativar o firewall.
precisa saber é o seguinte
Adicione exceções para as portas 80 e 443.
Najeeb