モバイル環境では外部アダプタを使わない方がいい|Surface Pro2 あるいはモバイルノートwindows8にオススメなHyper-Vネットワーク構成

このブログSurfaceのことばっか書いてるなと思い始めたnullpo_headです。今回の話題は「Surface Pro またはwindows8が入ったモバイルノートにオススメなHyper-Vのネットワーク構成」です。まぁほとんどタイトルとおんなじですね。人生なんてそんなもんです。

 

今回の話の核は

1. Hyper-Vのネットワークスイッチは、普通外部アダプタを作成してそれを仮想マシンにつなげるよう解説されるが、これは回線が安定しているサーバー機を前提とした構成なのでモバイル環境とめっちゃ相性が悪い。無線回線が切り替わるたびにアダプタが死んだりする。

2. なので内部ネットワークアダプタを作って、それをWindowsのICS機能でインターネットにつないでお手軽ネットワーク構成を作りましょう

 

という2点です。あ、1に関連する現象として、移動してWifi環境が切り替わるときにネットワークアダプタがしばしば死んでしまうというものがありますので、今回の記事は「SurfaceやノートPCでHyper-Vをオンにするとネットワークアダプタが時々死んでしまう現象を解決する」とも言えます。こっちの方がこの問題に悩まされている人々がググるときに役に立つかもしれません。(あと、hyper-vの外部アダプタを作っている状態だとau wi-fiがつながらないとかいう問題もあったらしいですね)

以下詳細です。

 

まずHyper-Vの通常推奨されるネットワーク構成がモバイル環境には向かないという話を書くんですが、そのために一応Hyper-Vのネットワークについてさらっとふれておきます。

Hyper-Vは名前の通りハイパーバイザ型に分類される仮想化環境で、OSよりも上位(レイヤ的には下位)で動くというのはよく聞く話ですね。

f:id:nullpo_head:20131126015143p:plain

VirtualBoxなどのホストOS型はあくまでOSの上で動くアプリケーションですが、ハイパーバイザ型は一味違い、OSよりもハードウェア側に位置することでゲストOSの高速化を図ります。

それでネットワークの構成も、VMware playerやVirtual BoxのようなホストOS型とは少し違ってきます。
f:id:nullpo_head:20131126015147p:plain

ホストOS型の時はただのアプリケーションだったので、普通にアプリケーションとしてインターネットと通信していればよかったのですが、Hyper-VはホストOSよりも偉いために、逆にホストOSやゲストOSにネットワークアダプタを割り当ててあげることになります。Hyper-VはホストOSから物理NICを奪い取り、ホストOSとゲストOSのそれぞれに仮想的なアダプタを作って、そこへ実際のNICへ通信を流してあげるのです。

これがHyper-Vにおける基本的なネットワーク構成です。

 

で、ここからが本題です。この基本的な構成が実はモバイルPCには向かないという話です。この構成を作るために必要な、「ホストOSから物理NICの権限を奪い取り、ホストOSのアダプタを仮想アダプタにすげかえる」という処理、それなりに大変なんですね。

この構成を実際にHyper-Vで作る操作を行うためには、Hyper-Vマネージャより仮想スイッチを作成し、「外部ネットワークアダプタ」を作成します。この手順はいたるところで解説されている一般的な手順です。

が、「このとき、物理ネットワークインターフェイスに以前割り当てられていたTCP/IPのパラメータは、一時的にネットワーク接続が停止したあと、仮想ネット ワークに複製される。しかし、どういうわけかパラメータの複製に失敗することがある。そうすると、仮想ネットワークはDHCPクライアントとなり、以前の IPアドレスは失われてしまう。この結果、ネットワークにDHCPサーバがいなければIPアドレスは割り当てられず、いっさいの通信ができなくなるのだ。 データセンターに配置した物理サーバをリモート管理している場合は、管理もできなくなる。」

 とAscii.jpさんの連載記事の中の一記事、

「遠隔操作時に失敗すると悲惨なことに? Hyper-Vのインストールはネットワークに注意しよう!」(http://ascii.jp/elem/000/000/553/553016/)

でも紹介されているように、操作時に時々ネットワークの接続を失うことがあります。運悪くこの状態になってしまうと、適当にアダプタのオンとオフを切り替えたりして復旧させねばなりません。

Hyper-Vはもともとサーバーにインストールされることが前提とされた製品ですから、セットアップ時に一回遭遇するくらいなら大した問題ではありません。しかし運が悪いことに、モバイル環境ではWifiなどネットワーク環境が切り替わるたびにこの不幸な状態に似た症状に陥ることがあるっぽいのです。

実際僕は大学を行き来しているうちに、2日に一回はネットワークアダプタが死んでました。。。(ずばりこのセットアップ時のものと同じ現象なのかどうかは寡聞にして知りませんが)

 

そこでこのある意味大がかりなネットワーク構成はすぱっとあきらめ、モバイル環境に適切な構成に切り替えましょう。

 

1. 内部ネットワークアダプタを作る

f:id:nullpo_head:20131126022834p:plain

Hyper-Vマネージャを起動し、右側メニューにある仮想スイッチマネージャから図のように内部スイッチを選択し、作成します。そしてお目当ての仮想マシンのネットワークアダプタにこれを割り当てておきましょう。

この内部ネットワークアダプタというものは、仮想マシンとホストOSの間だけをつなぐもので、インターネットにはつながりません。ですのでHyper-Vが物理マシンのNICを横取りする必要がなく、先ほど説明したような大掛かりな構成が作られません。作られた接続は、コントロールパネルのネットワーク接続一覧にひょこっと現れます。これを作っただけでは仮想マシンはホストOSとネットワーク的に接続されただけで、まだインターネットにはつながっていないのでこれをインターネットにつなげます。

 

2. ネットワーク接続の共有を使って、作成した内部ネットワークアダプタをインターネットにつなぐ

コントロールパネルの「コントロール パネル\ネットワークとインターネット\ネットワーク接続」を開くと、元からあるWi-Fiなどと並んで先ほど作成した内部ネットワークアダプタが表示されていると思います。

f:id:nullpo_head:20131126023954p:plain

あとは図のようにWi-Fiなど普段使っている回線のプロパティを表示し、共有タブから接続の共有をオンにしましょう。これで仮想マシンもインターネットにつながるようになると思います。オテガル!

 

この構成ならばホストOSのネットワーク構成が変わらないので、ハイパーバイザ型の仮想化でもライトに使うことができると思います。多分。ちょっとネットワークいじらなきゃなってときでも共有を解除するだけですべて元通りです。

ちなみにこれはSurfaceを例にしてるために有線LANアダプタがないんですが、普段から有線も無線も使うよ!って人はブリッジ接続などを作ればいいと思います。なんにせよネットワーク環境が変わるたびにアダプタが死なないよう祈る必要はなくなるのでいい感じなんじゃないでしょうか。また、仮想マシンを外部に公開したいときは、ポートの開放も設定から普通にできますので特に問題ないと思われます。

 

以上で今回の話は終わりです。モバイルノートPCでもHyper-Vをがんがん動かしましょう!!

 

そういえば:買ってまだ数か月のSurface Pro初代もメモリ8gb欲しいぞ~~~~~~~~~~(;´Д`)

 

 

参考文献:

Hyper-Vのネットワークを理解する -外部ネットワーク- | WindowsServer管理者への道

http://ebi.dyndns.biz/windowsadmin/2013/04/18/hyper-v%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B-%E5%A4%96%E9%83%A8%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF/

・ASCII.jp:Hyper-Vのインストールはネットワークに注意しよう! (1/2)|Windows Serverで学ぶサーバOS入門

http://ascii.jp/elem/000/000/553/553016/

Hyper-V - Wikipedia

http://ja.wikipedia.org/wiki/Hyper-V