ku-sukeのブログ

Just another hatena blog

t.freeの仕組みをなんとなく予想して解説

 ちょっと気になるネタだったので同様の仕組みをオープンソースで漁ってみたのでそれを元に解説したいと思います。なので厳密にはt.freeの仕組みじゃなく「WebSocketのテザリングの仕組み」になります。

時間がない人向けに結論を書くと

  • Macのネットワーク--Websocket1--[HTML]--Websocket2--サーバ→インターネット という接続経路になってます。
  • 技術的にはすべての通信がサーバを通過するので傍受(覗き見)することは可能と思われます。
  • 防ぐためには、VPNを使えば傍受出来ないですし、https://接続のブラウズであれば「どこにつないでるか」は傍受できても「どんな通信を行ったか」は傍受できなくなります。

図解:webSocketのテザリング

cacooの図を2つ

  • まずt.freeなどのクライアントソフトウエアをインストールします。Macには[有線LAN]や[無線LAN]などのネットワーク接続がありますが、これに[仮想ネットワーク]を追加します。
  • さらに、他のテザリング同様iPhoneとつながる必要があるのでWifiでネットワークを作成します。

  • iPhoneはMacのWifiにつなぎに行きます。
  • その状態でt.freeの接続用ページなど、HTMLをひらくとJavascriptのWebSocketが[Mac側]と[サーバ側]の両方に接続しに行きます。
  • Mac側は、インストールしたクライアントソフトが、片方ではWevSocket接続を受けつけ、もう片方ではMacからのネット接続要求を全てWebSocketに転送します。

  • 転送されたMacからのWebSocket上を流れる通信は、HTMLで用意されたもう一つのサーバ側WebSocketに転送されます。
  • そして、サーバにたどり着いたWebSocket上を流れるMacのネット通信は、t.freeサーバを経由してインターネットにたどり着くわけです。

t.freeやtetherはこんなかんじで動いてると思います。なので、t.freeさんのビジネスモデルに関してはサーバの運営費がかかるのでサーバ代を毎月取る感じが妥当じゃないでしょうか。月間10GBまで500円とか。広告モデルは前回の件もありなかなかユーザの信頼を得にくいのではないかと思います。

自分でt.freeの環境を構築したい方

  • 用意するもの
    • さくらやServersManなどの安くていいのでVPSサービス
    • 自前でPythonやnodejsのインストール、適切なiptablesを設定できる能力
    • Macのコマンドライン操作ができるスキル

これらを用意したら、あとはこいつをgitから落としてきて
spoletto/iOS-HTML5-Tethering · GitHub

Readmeを読めばいけるっぽいです。僕はインストールしてWebSocketがつながるところまで入ったのですがなぜかネットに繋がらず諦めました。どうもLion側でifconfigのdefault設定(すべてのネット通信を10.0.1.1経由にする)が効いてないような気がしました。