Configurei um servidor Apache HTTP no meu Macbook, apenas para ter acesso a todas as funcionalidades do PHP enquanto aprendo a linguagem. Não tenho um nome de domínio registrado ou acesso consistente à rede, portanto a ideia de hospedar um site real neste servidor não é viável; Só estou fazendo isso para fins de aprendizado.
De qualquer forma, eu estava me perguntando uma coisa. Percebi que quando insiro meu endereço IP privado em um navegador da Web (não o endereço de loopback, mas o endereço real atribuído pelo DHCP), posso acessar páginas da Web hospedadas pelo meu servidor, o que acho que significa que posso acessá-lo de fora do meu computador . No entanto, quando insiro meu endereço IP público, recebo um tempo limite de rede, o que, imagino, significa que não consigo acessar meu servidor web de fora da rede local (a menos que a conexão seja muito lenta).
Eu estou me perguntando por que isso acontece. Existe uma camada de segurança configurada que impede que pessoas acessem computadores dentro de uma LAN de fora?
Responder1
Pode haver três saltos de bloqueio na linha, começando no seu computador:
seu sistema operacional pode ter um firewall configurado e bloqueando solicitações recebidas. Você pode verificar isso usando uma máquina diferente na mesma sub-rede/sub-rede diferente, mas ainda atrás do seu roteador doméstico. Não estou familiarizado com o MAC OS, então não posso lhe dizer como configurar o firewall.
Seu roteador doméstico (ou a maioria dos roteadores Wi-Fi) aos quais você se conecta usaNATpara "ocultar" a sub-rede por trás dela e permitir que seus vários dispositivos se comuniquem no único endereço IP global que você obtém do ISP. Se você fizer uma solicitação para um servidor remoto da LAN, de qualquer dispositivo, o remoto verá que a solicitação foi originada pelo seu roteador.Se você fizer uma solicitação externa ao seu endereço IP público, você estará realmente se dirigindo ao seu roteador.Se você deseja que todas as solicitações HTTP endereçadas ao seu roteador sejam atendidas pelo seu laptop por trás dele, você deve adicionar umencaminhamento de portaregra no menu do roteador para o endereço IP do laptop e a porta 80 (porta HTTP padrão) ou porta 443 para HTTPS.
Hoje em dia é cada vez mais comum que os ISPs nem sequer forneçam um endereço IP público (globalmente roteável). O ISP também usa NAT (para salvar endereços IPv4 globais), o endereço IP externo do seu roteador vem da sub-rede privada do seu ISP. Isso exigiria o registro de uma regra de encaminhamento de porta no roteador do ISP, o que eles não farão por você. Você não pode acessar seu laptop pela Internet neste caso.
Responder2
A razão pela qual isso acontece é devido às traduções NAT.
Quando você se conecta à Internet, seu ISP fornece um endereço IP público para que você possa se comunicar com a Internet.
Quando alguém na Internet deseja acessar seu servidor web e insere o endereço IP público, o roteador precisa saber para onde na rede a solicitação está indo. Isso é chamado de traduções NAT. Isso é feito configurando um mapeamento de porta.
Os sites usam tráfego HTTP, cujo padrão é a porta 80, então você precisaria criar uma regra no roteador para informar que a porta 80 precisa ser encaminhada para o endereço IP interno. Feito isso, e alguém de fora inserir seu endereço IP público no navegador, seu roteador agora saberá que precisa encaminhar a solicitação para o seu macbook.
Agora, há um acréscimo à questão. Se você configurar o encaminhamento de porta, a maioria dos roteadores não entenderá que seu endereço IP público é seu, então provavelmente você ainda não conseguirá acessar seu site a partir de seu próprio endereço IP público.
Seu macbook envia a solicitação para o roteador, que a envia para o ISP, o ISP a envia de volta e o roteador não está esperando, então ele ignora a solicitação, resultando em um tempo limite porque não consegue se conectar a si mesmo.