先日、Vyatta で作る帯域制御可能なネットワークと NAT 経由の外部アクセス という投稿をしました。
この環境は Hyper-V 上に構築した環境ではあったのですが、Windows Server 2008 R2 SP1 上の Hyper-V 2.0 のゲスト OS として構築をしていました。
Hyper-V 3.0 にするとどうなるのかな~と思っていたのですが、twitter 上で Hyper-V 3.0 で Vyatta を動作させたつぶやきが流れてきたので試してみました。
この投稿は 2012/7/14 時点の投稿で Windows Server 2012 Beta + Vyatta Core 6.4 で検証をしています。
■Hyper-V 3.0 で動作させるとどうなるか
Hyper-V 3.0 のゲスト OS として Vyatta Core 6.4 を起動すると以下のようなエラーとなってしまい起動することができませんでした。
ネットワークアダプターをレガシ ネットワーク アダプターにすると起動はできるのですが、Ping の疎通もかなり遅いです…。
■Hyper-V 3.0 の統合ネットワークアダプターで Vyatta を動作させる
この現象ですが Vyatta のフォーラムではすでに上がっていた内容となるようです。
Hyper-V on Windows 8 Server – Boot Issue
Vyatta 本体を変更せずに起動させるための方法はこちらのブログに書かれていました。
Server 8 Hyper-V and Vyatta
Vyatta のゲスト OS を起動する際に仮想スイッチを接続されていない状態にして、起動後に仮想スイッチに接続をすることで起動することができるようになりました。
# ネットワークアダプターのハードウェアアクセラレーター系も無効にしておいたほうが良いようです。
起動した状態がこちらです。
起動時に仮想スイッチに接続をしていませんでしたので、リンクダウンのメッセージが表示されていますね。
起動後に仮想スイッチに接続をすることでネットワークに接続することができます。
私の使っている環境ですと一回 NIC の Down / Up をする必要がありましたので、仮想スイッチ接続後に以下のコマンドを実行しています。
$ sudo /sbin/ifconfig eth0 down $ sudo /sbin/ifconfig eth0 up |
この状態であれば、レガシーアダプターを使用していた場合と異なり、PING の応答も 1ms 以下で戻ってきます。
仮想スイッチへの接続ですが VM Bus の初期化が終わったぐらいのタイミングで設定をすればよいので、以下のような PowerShell を使用して起動すると対応ができると思います。
# Sleep の時間は環境によって変える必要があります。
Get-VMNetworkAdapter -VMName Vyatta | Disconnect-VMNetworkAdapter |
無理やり起動しているのでどこまで機能が使用できるかわかりませんが。。。。
Vyatta に Linux Integration Services Version v3.3 for Hyper-V がインストールできればスムーズに動作するのかもしれませんが、Linux は不得手なのでインストールできるのか調べられていません。
Vyatta は Debian がベースになっているということなので Hyper-V Guests: Linux Integration Components Ubuntu and Debian や Understanding the Vyatta Package Repositories を見たりはしたのですが、新しいモジュールも特に降ってこないようでした。
# 操作方法を間違えているだけかもしれませんが。
Hyper-V 3.0 になるとゲスト OS の設定で QoS ができるので帯域制御も標準機能でできるため、Windows OS で帯域制御は対応できるのですがせっかくなので Vyatta も使いたいですよね。新しい Vyatta のバージョンがリリースされたら再度確認をしてみたいと思います。