Создание виртуальной машины Windows, использующей несколько сетевых адаптеров, и управление еюCreate and manage a Windows virtual machine that has multiple NICs

Виртуальные машины (VM) в Azure могут иметь несколько виртуальных сетевых адаптеров (NIC).Virtual machines (VMs) in Azure can have multiple virtual network interface cards (NICs) attached to them. Распространенный сценарий состоит в том, чтобы иметь разные подсети для интерфейсных и внутренних подключений.A common scenario is to have different subnets for front-end and back-end connectivity. Вы можете связать несколько сетевых адаптеров на виртуальной машине с несколькими подсетями, но эти подсети должны находиться в одной и той же виртуальной сети (vNet).You can associate multiple NICs on a VM to multiple subnets, but those subnets must all reside in the same virtual network (vNet). В этой статье подробно описывается, как создать виртуальную машину с несколькими сетевыми адаптерами.This article details how to create a VM that has multiple NICs attached to it. Вы также узнаете, как добавить или удалить сетевые адаптеры на существующей виртуальной машине.You also learn how to add or remove NICs from an existing VM. Различные размеры виртуальных машин поддерживают разное число сетевых карт, так что выбирайте соответствующий размер виртуальной машины.Different VM sizes support a varying number of NICs, so size your VM accordingly.

предварительным требованиямPrerequisites

В следующих примерах замените имена параметров собственными значениями.In the following examples, replace example parameter names with your own values. Примеры имен параметров: myResourceGroup, myVnet и myVM.Example parameter names include myResourceGroup, myVnet, and myVM.

Создание виртуальной машины с несколькими сетевыми адаптерамиCreate a VM with multiple NICs

Сначала создайте группу ресурсов.First, create a resource group. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении EastUs:The following example creates a resource group named myResourceGroup in the EastUs location:

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

Создание виртуальных сетей и подсетейCreate virtual network and subnets

Общий сценарий для виртуальной сети с двумя или большим количеством подсетей.A common scenario is for a virtual network to have two or more subnets. Одна подсеть может предназначаться для интерфейсного трафика, а другая — для внутреннего.One subnet may be for front-end traffic, the other for back-end traffic. Чтобы подключиться к двум подсетям, вам необходимо будет использовать несколько сетевых адаптеров на виртуальной машине.To connect to both subnets, you then use multiple NICs on your VM.

  1. Определите две подсети виртуальной сети с помощью New-AzVirtualNetworkSubnetConfig.Define two virtual network subnets with New-AzVirtualNetworkSubnetConfig. В следующем примере определяются подсети для mySubnetFrontEnd и mySubnetBackEnd:The following example defines the subnets for mySubnetFrontEnd and mySubnetBackEnd:

    $mySubnetFrontEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetFrontEnd" `
        -AddressPrefix "192.168.1.0/24"
    $mySubnetBackEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetBackEnd" `
        -AddressPrefix "192.168.2.0/24"
    
  2. Создайте виртуальную сеть и подсети с помощью командлета New-AzVirtualNetwork.Create your virtual network and subnets with New-AzVirtualNetwork. В следующем примере создается виртуальная сеть с именем myVnet:The following example creates a virtual network named myVnet:

    $myVnet = New-AzVirtualNetwork -ResourceGroupName "myResourceGroup" `
        -Location "EastUs" `
        -Name "myVnet" `
        -AddressPrefix "192.168.0.0/16" `
        -Subnet $mySubnetFrontEnd,$mySubnetBackEnd
    

Создание нескольких сетевых картCreate multiple NICs

Создайте два сетевых адаптера с помощью командлета New-AzNetworkInterface.Create two NICs with New-AzNetworkInterface. Подключите один сетевой адаптер к интерфейсной подсети, а другой — к внутренней.Attach one NIC to the front-end subnet and one NIC to the back-end subnet. В следующем примере создаются два сетевых адаптера с именами myNic1 и myNic2:The following example creates NICs named myNic1 and myNic2:

$frontEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetFrontEnd'}
$myNic1 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic1" `
    -Location "EastUs" `
    -SubnetId $frontEnd.Id

$backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
$myNic2 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic2" `
    -Location "EastUs" `
    -SubnetId $backEnd.Id

Обычно также создается группа безопасности сети для фильтрации трафика для виртуальной машины и подсистема балансировки нагрузки для распределения трафика между несколькими виртуальными машинами.Typically you also create a network security group to filter network traffic to the VM and a load balancer to distribute traffic across multiple VMs.

Создание виртуальной машиныCreate the virtual machine

Теперь начните создание конфигурации виртуальной машины.Now start to build your VM configuration. Для каждого размера виртуальной машины существует ограничение на общее количество сетевых карт, которые можно в нее добавить.Each VM size has a limit for the total number of NICs that you can add to a VM. Дополнительные сведения см. в статье Размеры виртуальных машин Windows в Azure.For more information, see Windows VM sizes.

  1. Задайте переменной $cred учетные данные виртуальной машины, как показано ниже:Set your VM credentials to the $cred variable as follows:

    $cred = Get-Credential
    
  2. Определите виртуальную машину с помощью New-AzVMConfig.Define your VM with New-AzVMConfig. В следующем примере определяется виртуальная машина с именем myVM и используется размер виртуальной машины, поддерживающий более двух сетевых адаптеров (Standard_DS3_v2):The following example defines a VM named myVM and uses a VM size that supports more than two NICs (Standard_DS3_v2):

    $vmConfig = New-AzVMConfig -VMName "myVM" -VMSize "Standard_DS3_v2"
    
  3. Создайте оставшуюся часть конфигурации виртуальной машины с помощью Set-AzVMOperatingSystem и Set-AzVMSourceImage.Create the rest of your VM configuration with Set-AzVMOperatingSystem and Set-AzVMSourceImage. В следующем примере создается виртуальная машина Windows Server 2016:The following example creates a Windows Server 2016 VM:

    $vmConfig = Set-AzVMOperatingSystem -VM $vmConfig `
        -Windows `
        -ComputerName "myVM" `
        -Credential $cred `
        -ProvisionVMAgent `
        -EnableAutoUpdate
    $vmConfig = Set-AzVMSourceImage -VM $vmConfig `
        -PublisherName "MicrosoftWindowsServer" `
        -Offer "WindowsServer" `
        -Skus "2016-Datacenter" `
        -Version "latest"
    
  4. Подключите два созданных ранее сетевых адаптера с помощью Add-AzVMNetworkInterface:Attach the two NICs that you previously created with Add-AzVMNetworkInterface:

    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic1.Id -Primary
    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic2.Id
    
  5. Создайте виртуальную машину с помощью New-AzVM:Create your VM with New-AzVM:

    New-AzVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "EastUs"
    
  6. Добавьте в операционную систему маршруты для дополнительных сетевых адаптеров, выполнив инструкции из раздела Настройка гостевой ОС для нескольких сетевых карт.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Добавление сетевой карты в существующую виртуальную машинуAdd a NIC to an existing VM

Чтобы добавить виртуальный сетевой адаптер в имеющуюся виртуальную машину, освободите ее, добавьте виртуальный сетевой адаптер, а затем запустите виртуальную машину.To add a virtual NIC to an existing VM, you deallocate the VM, add the virtual NIC, then start the VM. Различные размеры виртуальных машин поддерживают разное число сетевых карт, так что выбирайте соответствующий размер виртуальной машины.Different VM sizes support a varying number of NICs, so size your VM accordingly. При необходимости вы можете изменить размер виртуальной машины.If needed, you can resize a VM.

  1. Освободите виртуальную машину с помощью командлета Stop-AzVm.Deallocate the VM with Stop-AzVM. В следующем примере освобождается виртуальная машина с именем myVM в группе ресурсов myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Получите существующую конфигурацию виртуальной машины с помощью командлета Get-AzVm.Get the existing configuration of the VM with Get-AzVm. В следующем примере возвращаются сведения для виртуальной машины с именем myVM в myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. В следующем примере создается виртуальный сетевой адаптер с помощью New-AzNetworkInterface с именем myNic3, подключенный к mySubnetBackEnd.The following example creates a virtual NIC with New-AzNetworkInterface named myNic3 that is attached to mySubnetBackEnd. Затем с помощью Add-AzVMNetworkInterface он подключается к виртуальной машине myVM в myResourceGroupThe virtual NIC is then attached to the VM named myVM in myResourceGroup with Add-AzVMNetworkInterface:

    # Get info for the back end subnet
    $myVnet = Get-AzVirtualNetwork -Name "myVnet" -ResourceGroupName "myResourceGroup"
    $backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
    
    # Create a virtual NIC
    $myNic3 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
        -Name "myNic3" `
        -Location "EastUs" `
        -SubnetId $backEnd.Id
    
    # Get the ID of the new virtual NIC and add to VM
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "MyNic3").Id
    Add-AzVMNetworkInterface -VM $vm -Id $nicId | Update-AzVm -ResourceGroupName "myResourceGroup"
    

    Главные виртуальные сетевые картыPrimary virtual NICs

    Один из сетевых адаптеров на виртуальной машине с несколькими сетевыми картами должен быть главным.One of the NICs on a multi-NIC VM needs to be primary. Если один из имеющихся виртуальных сетевых адаптеров на виртуальной машине уже используется в качестве главного, вы можете пропустить этот шаг.If one of the existing virtual NICs on the VM is already set as primary, you can skip this step. Чтобы перейти к следующему примеру, предполагается, что на виртуальной машине используются два виртуальных сетевых адаптера. Добавим первый сетевой адаптер ([0]) в качестве главного:The following example assumes that two virtual NICs are now present on a VM and you wish to add the first NIC ([0]) as the primary:

    # List existing NICs on the VM and find which one is primary
    $vm.NetworkProfile.NetworkInterfaces
    
    # Set NIC 0 to be primary
    $vm.NetworkProfile.NetworkInterfaces[0].Primary = $true
    $vm.NetworkProfile.NetworkInterfaces[1].Primary = $false
    
    # Update the VM state in Azure
    Update-AzVM -VM $vm -ResourceGroupName "myResourceGroup"
    
  4. Запустите виртуальную машину с помощью Start-AzVm.Start the VM with Start-AzVm:

    Start-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    
  5. Добавьте в операционную систему маршруты для дополнительных сетевых адаптеров, выполнив инструкции из раздела Настройка гостевой ОС для нескольких сетевых карт.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Удаление сетевой карты из существующей виртуальной машиныRemove a NIC from an existing VM

Чтобы удалить виртуальный сетевой адаптер с имеющейся виртуальной машины, освободите ее, удалите виртуальный сетевой адаптер, а затем запустите виртуальную машину.To remove a virtual NIC from an existing VM, you deallocate the VM, remove the virtual NIC, then start the VM.

  1. Освободите виртуальную машину с помощью командлета Stop-AzVm.Deallocate the VM with Stop-AzVM. В следующем примере освобождается виртуальная машина с именем myVM в группе ресурсов myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Получите существующую конфигурацию виртуальной машины с помощью командлета Get-AzVm.Get the existing configuration of the VM with Get-AzVm. В следующем примере возвращаются сведения для виртуальной машины с именем myVM в myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. С помощью Get-AzNetworkInterface получите сведения об удалении сетевого адаптера.Get information about the NIC remove with Get-AzNetworkInterface. В следующем примере возвращаются сведения о myNic3:The following example gets information about myNic3:

    # List existing NICs on the VM if you need to determine NIC name
    $vm.NetworkProfile.NetworkInterfaces
    
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "myNic3").Id   
    
  4. Удалите сетевой адаптер с помощью Remove-AzVMNetworkInterface, а затем обновите виртуальную машину с помощью Update-AzVm.Remove the NIC with Remove-AzVMNetworkInterface and then update the VM with Update-AzVm. В следующем примере удаляется сетевой адаптер myNic3, полученный $nicId на предыдущем шаге:The following example removes myNic3 as obtained by $nicId in the preceding step:

    Remove-AzVMNetworkInterface -VM $vm -NetworkInterfaceIDs $nicId | `
        Update-AzVm -ResourceGroupName "myResourceGroup"
    
  5. Запустите виртуальную машину с помощью Start-AzVm.Start the VM with Start-AzVm:

    Start-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    

Создание нескольких сетевых адаптеров с помощью шаблоновCreate multiple NICs with templates

Шаблоны Azure Resource Manager дают возможность создать несколько экземпляров ресурса во время развертывания, в том числе создать несколько сетевых адаптеров.Azure Resource Manager templates provide a way to create multiple instances of a resource during deployment, such as creating multiple NICs. В шаблонах Azure Resource Manager используются декларативные JSON-файлы для определения среды.Resource Manager templates use declarative JSON files to define your environment. Дополнительные сведения см. в статье Общие сведения о диспетчере ресурсов Azure.For more information, see overview of Azure Resource Manager. Чтобы указать число создаваемых экземпляров, вы можете использовать объект copy:You can use copy to specify the number of instances to create:

"copy": {
    "name": "multiplenics",
    "count": "[parameters('count')]"
}

Дополнительные сведения см. в статье Развертывание нескольких экземпляров ресурса или свойства в шаблонах Azure Resource Managerкопирования.For more information, see creating multiple instances by using copy.

Вы также можете использовать copyIndex(), чтобы добавить номер к имени ресурса.You can also use copyIndex() to append a number to a resource name. Затем вы можете создать сетевые адаптеры с именами myNic1, MyNic2 и т. д.You can then create myNic1, MyNic2 and so on. Ниже показан пример добавления значения индекса.The following code shows an example of appending the index value:

"name": "[concat('myNic', copyIndex())]", 

Вы можете ознакомиться с полным примером создания нескольких сетевых адаптеров с помощью шаблонов Resource Manager.You can read a complete example of creating multiple NICs by using Resource Manager templates.

Добавьте в операционную систему маршруты для дополнительных сетевых адаптеров, выполнив инструкции из раздела Настройка гостевой ОС для нескольких сетевых карт.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Настройка гостевой ОС для нескольких сетевых картConfigure guest OS for multiple NICs

Azure назначает шлюз по умолчанию для первого (основного) сетевого интерфейса, подключенного к виртуальной машине.Azure assigns a default gateway to the first (primary) network interface attached to the virtual machine. Azure не назначает шлюз по умолчанию для дополнительных (вторичных) сетевых интерфейсов, подключенных к виртуальной машине.Azure does not assign a default gateway to additional (secondary) network interfaces attached to a virtual machine. Таким образом, нельзя по умолчанию обмениваться данными с ресурсами, к которым подключен дополнительный сетевой интерфейс вне подсети.Therefore, you are unable to communicate with resources outside the subnet that a secondary network interface is in, by default. Дополнительные сетевые интерфейсы могут взаимодействовать с ресурсами за пределами их подсети, однако шаги для обеспечения взаимодействия различаются для разных операционных систем.Secondary network interfaces can, however, communicate with resources outside their subnet, though the steps to enable communication are different for different operating systems.

  1. В командной строке Windows выполните команду route print, которая выводит примерно следующие выходные данные для виртуальной машины с двумя подключенными сетевыми интерфейсами.From a Windows command prompt, run the route print command, which returns output similar to the following output for a virtual machine with two attached network interfaces:

    ===========================================================================
    Interface List
    3...00 0d 3a 10 92 ce ......Microsoft Hyper-V Network Adapter #3
    7...00 0d 3a 10 9b 2a ......Microsoft Hyper-V Network Adapter #4
    ===========================================================================
    

    В этом примере сетевой адаптер Hyper-V (Майкрософт) №4 (интерфейс 7) — это дополнительный сетевой интерфейс, которому не назначен шлюз по умолчанию.In this example, Microsoft Hyper-V Network Adapter #4 (interface 7) is the secondary network interface that doesn't have a default gateway assigned to it.

  2. В командной строке выполните команду ipconfig, чтобы узнать, какой IP-адрес назначен дополнительному сетевому интерфейсу.From a command prompt, run the ipconfig command to see which IP address is assigned to the secondary network interface. В этом примере для интерфейса 7 назначен адрес 192.168.2.4.In this example, 192.168.2.4 is assigned to interface 7. Для дополнительного сетевого интерфейса не возвращен адрес шлюза по умолчанию.No default gateway address is returned for the secondary network interface.

  3. Для маршрутизации всего трафика, предназначенного для адресов за пределами подсети дополнительного сетевого интерфейса, в подсеть шлюза выполните следующую команду.To route all traffic destined for addresses outside the subnet of the secondary network interface to the gateway for the subnet, run the following command:

    route add -p 0.0.0.0 MASK 0.0.0.0 192.168.2.1 METRIC 5015 IF 7
    

    Адрес шлюза для подсети — это первый IP-адрес (заканчивается на .1) в диапазоне адресов, определенных для подсети.The gateway address for the subnet is the first IP address (ending in .1) in the address range defined for the subnet. Если не нужно проводить маршрутизацию всего трафика вне пределов подсети, можно добавить отдельные маршруты в указанные места назначения.If you don't want to route all traffic outside the subnet, you could add individual routes to specific destinations, instead. Например, если требуется маршрутизация трафика только из дополнительного сетевого интерфейса в сеть 192.168.3.0, введите следующую команду:For example, if you only wanted to route traffic from the secondary network interface to the 192.168.3.0 network, you enter the command:

    route add -p 192.168.3.0 MASK 255.255.255.0 192.168.2.1 METRIC 5015 IF 7
    
  4. Для подтверждения успешной связи с ресурсом в сети 192.168.3.0 используйте, например,следующую команду, чтобы проверить связь по адресу 192.168.3.4 с помощью интерфейса 7 (192.168.2.4).To confirm successful communication with a resource on the 192.168.3.0 network, for example, enter the following command to ping 192.168.3.4 using interface 7 (192.168.2.4):

    ping 192.168.3.4 -S 192.168.2.4
    

    Может потребоваться открыть протокол ICMP через брандмауэр Windows устройства, на котором проводится проверка связи, с помощью следующей команды.You may need to open ICMP through the Windows firewall of the device you're pinging with the following command:

    netsh advfirewall firewall add rule name=Allow-ping protocol=icmpv4 dir=in action=allow
    
  5. Чтобы убедиться, что маршрут добавлен в таблицу маршрутизации, введите команду route print, которая возвращает выходные данные, аналогичные следующему тексту:To confirm the added route is in the route table, enter the route print command, which returns output similar to the following text:

    ===========================================================================
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.4     15
              0.0.0.0          0.0.0.0      192.168.2.1      192.168.2.4   5015
    

    Маршрут указанный в 192.168.1.1 в разделе Шлюз — это маршрут по умолчанию для основного сетевого интерфейса.The route listed with 192.168.1.1 under Gateway, is the route that is there by default for the primary network interface. Маршрут 192.168.2.1 в разделе Шлюз — это добавленный маршрут.The route with 192.168.2.1 under Gateway, is the route you added.

Дополнительная информацияNext steps

При создании виртуальной машины с несколькими сетевыми адаптерами ознакомьтесь со статьей Размеры виртуальных машин Windows в Azure.Review Windows VM sizes when you're trying to create a VM that has multiple NICs. Обратите внимание на максимальное число сетевых адаптеров, поддерживаемых каждым из размеров виртуальной машины.Pay attention to the maximum number of NICs that each VM size supports.