以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

トンネリングサービスのngrokを使ってみた

f:id:abyssluke:20150325164634j:plain:w240:leftファイアウォール下でも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で終了可能。

アクセスしてみる

f:id:abyssluke:20150325164843p:plain:w240:leftForwardingにあるURLにアクセスするとngrokのトンネルを経由して(クライアントソフトをインストールした)サーバーのhttpdに接続される。HTTPSでもアクセスできる(実際、画像のようにHTTPSを有効化していないnginxにHTTPS経由でアクセスしている)。なお、アクセス元のIPはHTTPヘッダーのX-Real-IPに格納される。

Web Interfaceを使ってみる

f:id:abyssluke:20150325164903j:plain:w320:left127.0.0.1:4040にアクセスするとアクセス状況の監視もできる。リクエストの内容・返答も確認できるので、どういう条件でエラーになるのかや、JSONの文法チェック、リクエストの再現(Replay)?も可能。

会員登録をすると

ngrokは会員登録不要で利用できるが、無料の会員登録をすると以下の特典がある。
サブドメイン(*.ngrok.comの*の部分)を任意に指定できるようになる
TCPトンネリングが使える
・パスワードによるアクセス制限(HTTP認証)ができる
複数のトンネルを掘れる
また何ドルでもいいので課金するとサブドメインの予約や、自分が所持するドメインをngrokで利用できるようになる。

開発者向けとはいえ使えそうかも

今回動作確認にLXC上のUbuntuを使用した。通常ならホスト側でポートフォワーディング設定かプロキシを建てるなりしないと外部からコンテナ内にはアクセスできないが、専用クライアントソフトを利用してngrokの中継サーバー〜コンテナ間にトンネルを構築することで容易にコンテナ内にアクセスできるようになるので、いろいろと捗りそう感。