Открыть сервисСервис

ngrok — сервис туннелирования и интроспекции

ngrok — это платный и бесплатный сервис (коммерческая компания с одноимённым продуктом), предоставляющий инструменты для создания защищённых туннелей от локальных серверов к публичному интернету, а также для интроспекции трафика. Программное обеспечение ngrok позволяет разработчикам временно вывести локально запущенное веб-приложение в интернет без настройки файрволов, прокси или статического IP-адреса. Основные сценарии использования — отладка вебхуков (Stripe, Telegram, GitHub), демонстрация прототипов, тестирование IoT-устройств и мобильных приложений.

История

ngrok был создан американским программистом Аланом Шакеттом (Alan Shakkottis) и впервые представлен в 2015 году. Изначально проект представлял собой консольную утилиту, быстро завоевавшую популярность среди веб-разработчиков благодаря простоте запуска: одна команда в терминале давала публичный HTTPS-адрес, ведущий на локальный порт.

В 2022 году ngrok привлёк инвестиции серии B на сумму около 50 млн долларов, оценив компанию примерно в 1,5 млрд долларов. К этому моменту сервис использовался тысячами компаний, включая крупные технологические корпорации. В 2023 году компания запустила платформу интроспекции трафика и расширила функциональность до полноценного API-шлюза.

Принцип работы

Архитектура ngrok основана на модели «обратного прокси с исходящим подключением». Клиентская утилита запускается на локальной машине и инициирует исходящее соединение к серверам ngrok по протоколу TLS. Сервис создаёт временный публичный поддомен вида https://random-name.ngrok-free.app` и направляет входящие HTTP(S)-запросы через установленный туннель обратно на локальный порт.

Такой подход решает проблему NAT и файрволов: локальному серверу не требуется белый IP-адрес или проброс портов, достаточно исходящего доступа в интернет.

Ключевые возможности

  • Инспекция запросов — веб-интерфейс и CLI показывают заголовки, тело, параметры каждого запроса, что упрощает отладку вебхуков.
  • Постоянные домены — на платных тарифах можно закрепить собственный поддомен или домен.
  • IP-фильтрация — ограничение доступа к туннелю по белому списку адресов.
  • TCP-туннели — проброс любых TCP-протоколов (SSH, базы данных, RDP).
  • WebSockets — поддержка двусторонних соединений.
  • OAuth-аутентификация — защита туннеля перед пропуском запроса к локальному приложению.

Тарифы

ТарифСтоимостьОсновные ограничения
Free0 $1 онлайн-туннель, домен *.ngrok-free.app, ограничение на количество запросов в месяц, обязательная страница предупреждения (интерстишл)
Personal~8 $/мес3 туннеля, постоянные домены, без интерстишл
Pro~20 $/месБольше туннелей, IP-фильтры, расширенная интроспекция
EnterpriseиндивидуальноSSO, SLA, выделенные адреса

На бесплатном тарифе с 2022 года действует ограничение: при каждом обращении к туннелю показывается страница-предупреждение о переходе на сторонний сервис, которую можно пропустить по кнопке.

Применение

Отладка вебхуков

Платёжные и мессенджер-сервисы (Stripe, Telegram, PayPal, GitHub) отправляют уведомления на публичный HTTPS-адрес. Для локальной разработки ngrok выступает посредником, пересылая запросы на localhost и записывая их для последующего анализа.

Тестирование мобильных приложений

Мобильный клиент, работающий в эмуляторе или на устройстве, может обращаться к API, запущенному на ноутбуке разработчика, через публичный адрес ngrok.

Демонстрация прототипов

Вместо деплоя на тестовый сервер разработчик запускает локальный сервер и предоставляет заказчику ссылку ngrok для живой демонстрации.

IoT и встроенные системы

TCP-туннели ngrok используются для удалённого доступа к устройствам, находящимся за NAT (например, к Raspberry Pi в локальной сети).

Безопасность

Публичный адрес ngrok теоретически доступен любому, кто его знает, поэтому сервис рекомендует включать аутентификацию (basic auth или OAuth) на уровне туннеля. Компания предоставляет возможность блокировать запросы из определённых регионов и ограничивать источники по IP. Важно отметить, что ngrok активно используется не только разработчиками: злоумышленники применяют сервис для фишинга и обхода фильтров почтовых сервисов, из-за чего часть корпоративных систем и почтовых провайдеров блокирует исходящие соединения с доменов .ngrok.app и .ngrok.io.

Альтернативы

Среди аналогов ngrok — Cloudflare Tunnel (бывший Argo Tunnel), localtunnel, bore, pagekite, Serveo, а также самописные решения на базе SSH-туннелей с посредничеством VPS.

Источники

  • Документация ngrok (ngrok.com/docs)
  • Crunchbase — карточка компании ngrok, Inc.
  • Hacker News — обзоры и обсуждения ngrok
  • Alan Shakkottis — интервью и технические доклады
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru