Подтвердить что ты не робот

Как работает ngrok за брандмауэром?

Ngrok (https://ngrok.com/) позволит вам открывать локальные порты и сервисы во всемирную паутину через пересылку. Но если я открою порт 80 на своей локальной машине следующим образом:

ngrok 80

и я вернусь:

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

Я понимаю, что любые запросы http://3a4bfceb.ngrok.com будут отправляться на мой локальный компьютер на порт 80, но что если я сижу за NAT/Firewall, который блокирует входящий трафик (очень распространенный сценарий). Ngrok инициирует запросы опроса, чтобы определить, когда данные были получены?

4b9b3361

Ответ 1

Поскольку туннель ngrok всегда инициируется на стороне клиента сначала, так он может согласовать безопасный канал с сервером. Это действительно гладкое решение для решения обычных конфигураций брандмауэров.

Это внутренне выполняется клиентом, открывающим одно долгое время tcp-соединение, где многие логические сокеты создаются в одном физическом соединении сокета. Этот метод называется мультиплексирование потоков. При такой настройке нет необходимости в каком-либо опросе, поскольку клиент и сервер все еще имеют полностью двунаправленную связь.

Затем клиент и сервер остаются в живых с помощью механизма сердечного ритма, который гарантирует, что соединение открыто и работает надлежащим образом, и даже снова подключится к ошибке или потерянному/закрытому соединению.

Смотрите это для получения дополнительной информации: Руководство для разработчиков на github.com