Partilhar via


Usar dispositivos virtuais de rede em uma rede virtual

Neste tópico, você aprenderá a implantar soluções de virtualização de rede em redes virtuais de locatário. Você pode adicionar soluções de virtualização de rede a redes que executam funções de roteamento e espelhamento de porta definidas pelo usuário.

Tipos de soluções de virtualização de rede

Você pode usar um dos dois tipos de soluções de virtualização:

  1. Roteamento definido pelo usuário – substitui roteadores distribuídos na rede virtual pelos recursos de roteamento da solução de virtualização. Com o roteamento definido pelo usuário, a solução de virtualização é usada como um roteador entre as sub-redes virtuais na rede virtual.

  2. Espelhamento de porta – todo o tráfego de rede que está entrando ou saindo da porta monitorada é duplicado e enviado para uma solução de virtualização para análise.

Implantar uma solução de virtualização de rede

Para implantar uma solução de virtualização de rede, primeiro é preciso criar uma VM que contenha o dispositivo e, em seguida, conectar a VM às sub-redes da rede virtual apropriada. Para saber mais detalhes, confira Criar uma VM de locatário e conectar-se a uma rede virtual de locatário ou VLAN.

Alguns dispositivos requerem vários adaptadores de rede virtual. Normalmente, um adaptador de rede dedicado ao gerenciamento de dispositivos enquanto adaptadores adicionais processam o tráfego. Se o dispositivo exigir vários adaptadores de rede, você deverá criar cada adaptador de rede no Controlador de Rede. Você também deve atribuir uma ID de interface em cada host para cada um dos adaptadores adicionais que estiverem em sub-redes virtuais diferentes.

Após implantar a solução de virtualização de rede, você poderá usar o dispositivo para roteamento definido, espelhamento de portas ou ambos.

Exemplo: roteamento definido pelo usuário

Para a maioria dos ambientes, você só precisa das rotas do sistema já definidas pelo roteador distribuído da rede virtual. No entanto, talvez seja necessário criar uma tabela de roteamento e adicionar uma ou mais rotas em casos específicos, como:

  • Túnel à força para a Internet através de sua rede local.
  • Uso de dispositivos virtuais no ambiente do Azure.

Para esses cenários, você deve criar uma tabela de roteamento e adicionar rotas definidas pelo usuário à tabela. É possível ter várias tabelas de roteamento, sendo que a mesma tabela de rotas pode ser associada a uma ou mais sub-redes. Você só pode associar cada sub-rede a uma única tabela de roteamento. Todas as VMs em uma sub-rede usam a tabela de roteamento associada à sub-rede.

As sub-redes dependem de rotas de sistema até que uma tabela de rotas seja associada à sub-rede. Após a existência de uma associação, o roteamento será feito com base em LPM (correspondência de prefixo mais longo) entre as rotas definidas pelo usuário e as rotas de sistema. Se houver mais de uma rota com a mesma correspondência LPM, a rota definida pelo usuário será selecionada primeiro (antes da rota do sistema).

Procedimento:

  1. Crie as propriedades da tabela de rotas, que contém todas as rotas definidas pelo usuário.

    As rotas do sistema ainda se aplicam de acordo com as regras definidas acima.

     $routetableproperties = new-object Microsoft.Windows.NetworkController.RouteTableProperties
    
  2. Adicione uma rota às propriedades da tabela de roteamento.

    Qualquer rota destinada à sub-rede 12.0.0.0/8 é roteada para a solução de virtualização em 192.168.1.10. O dispositivo deve ter um adaptador de rede virtual anexado à rede virtual com esse IP atribuído a um adaptador de rede.

     $route = new-object Microsoft.Windows.NetworkController.Route
     $route.ResourceID = "0_0_0_0_0"
     $route.properties = new-object Microsoft.Windows.NetworkController.RouteProperties
     $route.properties.AddressPrefix = "0.0.0.0/0"
     $route.properties.nextHopType = "VirtualAppliance"
     $route.properties.nextHopIpAddress = "192.168.1.10"
     $routetableproperties.routes += $route
    

    Dica

    Se você quiser adicionar mais rotas, repita esta etapa para cada rota que deseja definir.

  3. Adicione a tabela de roteamento ao Controlador de Rede.

     $routetable = New-NetworkControllerRouteTable -ConnectionUri $uri -ResourceId "Route1" -Properties $routetableproperties
    
  4. Aplique a tabela de roteamento à sub-rede virtual.

    Quando você aplica a tabela de rotas à sub-rede virtual, a primeira sub-rede virtual na rede Tenant1_Vnet1 usa a tabela de rotas. Você pode atribuir a tabela de rotas a quantas sub-redes quiser na rede virtual.

     $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Tenant1_VNet1"
     $vnet.properties.subnets[0].properties.RouteTable = $routetable
     new-networkcontrollervirtualnetwork -connectionuri $uri -properties $vnet.properties -resourceId $vnet.resourceid
    

Assim que você aplica a tabela de roteamento à rede virtual, o tráfego é encaminhado para a solução de virtualização. Você deve configurar a tabela de roteamento na solução de virtualização para encaminhar o tráfego de maneira apropriada para o seu ambiente.

Exemplo: espelhamento de porta

Neste exemplo, você configura o tráfego para MyVM_Ethernet1 espelhar Appliance_Ethernet1. Presumimos que você tenha implantado duas VMs, uma como o dispositivo e outra como a VM a ser monitorada com espelhamento.

O dispositivo deve ter um segundo adaptador de rede para gerenciamento. Depois de habilitar o espelhamento como um destino em Appliance_Ethernet1, ele não receberá mais o tráfego destinado à interface IP configurada lá.

Procedimento:

  1. Obtenha a rede virtual na qual as VMs estão localizadas.

    $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Tenant1_VNet1"
    
  2. Obtenha os adaptadores de rede do Controlador de Rede para a origem e o destino do espelhamento.

    $dstNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "Appliance_Ethernet1"
    $srcNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  3. Crie um objeto serviceinsertionproperties para conter as regras de espelhamento de porta e o elemento que representa a interface de destino.

    $portmirror = [Microsoft.Windows.NetworkController.ServiceInsertionProperties]::new()
    $portMirror.Priority = 1
    
  4. Crie um objeto serviceinsertionrules para conter as regras que devem ser correspondidas para que o tráfego seja enviado ao dispositivo.

    As regras definidas abaixo correspondem a todo o tráfego, tanto de entrada quanto de saída, que representa um espelho tradicional. Você poderá ajustar essas regras se estiver interessado em espelhar uma porta específica ou origens/destinos específicos.

    $portmirror.ServiceInsertionRules = [Microsoft.Windows.NetworkController.ServiceInsertionRule[]]::new(1)
    
    $portmirror.ServiceInsertionRules[0] = [Microsoft.Windows.NetworkController.ServiceInsertionRule]::new()
    $portmirror.ServiceInsertionRules[0].ResourceId = "Rule1"
    $portmirror.ServiceInsertionRules[0].Properties = [Microsoft.Windows.NetworkController.ServiceInsertionRuleProperties]::new()
    
    $portmirror.ServiceInsertionRules[0].Properties.Description = "Port Mirror Rule"
    $portmirror.ServiceInsertionRules[0].Properties.Protocol = "All"
    $portmirror.ServiceInsertionRules[0].Properties.SourcePortRangeStart = "0"
    $portmirror.ServiceInsertionRules[0].Properties.SourcePortRangeEnd = "65535"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationPortRangeStart = "0"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationPortRangeEnd = "65535"
    $portmirror.ServiceInsertionRules[0].Properties.SourceSubnets = "*"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationSubnets = "*"
    
  5. Crie um objeto serviceinsertionelements para conter o adaptador de rede do dispositivo espelhado.

    $portmirror.ServiceInsertionElements = [Microsoft.Windows.NetworkController.ServiceInsertionElement[]]::new(1)
    
    $portmirror.ServiceInsertionElements[0] = [Microsoft.Windows.NetworkController.ServiceInsertionElement]::new()
    $portmirror.ServiceInsertionElements[0].ResourceId = "Element1"
    $portmirror.ServiceInsertionElements[0].Properties = [Microsoft.Windows.NetworkController.ServiceInsertionElementProperties]::new()
    
    $portmirror.ServiceInsertionElements[0].Properties.Description = "Port Mirror Element"
    $portmirror.ServiceInsertionElements[0].Properties.NetworkInterface = $dstNic
    $portmirror.ServiceInsertionElements[0].Properties.Order = 1
    
  6. Adicione o objeto da inserção de serviço no Controlador de Rede.

    Ao emitir esse comando, você interromperá todo o tráfego para o adaptador de rede do dispositivo especificado na etapa anterior.

    $portMirror = New-NetworkControllerServiceInsertion -ConnectionUri $uri -Properties $portmirror -ResourceId "MirrorAll"
    
  7. Atualize o adaptador de rede da origem a ser espelhada.

    $srcNic.Properties.IpConfigurations[0].Properties.ServiceInsertion = $portMirror
    $srcNic = New-NetworkControllerNetworkInterface -ConnectionUri $uri  -Properties $srcNic.Properties -ResourceId $srcNic.ResourceId
    

Após concluir essas etapas, a interface Appliance_Ethernet1 espelha o tráfego da interface MyVM_Ethernet1.