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.
Verifique se os intervalos de endereços das VNets não se sobrepõem, nem sobrepõem qualquer um dos intervalos para outras conexões às quais os gateways podem estar conectados.
Neste artigo, usamos o PowerShell. Instale os cmdlets mais recentes do PowerShell em seu computador para o Resource Manager e o Gerenciamento de Serviços.
Embora seja possível executar alguns dos comandos do PowerShell usando o ambiente do Azure Cloud Shell, você precisa instalar ambas as versões dos cmdlets para criar as conexões corretamente.
Cmdlets do PowerShell de Gerenciamento de Serviços (clássico). Ao instalar os cmdlets de Gerenciamento de Serviço, talvez seja necessário modificar a Política de execução para instalar a versão clássica do módulo do Azure.
Para obter mais informações, confira Como instalar e configurar o Azure PowerShell.
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
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"
Criar um diretório no seu computador. Para este exemplo, criamos o AzureNet.
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
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.
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
Não há suporte para NSGs (grupos de segurança de rede) na sub-rede do 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.
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"
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
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
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
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)
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
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
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.
Exportar o arquivo de configuração de rede.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
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>
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.
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
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.
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"
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'.
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
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.