【 Set-VMNetworkAdapter 】コマンドレット――Hyper-V仮想マシンの仮想ネットワークアダプター設定を変更する:Windows PowerShell基本Tips(141)
本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Set-VMNetworkAdapter」コマンドレットを解説します。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Hyper-V」の仮想マシンに接続された仮想ネットワークアダプターの設定を変更する「Set-VMNetworkAdapter」コマンドレットです。
目次
Set-VMNetworkAdapterの概要 | 書式 | オプション
実行例
- 仮想ネットワークアダプターでセキュリティ機能の一つ「ガード機能」を有効化する
- 仮想ネットワークアダプターで「MACアドレススプーフィング」を有効化する
- 仮想ネットワークアダプターのMACアドレスを変更する
- 仮想ネットワークアダプターの最大帯域幅/最小帯域幅を変更する
- 複数の仮想ネットワークアダプターが接続された仮想マシンの場合はどうする?
Set-VMNetworkAdapterコマンドレットとは?
Hyper-Vで仮想マシンに対してネットワークサービスを提供するには、Hyper-Vホスト上で設定される仮想スイッチと、仮想マシンに接続される仮想ネットワークアダプターの両方が必要なことは、本連載で仮想ネットワークアダプター用コマンドレットを紹する中で繰り返し説明してきました。
Hyper-V仮想スイッチは非常に高機能なスイッチであり、さまざまな機能を提供していることは筆者の別連載「今だからこそ学び直すHyper-V再入門」の第8回でも説明しています。この仮想スイッチの機能を利用するため、設定を変更する際に用いられるコマンドレットが今回のSet-VMNetworkAdapterです。
当然のことながら、仮想ネットワークアダプターの設定はGUI(グラフィカルユーザーインタフェース)の管理ツール「Hyper-Vマネージャー」からも変更可能ですが、一部の機能についてはSet-VMNetworkAdapterコマンドレットでしか変更できません。
Set-VMNetworkAdapterコマンドレットは、仮想マシンのネットワーク設定を行う際に多用するコマンドレットであり、Hyper-Vによる仮想化基盤を管理する場合には押さえておきたいコマンドレットです。
【注】Set-VMNetworkAdapterコマンドレットは「Windows PowerShell用Hyper-Vモジュール」に含まれるコマンドレットになります。GUI(グラフィカルユーザーインタフェース)の「Windowsの機能の有効化」や「役割と機能の追加」からHyper-Vを有効化するか、PowerShellから「Enable-WindowsOptionalFeature」コマンドレットを使用して有効化します。
Set-VMNetworkAdapterコマンドレットの主なオプション
オプション | 意味 |
---|---|
-VMName | 仮想マシン名を指定する。-ManagementOSオプション指定時のみ、省略可能 |
-Name | 設定を変更したい仮想ネットワークアダプターを指定する。省略可能 |
-VMNetworkAdapterName | -Nameオプションのエイリアスで、同じように使用可能。省略可能 |
-ManagementOS | ホストOS用の仮想ネットワークアダプターを取得したい場合に指定する。省略可能 |
-AllowTeaming | 仮想ネットワークアダプターでのチーミング設定を許可する場合に「On」を指定する。省略可能 |
-DeviceNaming | 仮想ネットワークアダプターのデバイスネーミングを有効にする場合に「On」を指定する。省略可能 |
-MacAddressSpoofing | 仮想ネットワークアダプターのMAC(Media Access Control)アドレススプーフィングを有効にする場合に「On」を指定する。省略可能 |
-DhcpGuard | 仮想ネットワークアダプターのDHCP(Dynamic Host Configuration Protocol)ガードを有効にする場合に「On」を指定する。省略可能 |
-RouterGuard | 仮想ネットワークアダプターのルーターガードを有効にする場合に「On」を指定する。省略可能 |
-StaticMacAddress | 仮想ネットワークアダプターのMACアドレスを「静的割り当て」にする場合に指定する。省略可能 |
-MaximumBandwidth | 仮想ネットワークアダプターの最大帯域幅を指定する。省略可能 |
-MinimumBandwidthAbsolute | 仮想ネットワークアダプターの最小帯域幅を「絶対値」で指定する。省略可能 |
-MinimumBandwidthWeight | 仮想ネットワークアダプターの最小帯域幅を「重み」で指定する。省略可能 |
-PortMirroring | 仮想ネットワークアダプターでポートミラーリングを行う際にソース/ディスティネーションとともに指定する。省略可能 |
-NotMonitoredInCluster | 仮想ネットワークアダプターで「保護されたネットワーク」を無効にする場合「$true」を指定する。省略可能 |
-ComputerName | リモートのHyper-Vホスト上にある仮想ネットワークアダプターの設定を変更する場合にコンピュータ名を指定する。省略可能 |
仮想ネットワークアダプターでセキュリティ機能の一つ「ガード機能」を有効化する
仮想マシンに対するセキュリティ機能としては、「DHCPガード」と「ルーターガード」の2つがあります。この機能は、Hyper-Vホストの管理者が承認していないDHCPサーバや仮想アプライアンスが動作することを妨げます。必須オプションである「-VMName」で仮想マシン名を指定し、有効化するガード機能名を指定してSet-VMNetworkAdapterコマンドレット実行することで、当該機能を有効化できます(画面1)。なお、Set-VMNetworkAdapterコマンドレットは管理者権限での実行が必要となります。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM01 -DhcpGuard on -RouterGuard on
画面1では、Set-VMNetworkAdapterコマンドレット実行前後で、本連載第135回で紹介した「Get-VMNetworkAdapter」コマンドレットで状態を取得しています。Set-VMNetworkAdapterコマンドレット実行後は、「Off」になっている両機能が「On」に遷移していることが分かります。
Hyper-Vマネージャーから当該仮想マシンと仮想ネットワークアダプターを確認しても、両機能の項目のチェックボックスがオンになっていて有効であることが確認できます(画面2)。
なお、ガード機能を無効化したい場合は、無効化したい機能のオプションの値として「Off」を指定します。また、本設定変更は仮想マシンの起動中でも実施可能です。
仮想ネットワークアダプターで「MACアドレススプーフィング」を有効化する
仮想マシン上で複数のMACアドレスを使用可能にするためには、「MACアドレススプーフィング」を有効化する必要があります。デフォルト(既定値)では、MACアドレススプーフィングが無効化されていますが、Hyper-Vマネージャーはもちろんのこと、Set-VMNetworkAdapterコマンドレットでも有効化できます(画面3)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM01 -MacAddressSpoofing On
なお、MACアドレススプーフィングを無効化したい場合には、オプションの値として「Off」を指定します。また、本設定変更は仮想マシンの起動中でも実施可能です。
仮想ネットワークアダプターのMACアドレスを変更する
仮想ネットワークアダプターのMACアドレスは既定値では「動的割り当て」となっており、仮想マシンの初回起動時にHyper-Vホストから自動的に割り当てられます。
ネットワーク管理上の理由などで、あらかじめ採番済みの値をMACアドレスに割り当てたい場合もあります。その際は「-StaticMacAddress」オプションを使用し、値でMACアドレスを指定することで静的割り当てを行うことができます(画面4)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM01 -StaticMacAddress 00155D0A2099
Set-VMNetworkAdapterコマンドレット実行前は「True」だった「DynamicMacAddressEnabled」の値が、静的割り当てに変更後は「False」になっていることからも、MACアドレスが静的割り当てに変更されていることが分かります。
本設定変更は、仮想マシンの起動中には実施できません。MACアドレスの変更作業は、仮想マシンを停止してから実施してください。
仮想ネットワークアダプターの最大帯域幅/最小帯域幅を変更する
仮想スイッチの機能として「QoS(Quality of Service)」があります。最大帯域幅の上限を設定する場合は「-MaximumBandwidth」オプションを使用し、設定値を「bps」で指定します(画面5)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM01 -MaximumBandwidth 100000000
Set-VMNetworkAdapterコマンドレット実行前は値が存在しなかった「BandwidthSetting」プロパティですが、コマンドレット実行後は値が作成され、「MaximumBandwidth」の値として「100000000(100Mbps)」が設定されました。
この状態でHyper-Vマネージャーから設定を見ると、帯域幅管理が有効化されて最大帯域幅として「100Mbps」が設定されていることが確認できます(画面6)。
最小帯域幅は、接続している仮想スイッチの設定によって「絶対値指定」か「重み指定」かが決まります。仮想スイッチの設定は、本連載第124回で紹介した「Get-VMSwitch」コマンドレットで「BandwidthReservationMode」の値を確認してください。
仮想スイッチが「Absolute(絶対値)」モードの場合、最小帯域幅は絶対値による指定となるので「-MinimumBandwidthAbsolute」オプションを使用し、設定値を「bps」で指定します(画面7)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM01 -MinimumBandwidthAbsolute 50000000
Get-VMSwitchコマンドレットで仮想スイッチの設定を確認したところ、「Absolute(絶対値)」モードだったため、上記実行例では「-MinimumBandwidthAbsolute」オプションを使用して最小帯域幅「50000000bps」(50Mbps)に設定しています。
仮想スイッチが「Weight(重み付け)」モードの場合は、「-MinimumBandwidthWeight」オプションを使用します(画面8)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM02 -MinimumBandwidthWeight 5
上記実行例では、仮想スイッチが「Weight(重み付け)」モードであることを確認後、「-MinimumBandwidthWeight」オプションを使用して重みを「5」に設定しています。
「Weight(重み付け)」モードの最小帯域幅設定は、Hyper-Vマネージャーからは変更不可で、Set-VMNetworkAdapterコマンドレットのみで変更可能です。本設定は仮想マシンが起動中でも変更可能で、変更されたQoS設定は即時に反映されます。
複数の仮想ネットワークアダプターが接続された仮想マシンの場合はどうする?
複数の仮想ネットワークアダプターが接続されている場合は、仮想ネットワークアダプターを明示的に指定しないと、全ての仮想ネットワークアダプターに対して設定変更が実施されてしまいます(画面9)。
特定の仮想ネットワークアダプターのみ設定を変更したい場合には、「-Name」オプションもしくは「-VMNetworkAdapterName」オプションで仮想ネットワークアダプター名を指定して、Set-VMNetworkAdapterコマンドレットを実行します(画面10)。
コマンドレット実行例
Set-VMNetworkAdapter -VMName Test-VM07 -VMNetworkAdapterName FrontNIC -MaximumBandwidth 100000000
筆者紹介
後藤 諭史(ごとう さとし)
株式会社ネットワールド所属。Microsoft MVP for Cloud and Datacenter Management(2012-2026)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.