linux - tutorial - ¿Cómo funciona ngrok detrás de un firewall?
tunnel localhost to remote (1)
Se supone que Ngrok ( https://ngrok.com/ ) le permite exponer los puertos y servicios locales a la red mundial mediante el reenvío. Pero si abro el puerto 80 en mi máquina local de esta manera:
ngrok 80
y vuelvo:
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
Entiendo que cualquier solicitud a http://3a4bfceb.ngrok.com irá a mi máquina local en el puerto 80, pero qué ocurre si estoy sentado detrás de un NAT / Firewall que está bloqueando el tráfico entrante (un escenario muy común). ¿Inicia ngrok las solicitudes de sondeo para determinar cuándo se han recibido los datos?
Como un túnel ngrok siempre se inicia primero en el lado del cliente , así es como puede negociar un canal seguro con el servidor. Es una solución realmente elegante para evitar las configuraciones de firewall convencionales.
Esto se logra internamente por el cliente abriendo una conexión de larga duración tcp donde muchos sockets lógicos se crean dentro de una conexión de socket físico. Esta técnica se llama multiplexación de flujo . Con esta configuración en su lugar no hay necesidad de ningún tipo de sondeo porque el cliente y el servidor aún tienen comunicación bidireccional en su lugar.
El cliente y el servidor se mantienen con un mecanismo de latido que asegura que la conexión esté abierta y funcione correctamente e incluso se vuelva a conectar por error o una conexión perdida / cerrada.
Consulte esto para obtener más información: Guía del desarrollador en github.com