Hyper-Vの仮想マシンのネットワークを制限する方法

仕事でHyper-V上で複数マシンを立ちあげて管理している。
一応、各ゲストマシンはそれぞれ無関係なので、ゲストマシン間の通信は行えないようにしたい。
ただ、現実問題として使える仮想ネットワークアダプタは限られているので、
どうしても同じネットワークアダプタを使わざるを得ない。

何とか良い通信制御方法は無いかと探していたら、Hyper-VでAcl(アクセス制御)ができることが分かった。
ホストマシンでコマンド実行するだけなので、一度わかればかなり楽に設定が可能である。
なお、Windows Server 2012からの機能なので、恐らくWindows Server 2008 R2とかその世代のものではできないと思う。


ホストマシンからPowerShellで以下のコマンドを実行すると設定等が実行できる。
なお、ここで「VM名」と言っているのはHyper-Vマネージャ上で表示されている仮想マシンの名称のことである。

  • 設定を確認する
  • 設定を追加する
    ・<Action>・・・接続拒否ならDeny、接続許可ならAllow、計測ならMeter。
    ・<Direction>・・・VMへの入力方向ならinbound、VMからの出力方向ならoutbound、VMの入出力両方ならBoth。
    ・<VM名>・・・対象のVM名を指定する。コンピュータ名でなくVM名なことに注意。
    ・<対象IPアドレス>・・・対象のIPアドレス。CIDR表記での設定も可能。
  • 設定を削除する
    要するに、addしたものと同じ設定を指定してDeleteする必要がある。何と面倒な。

例えば、192.168.0.1がルータで、192.168.0.xが別のゲストマシンの場合、
以下のようにすれば、「ルータ(=インターネット)にのみ接続し、他の同ネットワーク上マシンとは通信しない」という設定が可能である。

以下のページがより詳しいので参照すると良い。
僕はこのページが無くては詰んでいました。ありがとうございます。
参考: Windows Server 2012 Hyper-VでPort ACL・その1


いよいよ日本に帰任しそう。
引越し手続きとか全部やってくれないかね。
自分で手配するの面倒臭いし絶対何かミスしそう。