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.
Verifique se os intervalos de endereços das redes virtuais não se sobrepõem entre si ou se sobrepõem a qualquer um dos intervalos de 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 Gerenciador de Recursos 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ássicos). Ao instalar os cmdlets do Gerenciamento de Serviços, 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, veja How to install and configure Azure PowerShell (Como instalar e configurar o Azure PowerShell).
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
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"
Crie um diretório no seu computador. Para este exemplo, criamos o AzureNet.
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
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.
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.
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"
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
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
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
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)
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
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
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.
Exporte o arquivo de configuração de rede.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
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>
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.
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
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.
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"
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'.
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
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.