"cloudpack"には"SORACOM"さんのサービスを利用した「IoTpack」という商品があります。
この商品は簡単にいえば、SORACOMのVPCと自分のVPCを"VPC Peering"で接続し、
"SORACOM Air"のSIMを利用したデバイスからの通信を、インターネットに出ることなく
自分のVPC上のサーバで処理することができるものとなっています。
ということで下記のようにIoTpackを利用して”Air SIM”のiPhoneのHTTP(S)通信が
自分のVPC上のProxyサーバ(Squid)経由でインターネットに出て行くようにしてみました。
EC2上には下記のようにSquidを用意しておきます。
(“no_cache deny all”でキャッシュしないようにしています)
$ sudo yum -y install squid ... $ sudo cat /etc/squid/squid.conf http_port 3128 visible_hostname cloudpack http_access allow all no_cache deny all $ sudo service squid start Starting squid: [ OK ]
環境はIoTpackとしてもらったので、
いきなりiPhoneからの上記のProxy用のEC2の”Private IP”にPingできてました。
さらに上述のProxyサーバを利用するには、
iPhoneのプロファイルを調整する必要があります。
プロファイルは下記のツールで「構成プロファイル」として作成することができます。
今回の構成プロファイルは次のように作成しています。
「アクセスポイント」に関してはSORACOMの情報を入力し、
さらに「プロキシサーバとポート」で上記のProxyサーバの情報を入れています。
このプロファイルはMacにiPhoneをUSBでつなぎ、
上記ツールからインストールすることができます。(既存のプロファイルは削除しています)
この状態で、iPhoneからSafariで適当なURL(http://cloudpack.jp)にアクセスすると、
Squidのログより、iPhoneのHTTP(S)の通信がProxy経由になっていることが確認できます。
1447883093.478 173 100.64.128.67 TCP_MISS/200 34431 GET http://cloudpack.jp/ - DIRECT/54.239.194.249 text/html 1447883093.622 9 xxx.xxx.xxx.xxx TCP_MISS/200 2037 GET http://cloudpack.jp/js/jquery.browser.min.js - DIRECT/54.239.194.249 application/x-javascript 1447883093.630 17 xxx.xxx.xxx.xxx TCP_MISS/200 19145 GET http://cloudpack.jp/css/common/layout.css - DIRECT/54.239.194.249 text/css 1447883093.631 18 xxx.xxx.xxx.xxx TCP_MISS/200 16280 GET http://cloudpack.jp/css/index.css - DIRECT/54.239.194.249 text/css 1447883093.634 13 xxx.xxx.xxx.xxx TCP_MISS/200 4054 GET http://cloudpack.jp/js/jquery.easing-1.3.min.js - DIRECT/54.239.194.249 application/x-javascript 1447883093.634 17 xxx.xxx.xxx.xxx TCP_MISS/200 22487 GET http://cloudpack.jp/js/common.js - DIRECT/54.239.194.249 application/x-javascript 1447883093.665 52 xxx.xxx.xxx.xxx TCP_MISS/200 34120 GET http://cloudpack.jp/css/common/general.css - DIRECT/54.239.194.249 text/css ...
さらに、ユーザー認証(Basic)もかけてみます。Squidの設定は下記の通りです。
$ sudo cat /etc/squid/squid.conf http_port 3128 visible_hostname cloudpack no_cache deny all auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid.htpasswd auth_param basic children 5 auth_param basic credentialsttl 1 hours acl password proxy_auth REQUIRED http_access allow password http_access deny all $ sudo service squid restart Stopping squid: ................ [ OK ] Starting squid: . [ OK ]
ちゃんと認証画面も表示されました。
ログを見ると、今度は、そのユーザーがどこに接続したかまで、わかるようになります。
1447890752.703 13 xxx.xxx.xxx.xxx TCP_MISS/200 601 GET http://cloudpack.jp/img/index/visual_bg.gif suzuki DIRECT/54.239.194.50 image/gif 1447890752.717 12 xxx.xxx.xxx.xxx TCP_MISS/200 651 GET http://cloudpack.jp/img/common/bg_01.png suzuki DIRECT/54.239.194.50 image/png 1447890752.730 10 xxx.xxx.xxx.xxx TCP_MISS/200 2454 GET http://cloudpack.jp/img/index/btn_bg.gif suzuki DIRECT/54.239.194.50 image/gif 1447890752.730 9 xxx.xxx.xxx.xxx TCP_MISS/200 816 GET http://cloudpack.jp/img/common/line02.gif suzuki DIRECT/54.239.194.50 image/gif 1447890752.739 14 xxx.xxx.xxx.xxx TCP_MISS/200 1858 GET http://cloudpack.jp/img/index/attention_bg.gif suzuki DIRECT/54.239.194.50 image/gif ...
今回は典型的な例としてProxyを試してみましたが、
このようにiPhoneからの(SIMでの)通信も閉域網内の通信として扱え、
いろいろと(社内サーバで処理)できそうなことがわかりました。
夢が広がります。