検索
連載

【 Add-VMNetworkAdapterExtendedAcl 】コマンドレット――Hyper-V仮想マシンの仮想ネットワークアダプターに拡張ACLを追加する(2)Windows PowerShell基本Tips(149)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回も「Add-VMNetworkAdapterExtendedAcl」コマンドレットについて詳細な使い方を解説します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。前回に続き、今回も「Hyper-V」の仮想マシンに接続された仮想ネットワークアダプターに「拡張アクセス制御リスト」(Extended Access Control List:拡張ACL)を追加する「Add-VMNetworkAdapterExtendedAcl」コマンドレットです。Add-VMNetworkAdapterExtendedAclコマンドレットによる拡張ACLの追加実行例を扱います。

Add-VMNetworkAdapterExtendedAclコマンドレットの基本情報

 Add-VMNetworkAdapterExtendedAclコマンドレットの基本的な使い方、オプションについては本連載の第148回をご覧ください。


ステートフル通信として拡張ACL設定を追加する

 本項は「明示的な拒否」の拡張ACLが設定されている状態をベースとして解説します(画面1)。

ALT
画面1 「明示的な拒否」の拡張ACLが設定された状態

 前回解説した設定例では、実際の通信を意識して始点となる通信とその折り返しの通信の双方を明示的に指定して拡張ACLを設定しました。しかし、戻りの通信を明示的に許可しなければならない手間がありました。

 今回は、同一セッションの戻り通信を自動的に許可する「-Stateful」オプションを使用することで、戻りの拡張ACLの追加を省略できます(画面2)。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "TCP" -RemoteIPAddress 192.168.100.119 -Weight 10 -Stateful $true
Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "UDP" -RemoteIPAddress 192.168.100.119 -Weight 11 -Stateful $true

ALT
画面2 マッチした通信と同一セッションの戻り通信を自動的に許可する「-Stateful」オプションを使用して拡張ACLを設定した

 なお、「-Stateful」オプションを使用する際は、「-Protocol」オプションで明示的にプロトコルを指定する必要があります。「-Protocol」オプションを指定しない場合は、画面3のようにエラーが発生するので注意してください。

ALT
画面3 「-Protocol」オプションを指定しない場合はエラーが発生する

 「-Stateful」オプションを使用した場合は、自動設定される戻りパケットの疎通許可をどの程度の時間でタイムアウトとするかを「-IdleSessionTimeout」オプションで設定できます(画面4)。設定可能な最大値は「65535」秒で、未指定の場合は画面2の通り「255」秒が設定されます。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "TCP" -RemoteIPAddress 192.168.100.119 -Weight 10 -Stateful $true -IdleSessionTimeout 65535
Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "UDP" -RemoteIPAddress 192.168.100.119 -Weight 11 -Stateful $true -IdleSessionTimeout 65535

ALT
画面4 「-IdleSessionTimeout」オプションでアイドルタイムアウトを「65535」秒に設定した

 アイドルタイムアウト値は、長過ぎるとセキュリティ的な問題をはらむ危険性が高くなるため、適切な時間を設定してください。


IPv6アドレスベースの拡張ACL設定を追加する

 これまでの例ではIPアドレスとしてIPv4(Internet Protocol version 4)アドレスを使用していましたが、IPv6(Internet Protocol version 6)でも指定できます(画面5)。また、「-Stateful」オプションを併用することも可能です。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "TCP" -RemoteIPAddress 2001:db8::1 -Weight 10 -Stateful $true

ALT
画面5 IPv6アドレスベースの拡張ACLも設定可能

 IPv6アドレスであっても、使用するオプションは同一です。指定されたアドレスの拡張ACLが追加されます。


ネットワークやポート番号を範囲で指定する

 これまでの例はホストアドレス指定で解説してきましたが、リモートアドレスやローカルアドレスをネットワーク範囲で指定できます。例えば、「192.168.200.0/24」といったサブネットアドレスをリモートアドレスとして設定することも可能です(画面6)。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "TCP" -RemoteIPAddress 192.168.200.0/24 -Weight 10 -Stateful $true

ALT
画面6 アドレスの指定にはサブネットアドレスも使用できる

 標準ACLで使用可能だった予約語「ANY」は、拡張ACLでも使用可能です。ただし、アドレス指定を省略すると「ANY」が既定で適用されるため、明示的に必要がない限りは使用することはないかもしれません。

 アドレス指定はサブネットアドレスを使用して範囲指定できることが理解できたと思いますが、通信ポート番号も範囲指定できます。例えば、「10000」から「10500」までをローカルポート、リモートポートとして指定したい場合は、ポート範囲を「-」でつないで指定できます(画面7)。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -VMName Test-VM01 -Action Allow -Direction Inbound -Protocol "UDP" -LocalPort "10000-10500" -RemotePort "10000-10500" -RemoteIPAddress 192.168.110.0/24 -Weight 10

ALT
画面7 通信ポート番号も範囲指定できる

ホストOSが使用する仮想ネットワークアダプターに拡張ACLを追加する

 ホストOSが使用する仮想ネットワークアダプター、すなわちホストOSが仮想スイッチ経由で通信する際に使用される仮想ネットワークアダプターに対しても、拡張ACLは追加可能です。その場合は仮想マシン名を指定する「-VMName」オプションの代わりに、「-ManagementOS」オプションを使用します(画面8)。

コマンドレット実行例

Add-VMNetworkAdapterExtendedAcl -ManagementOS -Action Deny -Direction Inbound -LocalPort 3389 -Protocol "TCP" -Weight 10
Add-VMNetworkAdapterExtendedAcl -ManagementOS -Action Allow -Direction Inbound -LocalPort 3389 -Protocol "TCP" -RemoteIPAddress 192.168.100.112 -Weight 20

ALT
画面8 「-ManagementOS」オプションを使用することで、ホストOSが使用する仮想ネットワークアダプターに対して拡張ACLを追加できる

 上記コマンドレット例では、インバウンド方向で重み「20」でリモートアドレス「192.168.100.112」からのRDP(Remote Desktop Protocol)接続を受け入れ、それ以外のインバウンド方向のRDP接続を重み「10」で拒否する拡張ACLを設定しています。

 アウトバウンド方向の拡張ACLは設定していませんが、インバウンド方向の拡張ACLだけでも「192.168.100.112」のホスト以外からのRDP接続を全て拒否できます。

 管理用の仮想ネットワークアダプターへの拡張ACLは、設定を間違えるとホストOSへリモートから接続できなくなるので、細心の注意を払って実施してください。

筆者紹介

後藤 諭史(ごとう さとし)

株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る