Conectar redes virtuais de diferentes modelos de implantação usando o PowerShell

Este artigo ajuda-o a conectar as VNets clássicas às VNets do Gerenciador de Recursos para permitir que os recursos localizados nos modelos de implantação separados comuniquem-se entre si. As etapas deste artigo usam o PowerShell.

Este artigo destina-se aos clientes que já têm uma VNet criada usando o modelo de implantação clássico (herdado) e agora desejam conectar a VNet clássica à VNet anterior que foi criada usando o modelo de implantação mais recente. Se você ainda não tiver uma VNet herdada, use o artigo Criar uma conexão VNet a VNet.

Arquitetura

Conectar uma rede virtual clássica a outra rede virtual do Resource Manager é semelhante a conectar uma rede virtual a um site local. Os dois tipos de conectividade usam um gateway de VPN para fornecer um túnel seguro usando IPsec/IKE. Você pode criar uma conexão entre redes virtuais em assinaturas e regiões diferentes. Você também pode conectar VNets que já têm conexões com redes locais, desde que o gateway seja dinâmico ou baseado em rota. Para obter mais informações sobre conexões VNet a VNet, confira Perguntas frequentes sobre VNet a VNet.

Para essa configuração, você cria uma conexão de gateway de VPN por um túnel VPN IPsec/IKE entre as redes virtuais. Certifique-se de que os intervalos de VNet não se sobreponham, nem sobreponham nenhuma das redes locais às quais eles se conectam.

A seguinte tabela mostra um exemplo de como as VNets e os sites locais de exemplo são definidos:

Rede Virtual Espaço de endereço Região Conecta ao site de rede local
ClassicVNet (10.1.0.0/16) Oeste dos EUA RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) Leste dos EUA ClassicVNetSite (10.1.0.0/16)

Pré-requisitos

As etapas a seguir mostrarão as configurações necessárias para configurar um gateway dinâmico ou baseado em rota para cada Rede Virtual, e para criar uma conexão VPN entre os gateways. Essa configuração não dá suporte a gateways estáticos ou baseados em política.

Essas etapas pressupõem que você tenha uma VNet clássica herdada e uma VNet do Resource Manager já criada.

Configurações de exemplo

Você pode usar esses valores para compreender melhor os exemplos.

VNet Clássica

Nome da rede virtual = ClassicVNet
Grupo de Recursos = Local ClassicRG = Oeste dos EUA
Espaços de endereço da rede virtual = 10.1.0.0/16
Subnet1 = 10.1.0.0/24
GatewaySubnet = 10.1.255.0/27
Nome da rede local = RMVNetSite
GatewayType = DynamicRouting

VNet do Resource Manager

Nome da VNet = RMVNet
Grupo de recursos = RMRG
Espaços de Endereço do IP da Rede Virtual = 192.168.0.0/16
Subnet1 = 192.168.1.0/24
GatewaySubnet = 192.168.255.0/27
Local = Leste dos EUA
Nome do IP público do gateway = rmgwpip
Gateway de Rede Local = ClassicVNetSite
Nome do Gateway de Rede Virtual = RMGateway
Configuração de endereçamento IP do gateway = gwipconfig

Configurar a VNet clássica

Nesta seção, você configurará sua VNet clássica já existente. Se sua VNet já tiver um gateway, verifique se o gateway é baseado em rota e, em seguida, prossiga para a próxima seção. Se o gateway não for baseado em rota, exclua o gateway antes de avançar para as próximas etapas. Você terá a oportunidade de criar um gateway mais tarde.

1. Baixar o arquivo de configuração de rede

  1. Entre na sua conta do Azure no console do PowerShell com direitos elevados. O cmdlet a seguir solicita as credenciais de sua conta do Azure. Depois de entrar, ele baixa as configurações da conta para que elas estejam disponíveis no Azure PowerShell. Nesta seção, são usados os cmdlets clássicos do SM (Gerenciamento de Serviços) do Azure PowerShell.

    Add-AzureAccount
    

    Obtenha sua assinatura do Azure.

    Get-AzureSubscription
    

    Se você tiver mais de uma assinatura, selecione a assinatura que deseja usar.

    Select-AzureSubscription -SubscriptionName "Name of subscription"
    
  2. Criar um diretório no seu computador. Para este exemplo, criamos o AzureNet.

  3. Baixe o arquivo de configuração de rede do Azure executando o comando a seguir. Você pode alterar o local do arquivo a ser exportado para um local diferente, se necessário.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. Abra o arquivo .xml baixado para editá-lo. Para obter um exemplo de arquivo de configuração de rede, confira o Esquema de configuração de rede.

  5. Anote o valor VirtualNetworkSite name=. Se você criou sua VNet clássica usando o portal, o nome segue um formato semelhante a "Group ClassicRG ClassicVNet", em vez de "ClassicVNet" no portal.

2. Verificar a sub-rede do gateway

No elemento VirtualNetworkSites, adicione uma sub-rede de gateway à VNet se já não existir uma. A sub-rede do gateway DEVE ser nomeada como "GatewaySubnet", ou o Azure poderá não a reconhecer e usá-la como uma sub-rede de gateway.

Importante

Ao trabalhar com sub-redes de gateway, evite a associação de um grupo de segurança de rede (NSG) à sub-rede de gateway. A associação de um grupo de segurança de rede a essa sub-rede pode fazer com que seu Gateway de rede virtual (Gateways de VPN e ExpressRoute) pare de funcionar conforme o esperado. Para obter mais informações sobre grupos de segurança de rede, confira O que é um grupo de segurança de rede?.

Exemplo:

<VirtualNetworkSites>
  <VirtualNetworkSite name="ClassicVNet" Location="West US">
    <AddressSpace>
      <AddressPrefix>10.1.0.0/16</AddressPrefix>
    </AddressSpace>
    <Subnets>
      <Subnet name="Subnet1">
        <AddressPrefix>10.1.0.0/24</AddressPrefix>
      </Subnet>
      <Subnet name="GatewaySubnet">
        <AddressPrefix>10.1.255.0/27</AddressPrefix>
      </Subnet>
    </Subnets>
  </VirtualNetworkSite>
</VirtualNetworkSites>

3. Adicionar o site de rede local

O site de rede local que adicionar representará a rede virtual do RM ao qual você deseja se conectar. Adicione um elemento LocalNetworkSites ao arquivo, se ele ainda não existir. Nessa parte da configuração, o VPNGatewayAddress pode ser qualquer endereço IP público válido porque ainda não criamos o gateway para a rede virtual do Resource Manager. Depois de criar o gateway, substitua esse endereço IP de espaço reservado pelo endereço IP público correto que foi atribuído ao gateway do RM.

<LocalNetworkSites>
  <LocalNetworkSite name="RMVNetSite">
    <AddressSpace>
      <AddressPrefix>192.168.0.0/16</AddressPrefix>
    </AddressSpace>
    <VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
  </LocalNetworkSite>
</LocalNetworkSites>

4. Associar a VNet ao site de rede local

Nesta seção, podemos especificar o local de rede local ao qual você deseja conectar a rede virtual. Nesse caso, é a VNet do Resource Manager que foi mencionada anteriormente. Verifique se os nomes correspondem. Esta etapa não cria um gateway. Ela especifica a rede local a que o gateway será conectado.

<Gateway>
  <ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="RMVNetSite">
      <Connection type="IPsec" />
    </LocalNetworkSiteRef>
  </ConnectionsToLocalNetwork>
</Gateway>

5. Salvar o arquivo e carregar

Salve o arquivo e importe-o para o Azure executando o comando a seguir. Altere o caminho do arquivo conforme for necessário para seu ambiente.

Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml

Você verá um resultado semelhante, mostrando que a importação teve êxito.

OperationDescription        OperationId                      OperationStatus                                                
--------------------        -----------                      ---------------                                                
Set-AzureVNetConfig        e0ee6e66-9167-cfa7-a746-7casb9    Succeeded 

6. Criar o gateway

Antes de executar esse exemplo, consulte o arquivo de configuração de rede baixado para obter os nomes exatos que o Azure espera visualizar. O arquivo de configuração de rede contém os valores de suas redes virtuais clássicas. Quando uma VNet clássica é criada usando o portal, o nome da rede virtual é diferente no arquivo de configuração de rede. Por exemplo, se você usou o portal do Azure para criar uma rede virtual clássica denominada 'Rede virtual clássica' e a criou em um grupo de recursos denominado 'ClassicRG', o nome que está contido no arquivo de configuração de rede é convertido em 'Grupo ClassicRG Rede virtual clássica'. Sempre use o nome contido no arquivo de configuração de rede quando estiver trabalhando com o PowerShell.Quando você especificar o nome de uma VNet que contém espaços, use aspas em torno do valor.

Use o exemplo a seguir para criar um gateway de roteamento dinâmico:

New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting

Você pode verificar o status do gateway, usando o cmdlet Get-AzureVNetGateway.

Configurar o gateway de VNet do RM

Os pré-requisitos pressupõem que você já tenha criado umaVNet RM. Nesta etapa, você pode criar um gateway VPN para a VNet RM. Não comece as etapas a seguir até recuperar o endereço IP público do gateway da rede virtual clássica.

  1. Faça logon na sua conta do Azure no console do PowerShell. O cmdlet a seguir solicita as credenciais de sua conta do Azure. Depois de entrar, as configurações da conta são baixadas para que estejam disponíveis para o Azure PowerShell. Opcionalmente, você pode usar o recurso de "Experimente" para iniciar o Azure Cloud Shell no navegador.

    Se você usar o Azure Cloud Shell, ignore o seguinte cmdlet:

    Connect-AzAccount
    

    Para verificar que você está usando a assinatura correta, execute o seguinte cmdlet:

    Get-AzSubscription
    

    Se você tiver mais de uma assinatura, especifique a assinatura que deseja usar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. Criar um gateway de rede local. Em uma rede virtual, o gateway de rede local geralmente se refere ao seu local. Nesse caso, o gateway de rede local refere-se à rede virtual clássica. Dê um nome pelo qual o Azure pode fazer referência a ele e especifique também o prefixo de espaço de endereço. O Azure usa o prefixo de endereço IP que você especifica para identificar qual tráfego enviar a seu local. Se você precisar ajustar as informações aqui posteriormente, antes de criar o gateway, poderá modificar os valores e executar o exemplo novamente.

    -Name é o nome que você deseja atribuir ao se referir ao gateway de rede local.
    -AddressPrefix é o Espaço de Endereço para a VNet clássica.
    -GatewayIpAddress é o endereço IP público do gateway da VNet clássica. Certifique-se de alterar o seguinte texto de exemplo "n.n.n. n" para refletir o endereço IP correto.

    New-AzLocalNetworkGateway -Name ClassicVNetSite `
    -Location "West US" -AddressPrefix "10.1.0.0/16" `
    -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
    
  3. Solicite um endereço IP público a ser alocado ao gateway de rede virtual para a VNet do Resource Manager. Você não pode especificar o endereço IP que deseja usar. O endereço IP é alocado dinamicamente para o gateway de rede virtual. No entanto, isso não significa que o endereço IP muda. A única vez em que o endereço IP do gateway de rede virtual é alterado é quando o gateway é excluído e recriado. Isso não altera o redimensionamento, a redefinição ou outras manutenções/atualizações internas do gateway.

    Nesta etapa, também definimos uma variável usada em uma etapa posterior.

    $ipaddress = New-AzPublicIpAddress -Name rmgwpip `
    -ResourceGroupName RMRG -Location 'EastUS' `
    -AllocationMethod Dynamic
    
  4. Verifique se sua rede virtual tem uma sub-rede de gateway. Se não houver sub-rede de gateway, adicione uma. Verifique se a sub-rede de gateway se chama GatewaySubnet.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet
    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  5. Recupere a sub-rede usada para o gateway executando o comando a seguir. Nesta etapa, também definimos uma variável a ser usada na próxima etapa.

    -Name é o nome de sua VNet do Resource Manager.
    -ResourceGroupName é o grupo de recursos ao qual a VNet está associada. A sub-rede de gateway já deve existir para essa rede virtual e deve se chamar GatewaySubnet para funcionar corretamente.

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. Criar a configuração de endereçamento IP do gateway. A configuração do gateway define a sub-rede e o endereço IP público a serem usados. Use o exemplo a seguir para criar a configuração do gateway.

    Nessa etapa, os parâmetros -SubnetId e -PublicIpAddressId devem receber a propriedade ID da sub-rede e objetos de endereço IP, respectivamente. Você não pode usar uma cadeia de caracteres simples. Essas variáveis são definidas na etapa de solicitação de um IP público e na etapa de recuperação da sub-rede.

    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig `
    -Name gwipconfig -SubnetId $subnet.id `
    -PublicIpAddressId $ipaddress.id
    
  7. Crie o gateway de rede virtual do Resource Manager, executando o comando a seguir. O -VpnType deve ser RouteBased. Pode demorar 45 minutos ou mais para que o gateway seja criado.

    New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG `
    -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn `
    -IpConfigurations $gwipconfig `
    -EnableBgp $false -VpnType RouteBased
    
  8. Copie o endereço IP público depois que o gateway de VPN foi criado. Use-o quando você definir as configurações de rede local para sua Rede Virtual clássica. Você pode usar o cmdlet a seguir para recuperar o endereço IP público. O endereço IP público é listado no retorno como IpAddress.

    Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
    

Modificar as configurações de site local da VNet clássica

Nesta seção, você trabalhará com a VNet clássica. Você substitui o endereço IP de espaço reservado pelo usado ao especificar as configurações de site local que serão utilizadas para conectar com gateway da VNET do Gerenciador de Recursos. Como você está trabalhando com a VNet clássica, use o PowerShell instalado localmente em seu computador, não o Azure Cloud Shell TryIt.

  1. Exportar o arquivo de configuração de rede.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  2. Usando um editor de texto, modifique o valor de VPNGatewayAddress. Substitua o endereço IP de espaço reservado com o endereço IP público do gateway do Resource Manager e salve as alterações.

    <VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
    
  3. Importe o arquivo de configuração de rede modificada para o Azure.

    Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
    

Criar uma conexão entre os gateways

A criação de uma conexão entre os gateways requer o PowerShell. Talvez seja necessário adicionar sua Conta do Azure para usar a versão clássica dos cmdlets do PowerShell. Para fazer isso, use Add-AzureAccount.

  1. No console do PowerShell, defina a chave compartilhada. Antes de executar os cmdlets, consulte no arquivo de configuração de rede que você baixou os nomes exatos que o Azure espera ver. Ao especificar o nome de uma rede virtual que contenha espaços, use aspas simples ao redor do valor.

    No exemplo a seguir, -VNetName é o nome da VNet clássica e -LocalNetworkSiteName é o nome que você especificou para o site da rede local. Verifique os nomes de ambos no arquivo de configuração de rede que você baixou anteriormente.

    O -SharedKey é um valor que você gera e especifica. Neste exemplo, usamos ‘abc123’, mas você pode gerar e usar algo mais complexo. O importante é que o valor especificado aqui deve ser o mesmo que você especificará na próxima etapa, ao criar sua conexão. O retorno deve mostrar Status: êxito.

    Set-AzureVNetGatewayKey -VNetName ClassicVNet `
    -LocalNetworkSiteName RMVNetSite -SharedKey abc123
    
  2. Crie a conexão VPN executando os comandos a seguir:

    Defina as variáveis.

    $vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG
    $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
    

    Crie a conexão. Observe que o -ConnectionType é IPsec, não Vnet2Vnet.

    New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG `
    -Location "East US" -VirtualNetworkGateway1 `
    $vnet02gateway -LocalNetworkGateway2 `
    $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
    

Verificar as conexões

VNet clássica para VNet do RM

Você pode verificar se a conexão foi bem-sucedida usando o cmdlet "Get-AzureVNetConnection". Esse cmdlet deve ser executado localmente em seu computador.

  1. Use o seguinte exemplo de cmdlet, configurando os valores para coincidirem com os seus. O nome da rede virtual deve ficar entre aspas se contiver espaços. Use o nome da rede virtual, conforme encontrado no arquivo de configuração de rede.

    Get-AzureVNetConnection "ClassicVNet"
    
  2. Após o cmdlet ter sido concluído, exiba os valores. No exemplo a seguir, o Estado de Conectividade é mostrado como "Conectado" e você pode ver bytes de entrada e saída.

    ConnectivityState         : Connected
    EgressBytesTransferred    : 0
    IngressBytesTransferred   : 0
    LastConnectionEstablished : 4/25/2022 4:24:34 PM
    LastEventID               : 24401
    LastEventMessage          : The connectivity state for the local network site 'RMVNetSite' changed from Not Connected to Connected.
    LastEventTimeStamp        : 4/25/2022 4:24:34 PM
    LocalNetworkSiteName      : RMVNetSite
    OperationDescription      :
    OperationId               :
    OperationStatus           :
    

VNet do RM para VNet clássica

Você pode verificar se a conexão foi bem-sucedida usando o cmdlet 'Get-AzVirtualNetworkGatewayConnection', com ou sem '-Debug'.

  1. Use o seguinte exemplo de cmdlet, configurando os valores para coincidirem com os seus. Quando solicitado, selecione ‘A’ para executar ‘Todos’. No exemplo, "-Name" refere-se ao nome da conexão que você criou e deseja testar.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. Após o cmdlet ter sido concluído, exiba os valores. No exemplo a seguir, o status da conexão é mostrado como "Conectado" e você pode ver bytes de entrada e saída.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

Próximas etapas

Para obter mais informações sobre conexões VNet a VNet, confira Perguntas frequentes sobre o Gateway de VPN.