Tentei, sem sucesso, acessar meu sistema pela internet, registrando DNS dinâmico no No-IP, encaminhando portas no meu roteador TP-Link etc. Você pode encontrar mais informações aqui .
Mas sem todas essas dores de cabeça eu consegui acessar o Apache httpd rodando no meu sistema com o ngrok usando um único comando,
ngrok http http://localhost:8080
E posso acessá-lo com a URL abaixo (a URL pode não funcionar se eu interromper a sessão do terminal, mas, novamente, posso obter uma nova URL executando o mesmo comando).
https://ce41-103-228-222-115.ngrok-free.app
Agora, o que não estou entendendo é que, mesmo com todo o encaminhamento de porta necessário, IP público dinâmico e DNS dinâmico, não consegui acessar meu sistema. Como o ngrok conseguiu isso sem nenhum deles?
Alguém com bons conhecimentos de rede pode me ajudar a entender isso?
Obrigado.
O Ngrok não chega ao seu sistema – é o seu sistema que chega ao Ngrok.
Embora o NAT (tanto o do seu roteador quanto o do seu ISP) geralmente impeça que você receba novas conexões de entrada, ele rastreia todas as conexões de saída para que os pacotes de resposta pertencentes a uma conexão ativa ainda possam ser roteados (que é como, por exemplo, você ainda consegue receber respostas HTTP ou SSH para servidores externos).
Portanto, o
ngrok
programa "agente" mantém uma conexão de saída persistente com um dos servidores de retransmissão do Ngrok e, enquanto essa conexão TCP estiver aberta, o servidor de retransmissão pode enviar dados por ela.O mesmo princípio se aplica aos
-R
túneis SSH (na verdade, o Ngrok também tem um frontend SSH onde você podessh ngrok -R ...
configurar um túnel sem usar o programa dedicado), bem como a todas as conexões VPN – pelo menos enquanto o cliente VPN estiver configurado para cutucar o servidor periodicamente para que os gateways NAT não esqueçam a conexão.