ファイアウォール下でもHTTP等をトンネリングして外部からアクセスできるようにするngrokというサービスを使ってみた。どちらかというとWebアプリケーション等の開発者向けで、用途としてはローカルで開発中のWebアプリケーション等の動作検証で外部からアクセスしてもらえるようにする、などがある。続きを読むから。
クライアントソフトのダウンロード&起動
公式サイトからプラットフォームに応じたクライアントソフトをダウンロードし、解凍する。
Linuxの場合は実行ファイル(statically linked)が展開されるので、httpdのポートを指定して実行すればOK。
$ unzip ngrok.zip $ ./ngrok 80
起動後の画面
起動すると以下の画面が表示される。
ngrok (Ctrl+C to quit) Tunnel Status online Version 1.7/1.7 Forwarding http://********.ngrok.com -> 127.0.0.1:80 Forwarding https://********.ngrok.com -> 127.0.0.1:80 Web Interface 127.0.0.1:4040 # Conn 0 Avg Conn Time 0.00ms
Tunnel Statusがonlineであればサーバーとngrok間のトンネルが開通している。
Ctrl+Cで終了可能。
アクセスしてみる
ForwardingにあるURLにアクセスするとngrokのトンネルを経由して(クライアントソフトをインストールした)サーバーのhttpdに接続される。HTTPSでもアクセスできる(実際、画像のようにHTTPSを有効化していないnginxにHTTPS経由でアクセスしている)。なお、アクセス元のIPはHTTPヘッダーのX-Real-IPに格納される。
Web Interfaceを使ってみる
127.0.0.1:4040にアクセスするとアクセス状況の監視もできる。リクエストの内容・返答も確認できるので、どういう条件でエラーになるのかや、JSONの文法チェック、リクエストの再現(Replay)?も可能。