Ligar redes virtuais a partir de modelos de implementação diferentes com o PowerShell

Este artigo ajuda você a conectar VNets clássicas a VNets do Resource Manager para permitir que os recursos localizados nos modelos de implantação separados se comuniquem entre si. Os passos neste artigo utilizam o PowerShell.

Este artigo destina-se a clientes que já têm uma VNet criada usando o modelo de implantação clássico (legado) 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-to-VNet.

Arquitetura

Conectar uma VNet clássica a uma VNet do Resource Manager é semelhante a conectar uma VNet a um local de site local. Ambos os tipos de conetividade utilizam um gateway de VPN para fornecer um túnel seguro através de IPsec/IKE. Você pode criar uma conexão entre redes virtuais que estão em assinaturas diferentes e em regiões diferentes. Você também pode conectar redes virtuais que já tenham 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-to-VNet, consulte as Perguntas frequentes sobre VNet-to-VNet.

Para essa configuração, você cria uma conexão de gateway VPN em um túnel VPN IPsec/IKE entre as redes virtuais. Certifique-se de que nenhum dos intervalos de VNet se sobreponha uns aos outros ou a qualquer uma das redes locais às quais eles se conectam.

A tabela a seguir mostra um exemplo de como as redes virtuais de exemplo e os sites locais são definidos:

Rede Virtual Espaço de Endereços País/Região Conecta-se ao site da rede local
ClassicVNet (10.1.0.0/16) E.U.A. Oeste RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) E.U.A. Leste ClassicVNetSite (10.1.0.0/16)

Pré-requisitos

As etapas a seguir orientam você pelas configurações necessárias para configurar um gateway dinâmico ou baseado em rota para cada VNet e criar uma conexão VPN entre os gateways. Esta configuração não suporta gateways estáticos ou baseados em políticas.

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

Definições de exemplo

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

VNet clássico

Nome da VNet = ClassicVNet
Grupo de Recursos = Localização ClassicRG = Oeste dos EUA
Espaços de Endereço de Rede Virtual = 10.1.0.0/16
Sub-rede1 = 10.1.0.0/24
Sub-rede Gateway = 10.1.255.0/27
Nome da rede local = RMVNetSite
GatewayType = DynamicRouting

Resource Manager VNet

Nome da VNet = RMVNet
Grupo de Recursos = RMRG
Espaços de endereço IP da rede virtual = 192.168.0.0/16
Sub-rede1 = 192.168.1.0/24
Sub-rede Gateway = 192.168.255.0/27
Localização = Leste dos EUA
Nome 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ê configura sua VNet clássica já existente. Se sua rede virtual já tiver um gateway, verifique se o gateway é baseado em rota e prossiga para a próxima seção. Se o gateway não for baseado em rota, exclua-o antes de avançar com as próximas etapas. Você terá a oportunidade de criar um novo gateway mais tarde.

1. Faça o download do seu 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 entrada para sua Conta do Azure. Depois de iniciar sessão, transfere as definições da sua conta para que estejam disponíveis para o Azure PowerShell. Os cmdlets clássicos do Azure PowerShell de Gerenciamento de Serviços (SM) são usados nesta seção.

    Add-AzureAccount
    

    Obtenha sua assinatura do Azure.

    Get-AzureSubscription
    

    Se tiver mais do que uma subscrição, selecione a subscrição que pretende utilizar.

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

  3. Exporte seu arquivo de configuração de rede do Azure executando o seguinte comando. Você pode alterar o local do arquivo para exportar para um local diferente, se necessário.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. Abra o arquivo .xml que você baixou para editá-lo. Para obter um exemplo do arquivo de configuração de rede, consulte o esquema de configuração de rede.

  5. Anote o VirtualNetworkSite name= valor. 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. Verifique a sub-rede do gateway

No elemento VirtualNetworkSites, adicione uma sub-rede de gateway à sua rede virtual, caso ainda não tenha sido criada. A sub-rede do gateway DEVE ser denominada "GatewaySubnet" ou o Azure não pode reconhecer e usá-la como uma sub-rede de gateway.

Importante

Não há suporte para NSGs (grupos de segurança de rede) na sub-rede do gateway. Associar um grupo de segurança de rede a essa sub-rede pode fazer com que seu gateway de rede virtual (gateways VPN e ExpressRoute) pare de funcionar conforme o esperado. Para obter mais informações sobre os grupos de segurança de rede, veja O que é um grupo de segurança de rede (NSG)?

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. Adicione o site da rede local

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

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

4. Associe a VNet ao site da rede local

Nesta seção, especificamos o site de rede local ao qual você deseja conectar a rede virtual. Nesse caso, é a VNet do Resource Manager que você mencionou anteriormente. Certifique-se de que os nomes correspondem. Esta etapa não cria um gateway. Ele especifica a rede local à qual o gateway se conectará.

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

5. Salve o arquivo e faça o upload

Salve o arquivo e importe-o para o Azure executando o seguinte comando. Certifique-se de alterar o caminho do arquivo conforme necessário para seu ambiente.

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

Você verá um resultado semelhante mostrando que a importação foi bem-sucedida.

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

6. Criar o gateway

Antes de executar este exemplo, consulte o arquivo de configuração de rede que você baixou para obter os nomes exatos que o Azure espera ver. O arquivo de configuração de rede contém os valores para 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 VNet clássica chamada 'VNet clássica' e a criou em um grupo de recursos chamado 'ClassicRG', o nome contido no arquivo de configuração de rede será convertido em 'Group ClassicRG Classic VNet'. Sempre use o nome contido no arquivo de configuração de rede quando estiver trabalhando com o PowerShell.Ao especificar o nome de uma VNet que contenha espaços, use aspas ao redor 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 RM VNet

Os pré-requisitos pressupõem que você já tenha criado uma VNet RM. Nesta etapa, você cria um gateway VPN para a rede virtual RM. Não inicie essas etapas até que você tenha recuperado o endereço IP público para o gateway da VNet clássica.

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

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

    Connect-AzAccount
    

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

    Get-AzSubscription
    

    Se tiver mais do que uma subscrição, especifique a subscrição que pretende utilizar.

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. Crie um gateway de rede local. Numa rede virtual, o gateway de rede local refere-se normalmente à sua localização no local. Nesse caso, o gateway de rede local refere-se à sua VNet clássica. Dê a ele um nome pelo qual o Azure possa se referir a ele e também especifique o prefixo do espaço de endereço. O Azure utiliza o prefixo do endereço IP que especificar para identificar o tráfego a enviar para a sua localização no local. Se você precisar ajustar as informações aqui mais tarde, antes de criar seu gateway, poderá modificar os valores e executar o exemplo novamente.

    -Name é o nome que você deseja atribuir para se referir ao gateway de rede local.
    -AddressPrefix é o Espaço de Endereço para sua 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 rede virtual do Resource Manager. Não é possível especificar o endereço IP que pretende utilizar. 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 que o endereço IP do gateway de rede virtual é alterado é quando o gateway é excluído e recriado. Ele não muda no redimensionamento, redefinição ou outras manutenções/atualizações internas do gateway.

    Nesta etapa, também definimos uma variável que é 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 existir nenhuma sub-rede de gateway, adicione uma. Verifique se a sub-rede do gateway é chamada 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 seguinte comando. Nesta etapa, também definimos uma variável a ser usada na próxima etapa.

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

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. Crie 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 utilizar. Utilize o exemplo seguinte para criar a configuração do gateway.

    Nesta etapa, os parâmetros -SubnetId e -PublicIpAddressId devem receber a propriedade ID da sub-rede e os objetos de endereço IP, respectivamente. Não é possível usar uma cadeia de caracteres simples. Essas variáveis são definidas na etapa para solicitar um IP público e na etapa para recuperar a 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 seguinte comando. O -VpnType deve ser RouteBased. Pode levar 45 minutos ou mais para o gateway ser 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 assim que o gateway VPN for criado. Você usá-lo quando você define as configurações de rede local para sua VNet 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 clássicas do site local da VNet

Nesta seção, você trabalha com a VNet clássica. Você substitui o endereço IP de espaço reservado que usou ao especificar as configurações do site local que serão usadas para se conectar ao gateway 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. Exporte o arquivo de configuração de rede.

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

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

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

Criar uma conexão entre os gateways

Criar 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 sua chave compartilhada. Antes de executar os cmdlets, consulte o arquivo de configuração de rede que você baixou para obter os nomes exatos que o Azure espera ver. Ao especificar o nome de uma VNet que contém espaços, use aspas simples ao redor do valor.

    No exemplo a seguir, -VNetName é o nome da VNet clássica e -LocalNetworkSiteName é o nome especificado para o site de 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. No exemplo, usamos 'abc123', mas você pode gerar e usar algo mais complexo. O importante é que o valor especificado aqui deve ser o mesmo valor especificado na próxima etapa ao criar sua conexão. O retorno deve mostrar Status: Bem-sucedido.

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

    Defina as variáveis.

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

    Crie a ligaçã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 suas ligações

VNet clássico para RM VNet

Você pode verificar se sua conexão foi bem-sucedida usando o cmdlet 'Get-AzureVNetConnection'. Este cmdlet deve ser executado localmente no seu computador.

  1. Utilize o seguinte exemplo de cmdlet, configurando os valores para corresponder aos seus. O nome da rede virtual deve estar 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. Quando o cmdlet terminar, veja os valores. No exemplo a seguir, o Estado de Conectividade é exibido como 'Conectado' e você pode ver os 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           :
    

RM VNet para VNet clássico

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

  1. Utilize o seguinte exemplo de cmdlet, configurando os valores para corresponder aos seus. Se lhe for pedido, selecione "A" para executar "Todos". No exemplo, '--name' refere-se ao nome da ligação que pretende testar.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. Quando o cmdlet terminar, veja os valores. No exemplo a seguir, o status da conexão aparece como 'Conectado' e você pode ver os bytes de entrada e saída.

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

Próximos passos

Para obter mais informações sobre conexões VNet-to-VNet, consulte as Perguntas frequentes sobre o gateway VPN.