VM を作成し、テナントの仮想ネットワークまたは VLAN に接続する
このトピックでは、テナント VM を作成し、Hyper-V ネットワーク仮想化によって作成した仮想ネットワークまたは仮想ローカル エリア ネットワーク (VLAN) に接続します。 Windows PowerShell ネットワーク コントローラー コマンドレットを使用して仮想ネットワークに接続するか、NetworkControllerRESTWrappers を使用して VLAN に接続できます。
このトピックで説明するプロセスを使用して、仮想アプライアンスをデプロイします。 いくつかの追加手順を実行することで、仮想ネットワーク上の他の VM との間でやり取りされるデータ パケットを処理または検査するようにアプライアンスを構成できます。
このトピックのセクションでは、多くのパラメーターのサンプル値を含む Windows PowerShell コマンドの例を示します。 これらのコマンドで値の例は、これらのコマンドを実行する前に、展開に対応する値を置き換えることを確認します。
前提条件
VM の有効期間中に静的 MAC アドレスで作成された VM ネットワーク アダプター。
VM の有効期間中に MAC アドレスが変更された場合、ネットワーク コントローラーはネットワーク アダプターに必要なポリシーを構成できません。 ネットワークのポリシーを構成しないと、ネットワーク アダプターではネットワーク トラフィックが処理されないため、ネットワークとのすべての通信が失敗します。
VM の起動時にネットワーク アクセスが必要な場合は、VM ネットワーク アダプター ポートでインターフェイス ID を設定するまで VM を起動しないでください。 インターフェイス ID を設定する前に VM を起動し、ネットワーク インターフェイスが存在しない場合、VM はネットワーク コントローラー内のネットワーク上で通信できず、すべてのポリシーが適用されます。
このネットワーク インターフェイスにカスタム ACL が必要な場合は、「アクセス制御リスト (ACL) を使用してデータセンターのネットワーク トラフィック フローを管理する」トピックの手順に従って、すぐに ACL を作成します。
このサンプル コマンドを使用するには、仮想ネットワークが作成済みである必要があります。 詳細については、「テナントの仮想ネットワークを作成、削除、または更新する」を参照してください。
Windows PowerShell ネットワーク コントローラーのコマンドレットを使用して VM を作成し、仮想ネットワークに接続する
静的 MAC アドレスを持つ VM ネットワーク アダプターを使用して、VM を作成します。
New-VM -Generation 2 -Name "MyVM" -Path "C:\VMs\MyVM" -MemoryStartupBytes 4GB -VHDPath "C:\VMs\MyVM\Virtual Hard Disks\WindowsServer2016.vhdx" -SwitchName "SDNvSwitch" Set-VM -Name "MyVM" -ProcessorCount 4 Set-VMNetworkAdapter -VMName "MyVM" -StaticMacAddress "00-11-22-33-44-55"
ネットワーク アダプターを接続するサブネットが含まれている仮想ネットワークを取得します。
$vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Contoso_WebTier"
ネットワーク コントローラーでネットワーク インターフェイス オブジェクトを作成します。
ヒント
この手順では、カスタム ACL を使用します。
$vmnicproperties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceProperties $vmnicproperties.PrivateMacAddress = "001122334455" $vmnicproperties.PrivateMacAllocationMethod = "Static" $vmnicproperties.IsPrimary = $true $vmnicproperties.DnsSettings = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceDnsSettings $vmnicproperties.DnsSettings.DnsServers = @("24.30.1.11", "24.30.1.12") $ipconfiguration = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration $ipconfiguration.resourceid = "MyVM_IP1" $ipconfiguration.properties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties $ipconfiguration.properties.PrivateIPAddress = "24.30.1.101" $ipconfiguration.properties.PrivateIPAllocationMethod = "Static" $ipconfiguration.properties.Subnet = New-Object Microsoft.Windows.NetworkController.Subnet $ipconfiguration.properties.subnet.ResourceRef = $vnet.Properties.Subnets[0].ResourceRef $vmnicproperties.IpConfigurations = @($ipconfiguration) New-NetworkControllerNetworkInterface –ResourceID "MyVM_Ethernet1" –Properties $vmnicproperties –ConnectionUri $uri
ネットワーク コントローラーからネットワーク インターフェイスの InstanceId を取得します。
$nic = Get-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
Hyper-V VM ネットワーク アダプター ポートでインターフェイス ID を設定します。
注意
これらのコマンドは、VM がインストールされている Hyper-V ホストで実行する必要があります。
#Do not change the hardcoded IDs in this section, because they are fixed values and must not change. $FeatureId = "9940cd46-8b06-43bb-b9d5-93d50381fd56" $vmNics = Get-VMNetworkAdapter -VMName "MyVM" $CurrentFeature = Get-VMSwitchExtensionPortFeature -FeatureId $FeatureId -VMNetworkAdapter $vmNics if ($CurrentFeature -eq $null) { $Feature = Get-VMSystemSwitchExtensionPortFeature -FeatureId $FeatureId $Feature.SettingData.ProfileId = "{$($nic.InstanceId)}" $Feature.SettingData.NetCfgInstanceId = "{56785678-a0e5-4a26-bc9b-c0cba27311a3}" $Feature.SettingData.CdnLabelString = "TestCdn" $Feature.SettingData.CdnLabelId = 1111 $Feature.SettingData.ProfileName = "Testprofile" $Feature.SettingData.VendorId = "{1FA41B39-B444-4E43-B35A-E1F7985FD548}" $Feature.SettingData.VendorName = "NetworkController" $Feature.SettingData.ProfileData = 1 Add-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $Feature -VMNetworkAdapter $vmNics } else { $CurrentFeature.SettingData.ProfileId = "{$($nic.InstanceId)}" $CurrentFeature.SettingData.ProfileData = 1 Set-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $CurrentFeature -VMNetworkAdapter $vmNics }
VM を起動します。
Get-VM -Name "MyVM" | Start-VM
VM の作成、テナント仮想ネットワークへの接続、起動が正常に完了し、テナント ワークロードを処理できるようになりました。
NetworkControllerRESTWrappers を使用して VM を作成し、VLAN に接続する
VM を作成し、静的 MAC アドレスを VM に割り当てます。
New-VM -Generation 2 -Name "MyVM" -Path "C:\VMs\MyVM" -MemoryStartupBytes 4GB -VHDPath "C:\VMs\MyVM\Virtual Hard Disks\WindowsServer2016.vhdx" -SwitchName "SDNvSwitch" Set-VM -Name "MyVM" -ProcessorCount 4 Set-VMNetworkAdapter -VMName "MyVM" -StaticMacAddress "00-11-22-33-44-55"
VM ネットワーク アダプターで VLAN ID を設定します。
Set-VMNetworkAdapterIsolation –VMName "MyVM" -AllowUntaggedTraffic $true -IsolationMode VLAN -DefaultIsolationId 123
論理ネットワーク サブネットを取得し、ネットワーク インターフェイスを作成します。
$logicalnet = Get-NetworkControllerLogicalNetwork -ConnectionUri $uri -ResourceId "00000000-2222-1111-9999-000000000002" $vmnicproperties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceProperties $vmnicproperties.PrivateMacAddress = "00-1D-C8-B7-01-02" $vmnicproperties.PrivateMacAllocationMethod = "Static" $vmnicproperties.IsPrimary = $true $vmnicproperties.DnsSettings = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceDnsSettings $vmnicproperties.DnsSettings.DnsServers = $logicalnet.Properties.Subnets[0].DNSServers $ipconfiguration = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration $ipconfiguration.resourceid = "MyVM_Ip1" $ipconfiguration.properties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties $ipconfiguration.properties.PrivateIPAddress = "10.127.132.177" $ipconfiguration.properties.PrivateIPAllocationMethod = "Static" $ipconfiguration.properties.Subnet = New-Object Microsoft.Windows.NetworkController.Subnet $ipconfiguration.properties.subnet.ResourceRef = $logicalnet.Properties.Subnets[0].ResourceRef $vmnicproperties.IpConfigurations = @($ipconfiguration) $vnic = New-NetworkControllerNetworkInterface –ResourceID "MyVM_Ethernet1" –Properties $vmnicproperties –ConnectionUri $uri $vnic.InstanceId
Hyper-V ポートで InstanceId を設定します。
#The hardcoded Ids in this section are fixed values and must not change. $FeatureId = "9940cd46-8b06-43bb-b9d5-93d50381fd56" $vmNics = Get-VMNetworkAdapter -VMName "MyVM" $CurrentFeature = Get-VMSwitchExtensionPortFeature -FeatureId $FeatureId -VMNetworkAdapter $vmNics if ($CurrentFeature -eq $null) { $Feature = Get-VMSystemSwitchExtensionFeature -FeatureId $FeatureId $Feature.SettingData.ProfileId = "{$InstanceId}" $Feature.SettingData.NetCfgInstanceId = "{56785678-a0e5-4a26-bc9b-c0cba27311a3}" $Feature.SettingData.CdnLabelString = "TestCdn" $Feature.SettingData.CdnLabelId = 1111 $Feature.SettingData.ProfileName = "Testprofile" $Feature.SettingData.VendorId = "{1FA41B39-B444-4E43-B35A-E1F7985FD548}" $Feature.SettingData.VendorName = "NetworkController" $Feature.SettingData.ProfileData = 1 Add-VMSwitchExtensionFeature -VMSwitchExtensionFeature $Feature -VMNetworkAdapter $vmNics } else { $CurrentFeature.SettingData.ProfileId = "{$InstanceId}" $CurrentFeature.SettingData.ProfileData = 1 Set-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $CurrentFeature -VMNetworkAdapter $vmNics }
VM を起動します。
Get-VM -Name "MyVM" | Start-VM
VM の作成、VLAN への接続、起動が正常に完了し、テナント ワークロードを処理できるようになりました。