share facebook facebook2 twitter menu hatena pocket slack

2015.12.07 MON

IoTpack(SORACOM)でProxy(Squid)

鈴木 宏康

WRITTEN BY鈴木 宏康

cloudpack“には”SORACOM“さんのサービスを利用した「IoTpack」という商品があります。

2015-11-19_05-28-59

この商品は簡単にいえば、SORACOMのVPCと自分のVPCを”VPC Peering”で接続し、
“SORACOM Air”のSIMを利用したデバイスからの通信を、インターネットに出ることなく
自分のVPC上のサーバで処理することができるものとなっています。

2015-11-19_05-21-44

ということで下記のようにIoTpackを利用して”Air SIM”のiPhoneのHTTP(S)通信が
自分のVPC上のProxyサーバ(Squid)経由でインターネットに出て行くようにしてみました。

Untitled+%2820%29

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できてました。

IMG_0001

さらに上述のProxyサーバを利用するには、
iPhoneのプロファイルを調整する必要があります。

プロファイルは下記のツールで「構成プロファイル」として作成することができます。

今回の構成プロファイルは次のように作成しています。

2015-11-19_06-58-10

2015-11-19_06-59-09

「アクセスポイント」に関してはSORACOMの情報を入力し、
さらに「プロキシサーバとポート」で上記のProxyサーバの情報を入れています。

このプロファイルはMacにiPhoneをUSBでつなぎ、
上記ツールからインストールすることができます。(既存のプロファイルは削除しています)

IMG_0002

この状態で、iPhoneからSafariで適当なURL(http://cloudpack.jp)にアクセスすると、
Squidのログより、iPhoneのHTTP(S)の通信がProxy経由になっていることが確認できます。

1447883093.478    173 100.64.128.67 TCP_MISS/200 34431 GET https://cloudpack.jp/ - DIRECT/54.239.194.249 text/html
1447883093.622      9 xxx.xxx.xxx.xxx TCP_MISS/200 2037 GET https://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 https://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 https://cloudpack.jp/css/index.css - DIRECT/54.239.194.249 text/css
1447883093.634     13 xxx.xxx.xxx.xxx TCP_MISS/200 4054 GET https://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 https://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 https://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  ]

ちゃんと認証画面も表示されました。

IMG_0003

ログを見ると、今度は、そのユーザーがどこに接続したかまで、わかるようになります。

1447890752.703     13 xxx.xxx.xxx.xxx TCP_MISS/200 601 GET https://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 https://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 https://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 https://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 https://cloudpack.jp/img/index/attention_bg.gif suzuki DIRECT/54.239.194.50 image/gif
...

今回は典型的な例としてProxyを試してみましたが、
このようにiPhoneからの(SIMでの)通信も閉域網内の通信として扱え、
いろいろと(社内サーバで処理)できそうなことがわかりました。

夢が広がります。

元記事はこちら

IoTpack(SORACOM)でProxy(Squid)

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。