2012年12月3日月曜日

ホストオンリー接続でインターネットに接続する

僕の自宅のネット環境はWiMAXにWindowsのノートPCなのですが、Linux上で動くウェブアプリを開発することが多いので、普段はVMware Player内でUbuntuを動かして、WindowsからSSHやSambaでUbuntuに接続して作業をしています。

このときに問題となるのが、VMware Player内のゲストOSをどのようにして他のマシンとネットワークで接続するかです。接続のしかたには「ブリッジ接続」「NAT接続」「ホストオンリー接続」の3種類がありますが、それぞれ一長一短があります。ゲストOSをネットワークに直接接続してホストOSと同列に扱うブリッジ接続が、ネットワーク構成がシンプルでよいように思われますが、WiMAXのようなモバイルルータを使っていると、バッテリーの寿命がネットワークの寿命になってしまうので好ましくありません。そこで、今回はホストOSとゲストOSを独立したネットワークで接続するホストオンリー接続を試してみることにしました。

環境

  • ホストOS: Windows XP Professional SP3
  • ゲストOS: Ubuntu 12.10
  • 仮想化環境: VMware Player 5.0.0
  • ネット環境: WiMAX (モバイルルーターに有線LANで接続)

問題

ホストオンリー接続の最大の問題は、そのままではゲストOSはインターネットに接続できないということです。典型的なのは、以下のような構成でしょう。

実線は同じセグメントのネットワークを、破線は別のセグメントに属するが通信可能であることを示しています。このままでは、ゲストOSはインターネットに接続できません。

解決法

Windows XPには「インターネット接続の共有」 (ICS) という機能があります。この機能を利用すれば、別のネットワーク同士を結びつけることができます。Windowsにルーターと似たような機能を持たせられるわけです。しかし、この機能は相当くせ者です。設定は単純なのに1時間ほど格闘させられました(;´Д`)

まず、「コントロールパネル」の「管理ツール」から

  • Application Layer Gateway Service
  • Network Location Awareness (NLA)
  • Windows Firewall / Internet Connection Sharing (ICS)

の3つのサービスが常に起動する設定になっていることを確認します(参考: Windows上のVMware Playerでホストオンリー(Host-Only)接続を用いDHCPを使わずゲストOSから外部ネットに繋ぐ)。

続いて、VMnet1とゲストOSのネットワークアダプタに、同じネットワークのIPアドレスを割り当てます。VMnet1というアダプタは、ホストオンリー接続でゲストOSと接続する際に使われる仮想のアダプタです。ここでは、VMnet1に192.168.10.1を、ゲストOSのイーサネットアダプタeth0に192.168.10.2を割り当てることとします。

また、一度ゲストOSをシャットダウンし、仮想マシンの設定で「ホスト・オンリー」を選択します。

そしていよいよ、ローカルエリア接続のプロパティから「詳細設定」タブを開き、「ネットワークのほかのユーザーに、このコンピュータのインターネット接続をとおしての接続を許可する」というところにチェックを入れます。もし複数のアダプタがあるならVMnet1を選択します。

これで設定は終了となるはずです。しかし、何も意識せずに行うと恐らく

インターネット接続の共有を有効にすると、このコンピュータのLANアダプタが使用するIPアドレスは192.168.0.1に設定されます。このコンピュータは、ネットワーク上のほかのコンピュータに接続できなくなる可能性があります。ネットワーク上のほかのコンピュータが静的IPアドレスを持っている場合は、IPアドレスを自動的に取得するように設定する必要があります。インターネット接続の共有を有効にしますか?

というメッセージが表示され、「はい」をクリックすると続いて

インターネット接続の共有を有効にするときに、エラーが発生しました。

インターネット接続の共有を有効にできません。 LAN接続は、IPアドレスの自動指定で必要なIPアドレスを使って既に構成されています。

というエラーが出て先へ進めません。

僕はここではまりました。

試行錯誤の末、結局次のようなネットワークを作ろうとすればよいのだという結論に至りました。どうやら、ICSを有効にすると、IPアドレスが192.168.0.1の専用のネットワークアダプタがこっそりと追加されるようです。そのため、WiMAXルータのIPアドレスの変更を余儀なくされました。

また、ICSを有効にする際には、 一度ネットワークアダプタを無効にする必要がある らしいというのも分かりました。無効にしないと上記のエラーが発生します。そんなの知らねえよヽ(`Д´#)ノ

さらに、 ICSを有効にするとVMnet1のIPアドレスが192.168.0.1に勝手に変えられてしまう ので、元の値に戻さなければならいようです・・・。戻したら何か問題が起こるのではないかと不安ですが、どうやらそれはないようです。

細かな手順を書いてもかえって複雑になるだけなので、それはしません。みなさん、どうぞがんばってください><