ngrokトンネルのリージョンを選択する

2016.06.05

ども、大瀧です。
ローカルホストのサービスを手軽にインターネットに公開できるngrok複数のリージョンでホストされるようになったので、試してみた様子をレポートします。

ngrokとは

ngrokは、ファイヤーウォールやNATによってインターネットから直接アクセスできないホストで実行するWebアプリケーションを、トンネルサーバー経由でインターネットに公開することができます。

具体的には、ローカルホストで実行するCLIツールとXXXX.ngrok.comでアクセスできるHTTP/TCPトンネルをホストするトンネルサーバーで構成されるサービスです。開発環境やデモ用途として、とても便利な仕組みですね。

ngrok

従来はトンネルサーバーが北米のみで提供されていたため、日本で実行するとトラフィックは毎回太平洋を往復していました。先月末にグローバルリージョンがアナウンスされ、ヨーロッパ、アジア、オーストラリアリージョンに拡充されました。

リージョンの指定方法

リージョンを指定するためには、ngrokコマンドに-regionオプションを付与します。リージョンとオプションとの対応は以下です。

  • United States(デフォルト): us
  • Europe: eu
  • Asia Pacific: ap
  • Australia: au

では、United StatesリージョンとAsia Pacificリージョンを指定した場合で、トンネルサーバーまでのレイテンシを測ってみます。まずはデフォルトのUSから。

$ ngrok http 192.168.99.100:80
<ngrokのコンソールが表示、URLを確認する>
$ ping 7e152b2b.ngrok.io
PING 7e152b2b.ngrok.io (173.255.197.142): 56 data bytes
64 bytes from 173.255.197.142: icmp_seq=0 ttl=47 time=150.654 ms
64 bytes from 173.255.197.142: icmp_seq=1 ttl=47 time=150.016 ms
64 bytes from 173.255.197.142: icmp_seq=2 ttl=47 time=147.429 ms
64 bytes from 173.255.197.142: icmp_seq=3 ttl=47 time=146.592 ms
64 bytes from 173.255.197.142: icmp_seq=4 ttl=47 time=152.962 ms
^C
--- 7e152b2b.ngrok.io ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 146.592/149.531/152.962/2.295 ms
$

レイテンシは概ね150ms程度でしょうか。続いて-regionオプションにapを指定し、アジアリージョンで試してみます。

$ ngrok http -region=ap 192.168.99.100:80
<ngrokのコンソールが表示、URLを確認する>
$ ping 3f98daf3.ap.ngrok.io
PING 3f98daf3.ap.ngrok.io (52.76.246.79): 56 data bytes
64 bytes from 52.76.246.79: icmp_seq=0 ttl=51 time=89.022 ms
64 bytes from 52.76.246.79: icmp_seq=1 ttl=51 time=91.187 ms
64 bytes from 52.76.246.79: icmp_seq=2 ttl=51 time=89.184 ms
64 bytes from 52.76.246.79: icmp_seq=3 ttl=51 time=91.275 ms
64 bytes from 52.76.246.79: icmp_seq=4 ttl=51 time=88.284 ms
^C
--- 3f98daf3.ap.ngrok.io ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 88.284/89.790/91.275/1.215 ms
$

こちらは100ms弱と、レイテンシが小さいことがわかりますね!トンネルサーバーとしての仕様に特に差異はなさそうですので、今後は積極的にアジアリージョンを使ってよさそうです。ngrokの設定ファイルに記述しておくと、-regionオプションを省略することもできます。

~/.ngrok2/ngrok.yml

region: ap

参考 ngrokのデータセンター

割り当てられるグローバルIPを逆引きすると、ngrokがホストされているデータセンターが推測できます。

$ host 173.255.197.142
142.197.255.173.in-addr.arpa domain name pointer li207-142.members.linode.com.
$ host 52.76.246.79
79.246.76.52.in-addr.arpa domain name pointer ec2-52-76-246-79.ap-southeast-1.compute.amazonaws.com.
$ host 52.29.162.141
141.162.29.52.in-addr.arpa domain name pointer ec2-52-29-162-141.eu-central-1.compute.amazonaws.com.
$ host 52.64.70.216
216.70.64.52.in-addr.arpa domain name pointer ec2-52-64-70-216.ap-southeast-2.compute.amazonaws.com.

USはLinode、それ以外はAWSであることがわかりますね。ngrokのドキュメントによると、ヨーロッパリージョンはフランクフルトからイギリスに移動するかも。とあるので、AWSロンドンリージョンのオープンに合わせて動きがありそうですね。

まとめ

ngrokに新しく追加された複数リージョンサポートの様子をレポートしました。アジアは現在はシンガポールリージョンでの提供なので、東京リージョンをリクエストするともしかしたら実現されるかもしれないですね。