Windows-XPとiPhoneでのWifiルーター化

adonishi2008-09-12

さてはて、先日(ちと遅い)夏休みとして、青春18きっぷで奈良へ行ってきました。もちろん鈍行乗り継ぎなので、片道9時間ぐらいかかります。半分ぐらい寝てましたが、後の半分はiPhoneに大量に入れていった、DVDなどから変換したビデオを見てました。おかげでぜんぜん飽きずに9時間(x2)が終わって楽勝でしたよ。

その時、一緒に持っていったラップトップ(Windows-XP SP3)で、iPhoneWifiルーターとして上手く使う方法を確立したので、まとめて見ます。(今まで何度か試していたのだけれど、いまいち上手く行っていなかったのでした。結構めんどうくさいです。)

基本的な方針

WindowsからJailbreakしたiPhoneWifi接続(adhoc)をした後に、PuttyのSOCKSフォーワーディング機能を使って、windowsからの接続をiPhone経由で3Gネット側へ確立できるようにする。

(しかし、そう簡単には行かないんだよなぁ、これが、、、)

必要なプログラム等

設定

Wifi接続の設定

まずWindowsiPhoneWifiで接続しますが、一対一での接続でいいのでadhoc接続をします。

ここでは、iPhoneIPアドレスを10.0.0.1、Windows側を10.0.0.2とします。

  1. まず「ネットワーク接続」開いて(「スタート」->「接続」->「すべての接続を表示」)、ワイヤレス・ネットワークの接続を探します。
  2. そのプロパティを表示し「ワイヤレス ネットワーク」のタブを選びます。
  3. 一番下の「詳細設定」を押して、「アクセスするネットワーク」の中から「コンピューター相互(ad hoc)のネットワークのみ」を選びます。(後で戻しておくと良いでしょう。)
  4. 「詳細設定」を閉じて「プロパティ」に戻り、「優先ネットワーク」の「追加...」を選びます。
  5. SSID」を適当なものに(ここでは「adhoc」)設定、「キーは自動的に提供される」のチェックをはずす。
  6. 「ネットワークキー」とその入力確認が入れられるようになるので、適当なパスワードを(5文字、もしくは13文字)を両方へ入力
  7. 「OK」を押して「プロパティ」に戻り、また「全般」のタブに戻る。
  8. 「インターネット プロトコルTCP/IP)」を選択し、「プロパティ」を押す
  9. 「次のIPアドレスを使う」を選択し、「IPアドレス」に「10.0.0.2」、「サブネットマスク」に「255.0.0.0」、「デフォールト ゲートウエイ」に「10.0.0.1」を入力
  10. 「OK」で「プロパティ」へ戻り、また「OK」で「プロパティ」を閉じる

これで設定は終了。接続してiPhone側の設定をします。

  1. iPhone側で「設定」->「Wi-Fi」に「adhoc」が出ていたらそれに接続、無かったら「その他…」を開き、名前:「adhoc」、セキュリティ:「WEP」、パスワード:(さっきWindowsで設定したパスワード)を入力し「Join」します。
  2. Windows側で、「ネットワーク接続」にある、ワイヤレス・ネットワークの接続をダブルクリックして「ワイヤレス・ネットワークの選択」を表示します。
  3. 登録した「adhoc」が見えるので、それを選択して「接続」を押します。
  4. 接続できたらiPhone側上で、この「adhoc」接続の設定を開き、IPアドレスの設定を「DHCP」から「静的」にします。
  5. IPアドレス」を「10.0.0.1」に、「サブネットマスク」を「255.0.0.0」にします。

これで、設定できました。

メモ:通常Windows同士でad hoc接続をする時には、IPアドレスWindowsが擬似DHCPサーバーになってくれるので、お互いに相手先からIPアドレスが取れます。しかし、iPhoneはこれをしてくれないので、今回の場合iPhone側はIPアドレスが取れますが、Windows側はIPアドレスが取れません。なので、静的にIPアドレスを設定してやる必要があります。

こうすると、他のWiFiアクセスポイントに接続する場合などに、非常に不便なので、「ヴァルヘルIPコンフィグ」 - http://www.valsoft.jp/delphi/vipconfighp.html 等の設定スイッチ・ユーティリティを使用することをお勧めします。

SOCKSトンネルの作成

次にPuttyiPhoneにアクセスしてSOCKSトンネルを作ります。

あまり知られていないのかもしれませんが、Putty(もしくはOpenSSH)には、SSHアクセスの他に、特定のポートのフォーワーディングや、SOCKSによるダイナミックなフォーワーディング(トンネリング)を作ることができます。今回はこの機能を使って、Windows上にSOCKSポート(localhost:1080)を作って、iPhone上までトンネルを作ります。

  1. まずPuttyを立ち上げて、iPhone Wifiルーター用の設定を作ります。
  2. 「ホスト名(または IPアドレス)」に「10.0.0.1」を入れます。
  3. 「カテゴリ」から「接続」を選び、「keep aliveの間隔(秒、0でオフ)」を2秒程度に設定します。
  4. 「カテゴリ」から「接続」->「SSH」->「トンネル」を選びます。
  5. 「源ポート」に「1080」を、「送り先」に「localhost」、その下のラジオボタンを「ダイナミック」にします。
  6. そこで「追加」ボタンを押します。(すると上のリストに「AD1080」と表示される)
  7. また、最初の所へ戻るために、「カテゴリ」から「セッション」を選ぶ。
  8. 「保存されたセッション」の所へ適当な名前を付けて保存を押す。(「iPhoneAdhoc」など)

これでトンネル設定、終了です。

iPhoneWifi接続後、Puttyでこの設定を読み込んで「開く」をすれば、SSH接続のウインドウが表示され、それと同時にSOCKSトンネルが確立されます。(閉じる時には、SSHのウインドウに「exit」と入れれば閉じます。)

メモ:この設定の途中で「keep aliveの間隔」を数秒に設定していますが、これをしないとWiFi接続がすぐに切れてしまいました。それの対策として設定しています。(ここがまた、はまった所だったのでした、、、)

SOCKS用のユーティリティFreeCap を設定する。

この状態でSOCKSトンネルが動いているので、一応、SOCKS対応のIEFirefoxの設定でこれを指定してあげれば、接続できるのですが、DNSがSOCKSに対応していないため名前が引けないのと、毎回SOCKSの設定するのが面倒なので、ここは登録したアプリケーションのすべてのアクセスを強制的にSOCKS経由にするFreeCapと言うユーティリティを使うことにします。( http://www.freecap.ru/eng/

  1. FreeCapを立ち上げて「File」メニューから「Settings」を選びます。
  2. 「Default Proxy」の「Server」に「localhost」を、「Port」に「1080」を入れて「OK」を押します。
  3. 「File」メニューから「New Application」を選びます。
  4. アプリケーションの設定画面が出るので「Browse...」を押してSOCKS上で使うアプリケーションを選びます。
  5. すると、必要な情報が入るので問題なさそうなら「Ok」を押します。
  6. メイン画面に設定したアプリケーションが現れるので、それをダブルクリックするとSOCKS対応状態でアプリケーションが開きます。


ふう、大変長い設定でしたが、これで、iPhoneWifiルーターとして使えるようになります。