🚇

ngrokはどう動くのか?

リバーストンネルでローカルサーバーをインターネットに公開

ngrokの核心は「リバーストンネル」です。PC上のngrokエージェントがngrokクラウドサーバーにアウトバウンドTCP/TLS接続を先に確立します。ngrokクラウドが公開URL(例:abc123.ngrok.io)を割り当て、このURLへの外部HTTPリクエストをトンネル経由でローカルサーバーに転送します。ポートフォワーディングやファイアウォール設定なしでローカルサービスをインターネットに公開できる理由がまさにこれです。

構造ダイアグラム

🌍
外部クライアント
ブラウザ / Webhook
④ HTTPリクエスト
☁️
ngrok Cloud
abc123.ngrok.io
公開URL割り当て
⑤ トンネル転送
② アウトバウンドTLS
🚇 💻
マイPC(ファイアウォール内)
ngrok agent localhost:3000
ポイント: ngrok agentが<strong>先にアウトバウンド接続</strong>を開くためファイアウォール/NAT設定が不要
フロー説明
  1. ngrok http 3000 実行
  2. agentがngrokクラウドにアウトバウンドTLSトンネルを確立
  3. 公開URL(abc123.ngrok.io)割り当て
  4. 外部トラフィックが公開URLに到着
  5. ngrokクラウドがトンネル経由でローカルに転送
  6. ローカルレスポンスがトンネル経由で外部に返却

動作フロー

1

ngrokエージェントがローカルで実行(ngrok http 3000)

2

エージェントがngrokクラウドにアウトバウンドTLS接続を確立(リバーストンネル)

3

ngrokクラウドが公開URLを割り当て(abc123.ngrok.io)

4

外部クライアントが公開URLにHTTPリクエストを送信

5

ngrokクラウドがトンネル経由でリクエストをローカルサーバーに転送

6

ローカルサーバーの応答がトンネルを通じて外部クライアントに返却

メリット

  • ファイアウォール/NAT背後でも動作
  • 公開URLを即時生成
  • HTTPS自動サポート
  • ポートフォワーディング不要

デメリット

  • ngrokクラウドへの依存(単一障害点)
  • 無料プランの制限(セッション時間、帯域幅)
  • レイテンシー追加(クラウド経由)
  • 本番用途には不適合

ユースケース

Webhookローカル開発/デバッグ モバイルアプリからのローカルAPIテスト デモ/プレゼンテーション IoTデバイスへのリモートアクセス