web-dev-qa-db-fra.com

Comment ngrok fonctionne-t-il derrière un pare-feu?

Ngrok ( https://ngrok.com/ ) est censé vous permettre d'exposer les ports et services locaux au World Wide Web par le biais de la redirection. Mais si j'ouvre le port 80 sur ma machine locale comme ceci:

ngrok 80

et je reviens:

Tunnel Status                 online
Version                       1.3/1.3
Forwarding                    http://3a4bfceb.ngrok.com -> 127.0.0.1:80
Forwarding                    https://3a4bfceb.ngrok.com -> 127.0.0.1:80
Web Interface                 http://127.0.0.1:4040
# Conn                        0
Avg Conn Time                 0.00ms

Je comprends que toutes les demandes de http://3a4bfceb.ngrok.com iront à ma machine locale sur le port 80 mais que se passe-t-il si je suis assis derrière un NAT/pare-feu qui bloque le trafic entrant (un très commun scénario). Ngrok lance-t-il des demandes d'interrogation pour déterminer quand les données ont été reçues?

37
asolberg

Comme un tunnel ngrok est toujours toujours initié côté client , c'est ainsi qu'il peut négocier un canal sécurisé avec le serveur. C'est une solution très simple pour contourner les configurations de pare-feu conventionnelles.

Ceci est accompli en interne par le client ouvrant une seule connexion TCP à longue durée de vie où de nombreux sockets logiques sont créés dans une connexion de socket physique. Cette technique est appelée multiplexage de flux . Avec cette configuration en place, il n'y a aucun besoin d'interrogation car le client et le serveur ont toujours une communication bidirectionnelle en place.

Le client et le serveur restent alors en vie avec un mécanisme de pulsation qui s'assure que la connexion est ouverte et fonctionne correctement et se reconnectera même en cas d'erreur ou de connexion perdue/fermée.

Voir ceci pour plus d'informations: Guide du développeur sur github.com

105
Ralph Caraveo

Vous pouvez créer un tunnel http-https-tcp de base sans authtoken. Pour les sous-domaines personnalisés et plus, vous devez obtenir un authtoken en vous inscrivant sur ngrok.com. Une fois que vous l'avez défini, il est stocké dans la configuration ngrok et utilisé pour tous les tunnels. Peu de façons:

attendre ngrok.authtoken (jeton); attendre ngrok.connect ({authtoken: token, ...});

0
Rosa Mel cacho