仕事でHyper-V上で複数マシンを立ちあげて管理している。
一応、各ゲストマシンはそれぞれ無関係なので、ゲストマシン間の通信は行えないようにしたい。
ただ、現実問題として使える仮想ネットワークアダプタは限られているので、
どうしても同じネットワークアダプタを使わざるを得ない。
何とか良い通信制御方法は無いかと探していたら、Hyper-VでAcl(アクセス制御)ができることが分かった。
ホストマシンでコマンド実行するだけなので、一度わかればかなり楽に設定が可能である。
なお、Windows Server 2012からの機能なので、恐らくWindows Server 2008 R2とかその世代のものではできないと思う。
ホストマシンからPowerShellで以下のコマンドを実行すると設定等が実行できる。
なお、ここで「VM名」と言っているのはHyper-Vマネージャ上で表示されている仮想マシンの名称のことである。
- 設定を確認する
1Get-VMNetworkAdapterAcl - 設定を追加する
1Add-VMNetworkAdapterAcl -Action <Action> -Direction <Direction> -VMName <VM名> -RemoteIPAddress <対象IPアドレス>
・<Direction>・・・VMへの入力方向ならinbound、VMからの出力方向ならoutbound、VMの入出力両方ならBoth。
・<VM名>・・・対象のVM名を指定する。コンピュータ名でなくVM名なことに注意。
・<対象IPアドレス>・・・対象のIPアドレス。CIDR表記での設定も可能。 - 設定を削除する
1Delete-VMNetworkAdapterAcl -Action <Action> -Direction <Direction> -VMName <VM名> -RemoteIPAddress <対象IPアドレス>
例えば、192.168.0.1がルータで、192.168.0.xが別のゲストマシンの場合、
以下のようにすれば、「ルータ(=インターネット)にのみ接続し、他の同ネットワーク上マシンとは通信しない」という設定が可能である。
1 2 |
Add-VMNetworkAdapterAcl -Action Deny -Direction Inbound -VMName <VM名> -RemoteIPAddress 192.168.0.0/24 Add-VMNetworkAdapterAcl -Action Allow -Direction Inbound -VMName <VM名> -RemoteIPAddress 192.168.0.1 |
以下のページがより詳しいので参照すると良い。
僕はこのページが無くては詰んでいました。ありがとうございます。
参考: Windows Server 2012 Hyper-VでPort ACL・その1
いよいよ日本に帰任しそう。
引越し手続きとか全部やってくれないかね。
自分で手配するの面倒臭いし絶対何かミスしそう。